ReviewForest Public API v1.0.0
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Check out ReviewForest API reference documentation. You can try ReviewForest API if you are registered customer of ReviewForest GmbH.
In addition to response codes listed in section 'Responses', any API endpoint can return generic error
response in JSON format with status codes:
- 500 Internal Server Error
500 response status code means that the server encountered an unexpected condition that prevented it
from fulfilling the request.
Mentioned above responses always return an Error object of 2 fields: 'message' and 'key' (localized message key).
Base URLs:
Authentication
-
API Key (apiKey)
- Parameter Name: apikey, in: header.
-
API Key (queryApiKey)
- Parameter Name: apikey, in: query.
Account
Account API
Get the authenticated user
Code samples
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/me',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/me \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
GET https://api.reviewforest.org/v1/me HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/me
Returns user info associated with API key.
Example responses
200 Response
{
"firstName": "Test",
"lastName": "Account",
"lang": "en",
"email": "[email protected]",
"id": "UsUO9Pu8PrhVXQskLdkLHwaeYF02",
"displayName": null,
"role": "user",
"emailVerified": true,
"createdAt": "Mon, 13 Mar 2023 11:03:25 GMT",
"lastSignInTime": "Mon, 08 May 2023 08:42:33 GMT"
}
401 Response
{
"i18nKey": "string",
"message": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | None |
401 | Unauthorized | Unauthorized access. | Error |
Response Schema
Forests
Forest API
Get All Forests
Code samples
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/forests',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/forests \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
GET https://api.reviewforest.org/v1/forests HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/forests
Lists all available forests including brand forests.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
sortBy | query | string | false | Field to sort by, if not given ‘DESC createdAt’ will be used. |
order | query | string | false | Sort direction: asc, desc. |
pageSize | query | number | false | Items per page. |
page | query | number | false | Current page. |
Enumerated Values
Parameter | Value |
---|---|
sortBy | additionalTreeAmount |
sortBy | createdAt |
sortBy | name |
sortBy | score |
sortBy | reviewAmount |
sortBy | reviewTreeAmount |
sortBy | totalTreeAmount |
order | asc |
order | desc |
pageSize | 10 |
pageSize | 15 |
pageSize | 20 |
pageSize | 25 |
pageSize | 50 |
pageSize | 100 |
Example responses
200 Response
{
"query": {
"sortBy": "createdAt",
"order": "desc",
"pageSize": 10,
"page": 1,
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2"
},
"count": 1,
"data": [
{
"treeNumbers": {
"thisPeriod": 47,
"thisWeek": 47,
"thisMonth": 47,
"thisYear": 47,
"lastWeek": 0,
"lastMonth": 0,
"lastYear": 0
},
"name": "ReviewForest",
"type": "single",
"slug": "test-forest1",
"slugId": "388440",
"active": true,
"score": "4.9",
"reviewAmount": 23,
"plantingReviewLimit": -1,
"reviewTreeAmount": 46,
"additionalTreeAmount": 1,
"totalTreeAmount": 47,
"projectId": 2,
"platforms": [
"646223ed95d25a338950cf3d"
],
"platformsOrder": [
"google"
],
"pinnedPlatform": null,
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"createdAt": "2023-05-15T12:22:05.603Z",
"updatedAt": "2023-05-15T12:33:50.607Z",
"id": "646223ed95d25a338950cf3f"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | Forests |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Get Forest by ID
Code samples
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/forests/{forestId}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/forests/{forestId} \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
GET https://api.reviewforest.org/v1/forests/{forestId} HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/forests/{forestId}
Returns forest with provided ID.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
forestId | path | string | true | ID of a forest. |
Example responses
200 Response
{
"treeNumbers": {
"thisPeriod": 47,
"thisWeek": 47,
"thisMonth": 47,
"thisYear": 47,
"lastWeek": 0,
"lastMonth": 0,
"lastYear": 0
},
"name": "ReviewForest",
"type": "single",
"slug": "test-forest1",
"slugId": "388440",
"active": true,
"score": "4.9",
"reviewAmount": 23,
"plantingReviewLimit": -1,
"reviewTreeAmount": 46,
"additionalTreeAmount": 1,
"totalTreeAmount": 47,
"projectId": 2,
"platforms": [
{
"keys": {
"placeId": "ChIJORGqDh5RqEcRt_D7KvrJdFU"
},
"reviewNumbers": {
"total": 0,
"thisWeek": 0,
"thisMonth": 0,
"thisYear": 0
},
"_id": "646223ed95d25a338950cf3d",
"type": "google",
"queryId": "60743889936618115082e907",
"active": true,
"name": "ReviewForest",
"score": "4.9",
"reviewAmount": 23,
"plantingReviewOption": 0,
"reviewTreeAmount": 46,
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"createdAt": "2023-05-15T12:22:05.572Z",
"updatedAt": "2023-05-15T13:00:08.031Z",
"forest": "646223ed95d25a338950cf3f",
"isPlantingTrees": false,
"lastCrawlingTimestamp": -1,
"lastReviewDate": "1969-12-31T23:59:59.999Z",
"lastReportDate": "2023-05-15T13:00:05.729Z",
"id": "646223ed95d25a338950cf3d"
}
],
"platformsOrder": [
"google"
],
"pinnedPlatform": null,
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"createdAt": "2023-05-15T12:22:05.603Z",
"updatedAt": "2023-05-15T13:00:08.082Z",
"id": "646223ed95d25a338950cf3f"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | Forest |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Get All reviews of Forest
Code samples
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/forests/{forestId}/reviews',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/forests/{forestId}/reviews \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
GET https://api.reviewforest.org/v1/forests/{forestId}/reviews HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/forests/{forestId}/reviews
List all reviews crawled for the specified forest.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
forestId | path | string | true | ID of a forest. |
sortBy | query | string | false | Field to sort by, if not given ‘DESC createdAt’ will be used. |
order | query | string | false | Sort direction: asc, desc. |
pageSize | query | number | false | Items per page. |
page | query | number | false | Current page. |
Enumerated Values
Parameter | Value |
---|---|
sortBy | date |
sortBy | name |
order | asc |
order | desc |
pageSize | 10 |
pageSize | 15 |
pageSize | 20 |
pageSize | 25 |
pageSize | 50 |
pageSize | 100 |
Example responses
200 Response
{
"query": {
"sortBy": "date",
"order": "desc",
"pageSize": 10
},
"count": 46,
"data": [
{
"name": "Jana Berthold",
"date": "2023-03-27T10:08:41.705Z",
"score": 5,
"text": "Ich freue mich immer riesig, wenn ich von ReviewForest eine Rechnung bekomme, weil ich damit neue Rezensionen erhalten habe u.n.d. unseren CO2-Ausstoß aktiv angehe.Die einzige Rechnung mit Happiness-Faktor!Was mich berührt:Das Unternehmen schätzt seine Langzeitkundinnen (wie mich).Preise und Vertragsbedingungen ändern sich mit der Zeit bei allen Unternehmen. Normal.Doch so wie ich ReviewForest als junges Unternehmen mein Vertrauen entgegenbrachte und mitmachte, dankt es mir mit Preisstabilität.Dieses Erkenntlichzeigen nenne ich meinen Kundinnen immer als Positiv-Beispiel für tiefgehenden Kundensupport.Die Denke, die Haltung und das Auftreten gegenüber der eigenen Kundschaft sind großartig. Dabei habe ich noch nichts über das Angebot geschrieben.",
"platformType": "google",
"url": "https://qa-page.reviewforest.org/test-forest1?review=d4dcf46a51631e9d2a7cb480"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | Reviews |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Plant Additional Tree
Code samples
const inputBody = '{
"names": [
"string"
],
"occasion": "string",
"quantity": 1
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/forests/{forestId}/trees',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X POST https://api.reviewforest.org/v1/forests/{forestId}/trees \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
POST https://api.reviewforest.org/v1/forests/{forestId}/trees HTTP/1.1
Host: api.reviewforest.org
Content-Type: application/json
Accept: application/json
POST /v1/forests/{forestId}/trees
Plants extra tree(s). An empty submit data means 1 tree to be planted. Parameter ‘quantity’ takes the precedence on quantity of names.
Body parameter
{
"names": [
"string"
],
"occasion": "string",
"quantity": 1
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
forestId | path | string | true | ID of a forest. |
body | body | TreePlanting | true | A JSON object containing a tree planting data. |
Example responses
200 Response
[
{
"id": "6462320c95d25a338950fd2b",
"name": "Brad Pitt",
"occasion": "Company anniversary",
"date": "2023-05-15T13:22:21.000Z",
"plantingProject": "Eden Reforestation Projects",
"plantingProjectId": 2,
"type": "additionalTree",
"url": "https://qa-page.reviewforest.org/test-forest1?review=de200e0f-dc1f-4e30-8835-fd9d7fc56585",
"invoice": "96661BB1-0004"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | AdditionalTrees |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Get All trees of Forest
Code samples
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/forests/{forestId}/trees',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/forests/{forestId}/trees \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
GET https://api.reviewforest.org/v1/forests/{forestId}/trees HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/forests/{forestId}/trees
Lists planted trees in the specified forest.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
forestId | path | string | true | ID of a forest. |
sortBy | query | string | false | Field to sort by, if not given ‘DESC createdAt’ will be used. |
order | query | string | false | Sort direction: asc, desc. |
pageSize | query | number | false | Items per page. |
page | query | number | false | Current page. |
Enumerated Values
Parameter | Value |
---|---|
sortBy | date |
sortBy | name |
order | asc |
order | desc |
pageSize | 10 |
pageSize | 15 |
pageSize | 20 |
pageSize | 25 |
pageSize | 50 |
pageSize | 100 |
Example responses
200 Response
{
"query": {
"order": "desc",
"sortBy": "date",
"pageSize": 10,
"page": 1
},
"count": 47,
"data": [
{
"id": "646226ae95d25a338950d13d",
"name": "Brad Pitt",
"date": "2023-05-15T12:33:51.000Z",
"score": 5,
"text": "Ich freue mich immer riesig, wenn ich von ReviewForest eine Rechnung bekomme, weil ich damit neue Rezensionen erhalten habe u.n.d. unseren CO2-Ausstoß aktiv angehe.Die einzige Rechnung mit Happiness-Faktor!Was mich berührt:Das Unternehmen schätzt seine Langzeitkundinnen (wie mich).Preise und Vertragsbedingungen ändern sich mit der Zeit bei allen Unternehmen. Normal.Doch so wie ich ReviewForest als junges Unternehmen mein Vertrauen entgegenbrachte und mitmachte, dankt es mir mit Preisstabilität.Dieses Erkenntlichzeigen nenne ich meinen Kundinnen immer als Positiv-Beispiel für tiefgehenden Kundensupport.Die Denke, die Haltung und das Auftreten gegenüber der eigenen Kundschaft sind großartig. Dabei habe ich noch nichts über das Angebot geschrieben.",
"plantingProject": "Eden Reforestation Projects",
"plantingProjectId": 2,
"type": "review",
"url": "https://qa-page.reviewforest.org/test-forest1?review=f91a152b-69a6-4df9-b4d0-2e87e489cf52",
"invoice": "96661BB1-0003"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | Trees |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Update additional tree
Code samples
const inputBody = '{
"name": "John Doe",
"occasion": "Sales/new contract"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/forests/{forestId}/trees/{treeId}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X PATCH https://api.reviewforest.org/v1/forests/{forestId}/trees/{treeId} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
PATCH https://api.reviewforest.org/v1/forests/{forestId}/trees/{treeId} HTTP/1.1
Host: api.reviewforest.org
Content-Type: application/json
Accept: application/json
PATCH /v1/forests/{forestId}/trees/{treeId}
Updates planted tree information such as a tree name and/or a tree planting occasion.
Body parameter
{
"name": "John Doe",
"occasion": "Sales/new contract"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
forestId | path | string | true | ID of a forest. |
treeId | path | string | true | ID of a tree. |
body | body | TreePatch | true | A JSON object containing a tree name and/or occasion text. |
Example responses
200 Response
{
"id": "6462320c95d25a338950fd2b",
"name": "John Doe",
"date": "2023-05-15T13:22:21.000Z",
"plantingProject": "Eden Reforestation Projects",
"plantingProjectId": 2,
"type": "additionalTree",
"occasion": "Sales/new contract"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | UpdateAdditionalTree |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Invoices
Invoice API
Get all invoices
Code samples
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/invoices',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/invoices \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
GET https://api.reviewforest.org/v1/invoices HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/invoices
Lists all invoices.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
sortBy | query | string | false | Field to sort by, if not given ‘DESC createdAt’ will be used. |
order | query | string | false | Sort direction: asc, desc. |
pageSize | query | number | false | Items per page. |
page | query | number | false | Current page. |
Enumerated Values
Parameter | Value |
---|---|
sortBy | createdAt |
order | asc |
order | desc |
pageSize | 10 |
pageSize | 15 |
pageSize | 20 |
pageSize | 25 |
pageSize | 50 |
pageSize | 100 |
Example responses
200 Response
{
"query": {
"sortBy": "createdAt",
"order": "desc",
"pageSize": 10
},
"count": 4,
"data": [
{
"_id": "6462320e286dc6c408c3eabe",
"stripeInvoiceId": "in_1N81M0FuxSnemsR92NbTQcXl",
"createdAt": "2023-05-15T13:22:22.244Z",
"currency": "eur",
"invoiceNumber": "96661BB1-0004",
"invoicePdf": null,
"stripeCustomerId": "cus_Nto1hMyWcc4Byh",
"stripeSubscriptionId": null,
"updatedAt": "2023-05-15T13:22:23.370Z",
"customerEmail": "[email protected]",
"customerName": "Eugene",
"invoiceDescription": "The listed amount will be deducted automatically from your chosen payment method unless arranged otherwise.",
"created": 1684156940,
"total": 95,
"chargePaid": false,
"chargeStatus": null,
"periodStart": 1684153318,
"periodEnd": 1684326118,
"paidAt": null,
"priceDescription": "Manual Tree Planting - Eden Reforestation",
"quantity": 1,
"type": "one-time",
"unit_amount": 95,
"subtotal": 95,
"tax": 0,
"paidStatus": null,
"invoiceBreakdownPdf": "https://qa-api.reviewforest.org/customer/invoice-breakdown/2023/05/15/UbZ2nnx021M2X4RY0AfTtnDIGvh2/96661BB1-0004-detailed.pdf"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | Invoices |
401 | Unauthorized | Unauthorized access. | Error |
Smiirl
API for Smiirl Counter devices
Get info for Smiirl Counter
Code samples
const headers = {
'Accept':'application/json'
};
fetch('https://api.reviewforest.org/v1/smiirl/{slug}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/smiirl/{slug} \
-H 'Accept: application/json'
GET https://api.reviewforest.org/v1/smiirl/{slug} HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/smiirl/{slug}
Returns count of trees in format for Smiirl Counter devices.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
slug | path | string | true | Forest slug name: part of a URL which identifies a forest. |
Example responses
200 Response
{
"number": 48
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | Smiirl |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Widgets
Widget API
Create widget
Code samples
const inputBody = '{
"type": "string",
"sub_type": "string",
"data_id": "string",
"appearance": "string",
"ask_for_reviews": true,
"ask_for_reviews_type": 0,
"behaviour": "string",
"position": "string",
"hide_on_mobile": true,
"logo_of_review_platform": true,
"number_of_reviews": true,
"star_rating": true,
"verified_by_rf": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/widgets',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X POST https://api.reviewforest.org/v1/widgets \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
POST https://api.reviewforest.org/v1/widgets HTTP/1.1
Host: api.reviewforest.org
Content-Type: application/json
Accept: application/json
POST /v1/widgets
Adds new widget configuration.
Body parameter
{
"type": "string",
"sub_type": "string",
"data_id": "string",
"appearance": "string",
"ask_for_reviews": true,
"ask_for_reviews_type": 0,
"behaviour": "string",
"position": "string",
"hide_on_mobile": true,
"logo_of_review_platform": true,
"number_of_reviews": true,
"star_rating": true,
"verified_by_rf": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Widget | true | A JSON object containing a widget configuration settings. |
Example responses
201 Response
{
"uuid": "33c0319a-6f4e-4061-86d1-22de3ba3e566",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"type": "mini",
"sub_type": "tree-counter",
"data_type": "single-reviews",
"data_id": "646223ed95d25a338950cf3f",
"forestId": "646223ed95d25a338950cf3f",
"config": {
"appearance": "light",
"hide_on_mobile": false,
"verified_by_rf": true,
"font_size": "small"
},
"createdAt": "2023-05-15T16:28:36.504Z",
"updatedAt": "2023-05-15T16:28:36.504Z",
"id": "64625db42b50240c28b925ba"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Resource is created successfully. | CreatedWidget |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
403 | Forbidden | A client isn’t authorized to access the requested data. | Error |
Get all widgets
Code samples
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/widgets',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/widgets \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
GET https://api.reviewforest.org/v1/widgets HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/widgets
Lists configurations of all widgets specified as query parameter.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
sortBy | query | string | false | Field to sort by, if not given ‘DESC date’ will be used. |
order | query | string | false | Sort direction: asc, desc. |
pageSize | query | number | false | Items per page. |
page | query | number | false | Current page. |
Enumerated Values
Parameter | Value |
---|---|
sortBy | createdAt |
order | asc |
order | desc |
pageSize | 10 |
pageSize | 15 |
pageSize | 20 |
pageSize | 25 |
pageSize | 50 |
pageSize | 100 |
Example responses
200 Response
{
"query": {},
"count": 3,
"data": [
{
"uuid": "33c0319a-6f4e-4061-86d1-22de3ba3e566",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"type": "mini",
"sub_type": "tree-counter",
"data_type": "single-reviews",
"data_id": "646223ed95d25a338950cf3f",
"forestId": "646223ed95d25a338950cf3f",
"config": {
"appearance": "light",
"hide_on_mobile": true,
"verified_by_rf": true,
"font_size": "small",
"behaviour": "floating",
"position": "bottom-right",
"ask_for_reviews_type": 1,
"ask_for_reviews": true,
"logo_of_review_platform": true,
"number_of_reviews": true,
"number_of_trees_planted": true,
"star_rating": true
},
"createdAt": "2023-05-15T16:28:36.504Z",
"updatedAt": "2023-05-15T16:28:36.504Z",
"id": "64625db42b50240c28b925ba"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | WidgetLists |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
Update widget
Code samples
const inputBody = '{
"appearance": "light",
"behaviour": "floating",
"position": "bottom-left",
"ask_for_reviews_type": 1,
"ask_for_reviews": true,
"hide_on_mobile": true,
"logo_of_review_platform": true,
"number_of_reviews": true,
"number_of_trees_planted": true,
"verified_by_rf": true,
"star_rating": true,
"forest_content": "whole-page",
"text_version": "full",
"font_size": "medium"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/widgets/{uuid}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X PATCH https://api.reviewforest.org/v1/widgets/{uuid} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
PATCH https://api.reviewforest.org/v1/widgets/{uuid} HTTP/1.1
Host: api.reviewforest.org
Content-Type: application/json
Accept: application/json
PATCH /v1/widgets/{uuid}
Updates configuration of the specified widget.
Body parameter
{
"appearance": "light",
"behaviour": "floating",
"position": "bottom-left",
"ask_for_reviews_type": 1,
"ask_for_reviews": true,
"hide_on_mobile": true,
"logo_of_review_platform": true,
"number_of_reviews": true,
"number_of_trees_planted": true,
"verified_by_rf": true,
"star_rating": true,
"forest_content": "whole-page",
"text_version": "full",
"font_size": "medium"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
uuid | path | string | true | Unique identifier of widget configuration. |
body | body | WidgetConfig | true | A JSON object (or array of objects) containing a widget data. |
Example responses
204 Response
{
"uuid": "33c0319a-6f4e-4061-86d1-22de3ba3e566",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"type": "mini",
"sub_type": "tree-counter",
"data_type": "single-reviews",
"data_id": "646223ed95d25a338950cf3f",
"forestId": "646223ed95d25a338950cf3f",
"config": {
"appearance": "light",
"hide_on_mobile": false,
"verified_by_rf": true,
"font_size": "small"
},
"createdAt": "2023-05-15T16:28:36.504Z",
"updatedAt": "2023-05-15T16:28:36.504Z",
"id": "64625db42b50240c28b925ba"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Successful response. | CreatedWidget |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
403 | Forbidden | A client isn’t authorized to access the requested data. | Error |
404 | Not Found | The specified resource was not found. | Error |
Get widget by UUID
Code samples
const headers = {
'Accept':'application/json'
};
fetch('https://api.reviewforest.org/v1/widgets/{uuid}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/widgets/{uuid} \
-H 'Accept: application/json'
GET https://api.reviewforest.org/v1/widgets/{uuid} HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/widgets/{uuid}
Returns configuration settings for the specified widget.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
uuid | path | string | true | Widget ID. |
Example responses
200 Response
{
"count": 1,
"data": [
{
"uuid": "33c0319a-6f4e-4061-86d1-22de3ba3e566",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"type": "mini",
"sub_type": "tree-counter",
"data_type": "single-reviews",
"forestId": "string",
"config": {
"appearance": "light",
"hide_on_mobile": true,
"verified_by_rf": true,
"font_size": "small"
},
"id": "string",
"status": 1,
"subscription": {
"plantingReviewLimit": 0,
"status": "TRIALING",
"plan": "pro"
},
"data": {
"totalTreeAmount": 0,
"reviewTreeAmount": 0,
"additionalTreeAmount": 0,
"slug": "string",
"name": "string",
"active": true,
"platforms": [
{
"keys": {
"placeId": "string"
},
"name": "string",
"type": "google"
}
],
"score": "4.9",
"reviewAmount": 23,
"platformsOrder": [
"google"
]
},
"name": "ReviewForest"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | WidgetByUuid |
404 | Not Found | The specified resource was not found. | Error |
Get reviews of widget
Code samples
const headers = {
'Accept':'application/json'
};
fetch('https://api.reviewforest.org/v1/widgets/{uuid}/reviews',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/widgets/{uuid}/reviews \
-H 'Accept: application/json'
GET https://api.reviewforest.org/v1/widgets/{uuid}/reviews HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/widgets/{uuid}/reviews
Lists reviews for the specified widget.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
uuid | path | string | true | Widget ID. |
sortBy | query | string | false | Field to sort by, if not given ‘DESC date’ will be used. |
order | query | string | false | Sort direction: asc, desc. |
pageSize | query | number | false | Items per page. |
page | query | number | false | Current page. |
undefined | query | undefined | false | none |
Enumerated Values
Parameter | Value |
---|---|
sortBy | date |
sortBy | name |
order | asc |
order | desc |
pageSize | 10 |
pageSize | 15 |
pageSize | 20 |
pageSize | 25 |
pageSize | 50 |
pageSize | 100 |
Example responses
200 Response
{
"query": {
"sortBy": "date",
"order": "desc",
"pageSize": 10
},
"count": 46,
"data": [
{
"name": "Jana Berthold",
"date": "2023-03-27T10:08:41.705Z",
"score": 5,
"text": "Ich freue mich immer riesig, wenn ich von ReviewForest eine Rechnung bekomme, weil ich damit neue Rezensionen erhalten habe u.n.d. unseren CO2-Ausstoß aktiv angehe.Die einzige Rechnung mit Happiness-Faktor!Was mich berührt:Das Unternehmen schätzt seine Langzeitkundinnen (wie mich).Preise und Vertragsbedingungen ändern sich mit der Zeit bei allen Unternehmen. Normal.Doch so wie ich ReviewForest als junges Unternehmen mein Vertrauen entgegenbrachte und mitmachte, dankt es mir mit Preisstabilität.Dieses Erkenntlichzeigen nenne ich meinen Kundinnen immer als Positiv-Beispiel für tiefgehenden Kundensupport.Die Denke, die Haltung und das Auftreten gegenüber der eigenen Kundschaft sind großartig. Dabei habe ich noch nichts über das Angebot geschrieben.",
"platformType": "google",
"url": "https://qa-page.reviewforest.org/test-forest1?review=d4dcf46a51631e9d2a7cb480"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | Reviews |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
404 | Not Found | The specified resource was not found. | Error |
Invitations
Get email invitations
Code samples
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/invitations/email?forestId=string',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/invitations/email?forestId=string \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
GET https://api.reviewforest.org/v1/invitations/email?forestId=string HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/invitations/email
Lists all invitations sent via E-Mail.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
forestId | query | string | true | ID of a forest. |
sortBy | query | string | false | Field to sort by, if not given ‘DESC createdAt’ will be used. |
order | query | string | false | Sort direction: asc, desc. |
pageSize | query | number | false | Items per page. |
page | query | number | false | Current page. |
Enumerated Values
Parameter | Value |
---|---|
sortBy | createdAt |
sortBy | recipientName |
sortBy | status |
order | asc |
order | desc |
pageSize | 10 |
pageSize | 15 |
pageSize | 20 |
pageSize | 25 |
pageSize | 50 |
pageSize | 100 |
Example responses
200 Response
{
"query": {
"forestId": "646223ed95d25a338950cf3f",
"sortBy": "createdAt",
"order": "desc",
"pageSize": 10,
"page": 1
},
"count": 1,
"data": [
{
"_id": "646237ff95d25a338950fe65",
"sgId": "3f67c92a-1b86-4aa6-b9bd-b8e0e25232ee",
"type": "invitation",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"forestId": "646223ed95d25a338950cf3f",
"senderName": "ReviewForest",
"senderEmail": "[email protected]",
"recipientName": "Eugene",
"recipientNumber": "[email protected]",
"status": "sending",
"templateType": "formal",
"language": "en",
"subject": "Sample subject",
"createdAt": "2023-05-15T13:47:43.849Z",
"updatedAt": "2023-05-15T13:47:43.849Z",
"id": "646237ff95d25a338950fe65"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | GetEmailInvitations |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Create email invitations
Code samples
const inputBody = '{
"forestId": "string",
"recipients": [
{
"email": "string",
"name": "string"
}
],
"subject": "string",
"language": "en",
"templateType": "formal",
"sendAt": "2023-01-01T10:00:00Z"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/invitations/email',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X POST https://api.reviewforest.org/v1/invitations/email \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
POST https://api.reviewforest.org/v1/invitations/email HTTP/1.1
Host: api.reviewforest.org
Content-Type: application/json
Accept: application/json
POST /v1/invitations/email
Sends invitation via E-mail.
Body parameter
{
"forestId": "string",
"recipients": [
{
"email": "string",
"name": "string"
}
],
"subject": "string",
"language": "en",
"templateType": "formal",
"sendAt": "2023-01-01T10:00:00Z"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | MessageEmail | true | A JSON object (or array of objects) containing an invitation data. |
Example responses
200 Response
[
{
"sgId": "5565a706-d082-41c3-881e-5acc0a6b6979",
"type": "invitation",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"forestId": "646223ed95d25a338950cf3f",
"senderName": "ReviewForest",
"senderEmail": "[email protected]",
"recipientName": "Eugene",
"recipientNumber": "[email protected]",
"status": "sending",
"templateType": "formal",
"language": "en",
"subject": "string",
"_id": "64623ae495d25a338950fee7",
"createdAt": "2023-05-15T14:00:04.088Z",
"updatedAt": "2023-05-15T14:00:04.088Z",
"id": "64623ae495d25a338950fee7",
"sendAt": "2023-05-15T14:00:04.088Z"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | EmailInvitations |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Get SMS invitations
Code samples
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/invitations/sms?forestId=string',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/invitations/sms?forestId=string \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
GET https://api.reviewforest.org/v1/invitations/sms?forestId=string HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/invitations/sms
Lists all invitations sent via SMS.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
forestId | query | string | true | ID of a forest. |
sortBy | query | string | false | Field to sort by, if not given ‘DESC createdAt’ will be used. |
order | query | string | false | Sort direction: asc, desc. |
pageSize | query | number | false | Items per page. |
page | query | number | false | Current page. |
Enumerated Values
Parameter | Value |
---|---|
sortBy | createdAt |
sortBy | recipientName |
sortBy | status |
order | asc |
order | desc |
pageSize | 10 |
pageSize | 15 |
pageSize | 20 |
pageSize | 25 |
pageSize | 50 |
pageSize | 100 |
Example responses
200 Response
{
"query": {
"forestId": "646223ed95d25a338950cf3f",
"sortBy": "createdAt",
"order": "desc",
"pageSize": 10,
"page": 1
},
"count": 1,
"data": [
{
"_id": "64623b7895d25a3389512997",
"type": "sms",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"forestId": "646223ed95d25a338950cf3f",
"sender": "+15005550006",
"recipientName": "John Doe",
"recipientNumber": "+490001122333",
"sid": "SM0aece3272170f2ecf9517e36ac793c50",
"status": "sending",
"text": "RFCompany wants to plant a tree for you.\nLeave a review now and we will plant a tree in your name: qa-page.reviewforest.org/test-forest1",
"plan": "pro",
"stripeSubscriptionItemId": "si_NtpeSnxaoifMra",
"timestamp": 1684159352,
"trial": true,
"createdAt": "2023-05-15T14:02:32.810Z",
"updatedAt": "2023-05-15T14:02:32.810Z",
"errorText": "INVALID_PHONE_NUMBER",
"errorCode": 21609,
"id": "64623b7895d25a3389512997"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | GetSmsInvitations |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Create SMS invitations
Code samples
const inputBody = '{
"forestId": "string",
"recipients": [
{
"number": "string",
"name": "string"
}
],
"sender": "string",
"companyName": "string",
"language": "en",
"templateType": "formal"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/invitations/sms',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X POST https://api.reviewforest.org/v1/invitations/sms \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
POST https://api.reviewforest.org/v1/invitations/sms HTTP/1.1
Host: api.reviewforest.org
Content-Type: application/json
Accept: application/json
POST /v1/invitations/sms
Sends invitation via SMS.
Body parameter
{
"forestId": "string",
"recipients": [
{
"number": "string",
"name": "string"
}
],
"sender": "string",
"companyName": "string",
"language": "en",
"templateType": "formal"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | MessageSMS | true | A JSON object (or array of objects) containing an invitation data. |
Example responses
200 Response
[
{
"type": "sms",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"forestId": "646223ed95d25a338950cf3f",
"sender": "+15005550006",
"recipientName": "John Doe",
"recipientNumber": "+490001122333",
"sid": "SM0aece3272170f2ecf9517e36ac793c50",
"status": "sending",
"text": "RFCompany wants to plant a tree for you.\nLeave a review now and we will plant a tree in your name: qa-page.reviewforest.org/test-forest1",
"plan": "pro",
"stripeSubscriptionItemId": "si_NtpeSnxaoifMra",
"timestamp": 1684159352,
"trial": true,
"_id": "64623b7895d25a3389512997",
"createdAt": "2023-05-15T14:02:32.810Z",
"updatedAt": "2023-05-15T14:02:32.810Z",
"errorText": "INVALID_PHONE_NUMBER",
"errorCode": 21609,
"id": "64623b7895d25a3389512997"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | SmsInvitations |
400 | Bad Request | 400 response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request data/parameters). | Error |
401 | Unauthorized | Unauthorized access. | Error |
404 | Not Found | The specified resource was not found. | Error |
Trees
Get All trees of User
Code samples
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://api.reviewforest.org/v1/trees',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
# You can also use wget
curl -X GET https://api.reviewforest.org/v1/trees \
-H 'Accept: application/json' \
-H 'apikey: API_KEY'
GET https://api.reviewforest.org/v1/trees HTTP/1.1
Host: api.reviewforest.org
Accept: application/json
GET /v1/trees
Lists trees from all platforms.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
sortBy | query | string | false | Field to sort by, if not given ‘DESC date’ will be used. |
order | query | string | false | Sort direction: asc, desc. |
pageSize | query | number | false | Items per page. |
page | query | number | false | Current page. |
Enumerated Values
Parameter | Value |
---|---|
sortBy | date |
sortBy | name |
order | asc |
order | desc |
pageSize | 10 |
pageSize | 15 |
pageSize | 20 |
pageSize | 25 |
pageSize | 50 |
pageSize | 100 |
Example responses
200 Response
{
"query": {
"sortBy": "date",
"order": "desc",
"pageSize": 10,
"page": 1
},
"count": 48,
"data": [
{
"id": "6462320c95d25a338950fd2b",
"name": "Brad Pitt",
"date": "2023-05-15T13:22:21.000Z",
"score": 5,
"text": "Ich freue mich immer riesig...",
"plantingProject": "Eden Reforestation Projects",
"plantingProjectId": 2,
"type": "review",
"forestId": "646223ed95d25a338950cf3f"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Successful response. | AllTrees |
401 | Unauthorized | Unauthorized access. | Error |
Schemas
Error
{
"i18nKey": "string",
"message": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
i18nKey | string | true | none | none |
message | string | true | none | none |
Forests
{
"query": {
"sortBy": "createdAt",
"order": "desc",
"pageSize": 10,
"page": 1,
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2"
},
"count": 1,
"data": [
{
"treeNumbers": {
"thisPeriod": 47,
"thisWeek": 47,
"thisMonth": 47,
"thisYear": 47,
"lastWeek": 0,
"lastMonth": 0,
"lastYear": 0
},
"name": "ReviewForest",
"type": "single",
"slug": "test-forest1",
"slugId": "388440",
"active": true,
"score": "4.9",
"reviewAmount": 23,
"plantingReviewLimit": -1,
"reviewTreeAmount": 46,
"additionalTreeAmount": 1,
"totalTreeAmount": 47,
"projectId": 2,
"platforms": [
"646223ed95d25a338950cf3d"
],
"platformsOrder": [
"google"
],
"pinnedPlatform": null,
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"createdAt": "2023-05-15T12:22:05.603Z",
"updatedAt": "2023-05-15T12:33:50.607Z",
"id": "646223ed95d25a338950cf3f"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
query | object | true | none | none |
» sortBy | string | true | none | none |
» order | string | true | none | none |
» pageSize | integer | true | none | none |
» page | integer | true | none | none |
» ownedBy | string | true | none | none |
count | integer | true | none | none |
data | [object] | true | none | none |
» treeNumbers | object | true | none | none |
»» thisPeriod | integer | true | none | none |
»» thisWeek | integer | true | none | none |
»» thisMonth | integer | true | none | none |
»» thisYear | integer | true | none | none |
»» lastWeek | integer | true | none | none |
»» lastMonth | integer | true | none | none |
»» lastYear | integer | true | none | none |
» name | string | true | none | none |
» type | string | true | none | none |
» slug | string | true | none | none |
» slugId | string | true | none | none |
» active | boolean | true | none | none |
» score | string | true | none | none |
» reviewAmount | integer | true | none | none |
» plantingReviewLimit | integer | true | none | none |
» reviewTreeAmount | integer | true | none | none |
» additionalTreeAmount | integer | true | none | none |
» totalTreeAmount | integer | true | none | none |
» projectId | integer | true | none | none |
» platforms | [string] | true | none | none |
» platformsOrder | [string] | true | none | none |
» pinnedPlatform | null | true | none | none |
» ownedBy | string | true | none | none |
» createdAt | string(date-time) | true | none | none |
» updatedAt | string(date-time) | true | none | none |
» id | string | true | none | none |
Forest
{
"treeNumbers": {
"thisPeriod": 47,
"thisWeek": 47,
"thisMonth": 47,
"thisYear": 47,
"lastWeek": 0,
"lastMonth": 0,
"lastYear": 0
},
"name": "ReviewForest",
"type": "single",
"slug": "test-forest1",
"slugId": "388440",
"active": true,
"score": "4.9",
"reviewAmount": 23,
"plantingReviewLimit": -1,
"reviewTreeAmount": 46,
"additionalTreeAmount": 1,
"totalTreeAmount": 47,
"projectId": 2,
"platforms": [
{
"keys": {
"placeId": "ChIJORGqDh5RqEcRt_D7KvrJdFU"
},
"reviewNumbers": {
"total": 0,
"thisWeek": 0,
"thisMonth": 0,
"thisYear": 0
},
"_id": "646223ed95d25a338950cf3d",
"type": "google",
"queryId": "60743889936618115082e907",
"active": true,
"name": "ReviewForest",
"score": "4.9",
"reviewAmount": 23,
"plantingReviewOption": 0,
"reviewTreeAmount": 46,
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"createdAt": "2023-05-15T12:22:05.572Z",
"updatedAt": "2023-05-15T13:00:08.031Z",
"forest": "646223ed95d25a338950cf3f",
"isPlantingTrees": false,
"lastCrawlingTimestamp": -1,
"lastReviewDate": "1969-12-31T23:59:59.999Z",
"lastReportDate": "2023-05-15T13:00:05.729Z",
"id": "646223ed95d25a338950cf3d"
}
],
"platformsOrder": [
"google"
],
"pinnedPlatform": null,
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"createdAt": "2023-05-15T12:22:05.603Z",
"updatedAt": "2023-05-15T13:00:08.082Z",
"id": "646223ed95d25a338950cf3f"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
treeNumbers | object | true | none | none |
» thisPeriod | integer | true | none | none |
» thisWeek | integer | true | none | none |
» thisMonth | integer | true | none | none |
» thisYear | integer | true | none | none |
» lastWeek | integer | true | none | none |
» lastMonth | integer | true | none | none |
» lastYear | integer | true | none | none |
name | string | true | none | none |
type | string | true | none | none |
slug | string | true | none | none |
slugId | string | true | none | none |
active | boolean | true | none | none |
score | string | true | none | none |
reviewAmount | integer | true | none | none |
plantingReviewLimit | integer | true | none | none |
reviewTreeAmount | integer | true | none | none |
additionalTreeAmount | integer | true | none | none |
totalTreeAmount | integer | true | none | none |
projectId | integer | true | none | none |
platforms | [object] | true | none | none |
» keys | object | true | none | none |
»» placeId | string | true | none | none |
» reviewNumbers | object | true | none | none |
»» total | integer | true | none | none |
»» thisWeek | integer | true | none | none |
»» thisMonth | integer | true | none | none |
»» thisYear | integer | true | none | none |
» _id | string | false | none | none |
» type | string | true | none | none |
» queryId | string | true | none | none |
» active | boolean | true | none | none |
» name | string | true | none | none |
» score | string | true | none | none |
» reviewAmount | integer | true | none | none |
» plantingReviewOption | integer | true | none | none |
» reviewTreeAmount | integer | true | none | none |
» ownedBy | string | true | none | none |
» createdAt | string(date-time) | true | none | none |
» updatedAt | string(date-time) | true | none | none |
» forest | string | true | none | none |
» isPlantingTrees | boolean | true | none | none |
» lastCrawlingTimestamp | integer | true | none | none |
» lastReviewDate | string(date-time) | true | none | none |
» lastReportDate | string(date-time) | true | none | none |
» id | string | true | none | none |
platformsOrder | [string] | true | none | none |
pinnedPlatform | string,null | false | none | none |
ownedBy | string | true | none | none |
createdAt | string(date-time) | true | none | none |
updatedAt | string(date-time) | true | none | none |
id | string | true | none | none |
Reviews
{
"query": {
"sortBy": "date",
"order": "desc",
"pageSize": 10
},
"count": 46,
"data": [
{
"name": "Jana Berthold",
"date": "2023-03-27T10:08:41.705Z",
"score": 5,
"text": "Ich freue mich immer riesig, wenn ich von ReviewForest eine Rechnung bekomme, weil ich damit neue Rezensionen erhalten habe u.n.d. unseren CO2-Ausstoß aktiv angehe.Die einzige Rechnung mit Happiness-Faktor!Was mich berührt:Das Unternehmen schätzt seine Langzeitkundinnen (wie mich).Preise und Vertragsbedingungen ändern sich mit der Zeit bei allen Unternehmen. Normal.Doch so wie ich ReviewForest als junges Unternehmen mein Vertrauen entgegenbrachte und mitmachte, dankt es mir mit Preisstabilität.Dieses Erkenntlichzeigen nenne ich meinen Kundinnen immer als Positiv-Beispiel für tiefgehenden Kundensupport.Die Denke, die Haltung und das Auftreten gegenüber der eigenen Kundschaft sind großartig. Dabei habe ich noch nichts über das Angebot geschrieben.",
"platformType": "google",
"url": "https://qa-page.reviewforest.org/test-forest1?review=d4dcf46a51631e9d2a7cb480"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
query | object | true | none | none |
» sortBy | string | true | none | none |
» order | string | true | none | none |
» pageSize | integer | true | none | none |
count | integer | true | none | none |
data | [object] | true | none | none |
» name | string | true | none | none |
» date | string(date-time) | true | none | none |
» score | integer | true | none | none |
» text | string,null | false | none | none |
» platformType | string | true | none | none |
» url | string(uri) | true | none | none |
Trees
{
"query": {
"order": "desc",
"sortBy": "date",
"pageSize": 10,
"page": 1
},
"count": 47,
"data": [
{
"id": "646226ae95d25a338950d13d",
"name": "Brad Pitt",
"date": "2023-05-15T12:33:51.000Z",
"score": 5,
"text": "Ich freue mich immer riesig, wenn ich von ReviewForest eine Rechnung bekomme, weil ich damit neue Rezensionen erhalten habe u.n.d. unseren CO2-Ausstoß aktiv angehe.Die einzige Rechnung mit Happiness-Faktor!Was mich berührt:Das Unternehmen schätzt seine Langzeitkundinnen (wie mich).Preise und Vertragsbedingungen ändern sich mit der Zeit bei allen Unternehmen. Normal.Doch so wie ich ReviewForest als junges Unternehmen mein Vertrauen entgegenbrachte und mitmachte, dankt es mir mit Preisstabilität.Dieses Erkenntlichzeigen nenne ich meinen Kundinnen immer als Positiv-Beispiel für tiefgehenden Kundensupport.Die Denke, die Haltung und das Auftreten gegenüber der eigenen Kundschaft sind großartig. Dabei habe ich noch nichts über das Angebot geschrieben.",
"plantingProject": "Eden Reforestation Projects",
"plantingProjectId": 2,
"type": "review",
"url": "https://qa-page.reviewforest.org/test-forest1?review=f91a152b-69a6-4df9-b4d0-2e87e489cf52",
"invoice": "96661BB1-0003"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
query | object | true | none | none |
» order | string | true | none | none |
» sortBy | string | true | none | none |
» pageSize | integer | true | none | none |
» page | integer | true | none | none |
count | integer | true | none | none |
data | [object] | true | none | none |
» id | string | true | none | none |
» name | string | true | none | none |
» date | string(date-time) | true | none | none |
» score | integer | true | none | none |
» text | string,null | false | none | none |
» plantingProject | string | true | none | none |
» plantingProjectId | number | false | none | none |
» type | string | true | none | none |
» url | string(uri) | true | none | none |
» invoice | string,null | false | none | none |
AdditionalTrees
[
{
"id": "6462320c95d25a338950fd2b",
"name": "Brad Pitt",
"occasion": "Company anniversary",
"date": "2023-05-15T13:22:21.000Z",
"plantingProject": "Eden Reforestation Projects",
"plantingProjectId": 2,
"type": "additionalTree",
"url": "https://qa-page.reviewforest.org/test-forest1?review=de200e0f-dc1f-4e30-8835-fd9d7fc56585",
"invoice": "96661BB1-0004"
}
]
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | true | none | none |
name | string | false | none | none |
occasion | string | false | none | none |
date | string(date-time) | true | none | none |
plantingProject | string | true | none | none |
plantingProjectId | number | false | none | none |
type | string | true | none | none |
url | string(uri) | true | none | none |
invoice | string | true | none | none |
UpdateAdditionalTree
{
"id": "6462320c95d25a338950fd2b",
"name": "John Doe",
"date": "2023-05-15T13:22:21.000Z",
"plantingProject": "Eden Reforestation Projects",
"plantingProjectId": 2,
"type": "additionalTree",
"occasion": "Sales/new contract"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | true | none | none |
name | string | true | none | none |
date | string(date-time) | true | none | none |
plantingProject | string | true | none | none |
plantingProjectId | number | false | none | none |
type | string | true | none | none |
occasion | string | true | none | none |
Invoices
{
"query": {
"sortBy": "createdAt",
"order": "desc",
"pageSize": 10
},
"count": 4,
"data": [
{
"_id": "6462320e286dc6c408c3eabe",
"stripeInvoiceId": "in_1N81M0FuxSnemsR92NbTQcXl",
"createdAt": "2023-05-15T13:22:22.244Z",
"currency": "eur",
"invoiceNumber": "96661BB1-0004",
"invoicePdf": null,
"stripeCustomerId": "cus_Nto1hMyWcc4Byh",
"stripeSubscriptionId": null,
"updatedAt": "2023-05-15T13:22:23.370Z",
"customerEmail": "[email protected]",
"customerName": "Eugene",
"invoiceDescription": "The listed amount will be deducted automatically from your chosen payment method unless arranged otherwise.",
"created": 1684156940,
"total": 95,
"chargePaid": false,
"chargeStatus": null,
"periodStart": 1684153318,
"periodEnd": 1684326118,
"paidAt": null,
"priceDescription": "Manual Tree Planting - Eden Reforestation",
"quantity": 1,
"type": "one-time",
"unit_amount": 95,
"subtotal": 95,
"tax": 0,
"paidStatus": null,
"invoiceBreakdownPdf": "https://qa-api.reviewforest.org/customer/invoice-breakdown/2023/05/15/UbZ2nnx021M2X4RY0AfTtnDIGvh2/96661BB1-0004-detailed.pdf"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
query | object | true | none | none |
» sortBy | string | true | none | none |
» order | string | true | none | none |
» pageSize | integer | true | none | none |
count | integer | true | none | none |
data | [object] | true | none | none |
» _id | string | true | none | none |
» stripeInvoiceId | string | true | none | none |
» createdAt | string(date-time) | true | none | none |
» currency | string | true | none | none |
» invoiceNumber | string | true | none | none |
» invoicePdf | string,null(uri) | true | none | none |
» stripeCustomerId | string | true | none | none |
» stripeSubscriptionId | string,null | true | none | none |
» updatedAt | string(date-time) | true | none | none |
» customerEmail | string | true | none | none |
» customerName | string | true | none | none |
» invoiceDescription | string | true | none | none |
» created | integer | true | none | none |
» total | integer | true | none | none |
» chargePaid | boolean | true | none | none |
» chargeStatus | string,null | true | none | none |
» periodStart | integer | true | none | none |
» periodEnd | integer | true | none | none |
» paidAt | integer,null | true | none | none |
» priceDescription | string | true | none | none |
» quantity | integer | true | none | none |
» type | string | true | none | none |
» unit_amount | integer | true | none | none |
» subtotal | integer | true | none | none |
» tax | integer | true | none | none |
» paidStatus | string,null | true | none | none |
» invoiceBreakdownPdf | string,null(uri) | true | none | none |
Smiirl
{
"number": 48
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
number | integer | true | none | none |
AllTrees
{
"query": {
"sortBy": "date",
"order": "desc",
"pageSize": 10,
"page": 1
},
"count": 48,
"data": [
{
"id": "6462320c95d25a338950fd2b",
"name": "Brad Pitt",
"date": "2023-05-15T13:22:21.000Z",
"score": 5,
"text": "Ich freue mich immer riesig...",
"plantingProject": "Eden Reforestation Projects",
"plantingProjectId": 2,
"type": "review",
"forestId": "646223ed95d25a338950cf3f"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
query | object | true | none | none |
» sortBy | string | true | none | none |
» order | string | true | none | none |
» pageSize | integer | true | none | none |
» page | integer | true | none | none |
count | integer | true | none | none |
data | [object] | true | none | none |
» id | string | true | none | none |
» name | string | true | none | none |
» date | string(date-time) | true | none | none |
» score | integer | false | none | none |
» text | string | false | none | none |
» plantingProject | string | true | none | none |
» plantingProjectId | number | false | none | none |
» type | string | true | none | none |
» forestId | string | true | none | none |
Enumerated Values
Property | Value |
---|---|
sortBy | date |
sortBy | name |
sortBy | score |
order | asc |
order | desc |
EmailInvitations
[
{
"sgId": "5565a706-d082-41c3-881e-5acc0a6b6979",
"type": "invitation",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"forestId": "646223ed95d25a338950cf3f",
"senderName": "ReviewForest",
"senderEmail": "[email protected]",
"recipientName": "Eugene",
"recipientNumber": "[email protected]",
"status": "sending",
"templateType": "formal",
"language": "en",
"subject": "string",
"_id": "64623ae495d25a338950fee7",
"createdAt": "2023-05-15T14:00:04.088Z",
"updatedAt": "2023-05-15T14:00:04.088Z",
"id": "64623ae495d25a338950fee7",
"sendAt": "2023-05-15T14:00:04.088Z"
}
]
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
sgId | string | true | none | none |
type | string | true | none | none |
ownedBy | string | true | none | none |
forestId | string | true | none | none |
senderName | string | true | none | none |
senderEmail | string(email) | true | none | none |
recipientName | string | true | none | none |
recipientNumber | string | true | none | none |
status | string | true | none | none |
templateType | string | true | none | none |
language | string | true | none | none |
subject | string | true | none | none |
_id | string | true | none | none |
createdAt | string(date-time) | true | none | none |
updatedAt | string(date-time) | true | none | none |
id | string | true | none | none |
sendAt | string(date-time) | false | none | Schedule emails for within the next three days |
GetEmailInvitations
{
"query": {
"forestId": "646223ed95d25a338950cf3f",
"sortBy": "createdAt",
"order": "desc",
"pageSize": 10,
"page": 1
},
"count": 1,
"data": [
{
"_id": "646237ff95d25a338950fe65",
"sgId": "3f67c92a-1b86-4aa6-b9bd-b8e0e25232ee",
"type": "invitation",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"forestId": "646223ed95d25a338950cf3f",
"senderName": "ReviewForest",
"senderEmail": "[email protected]",
"recipientName": "Eugene",
"recipientNumber": "[email protected]",
"status": "sending",
"templateType": "formal",
"language": "en",
"subject": "Sample subject",
"createdAt": "2023-05-15T13:47:43.849Z",
"updatedAt": "2023-05-15T13:47:43.849Z",
"id": "646237ff95d25a338950fe65"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
query | object | true | none | none |
» forestId | string | true | none | none |
» sortBy | string | true | none | none |
» order | string | true | none | none |
» pageSize | integer | true | none | none |
» page | integer | true | none | none |
count | integer | true | none | none |
data | [object] | true | none | none |
» _id | string | true | none | none |
» sgId | string | true | none | none |
» type | string | true | none | none |
» ownedBy | string | true | none | none |
» forestId | string | true | none | none |
» senderName | string | true | none | none |
» senderEmail | string(email) | true | none | none |
» recipientName | string | true | none | none |
» recipientNumber | string | true | none | none |
» status | string | true | none | none |
» templateType | string | true | none | none |
» language | string | true | none | none |
» subject | string | true | none | none |
» createdAt | string(date-time) | true | none | none |
» updatedAt | string(date-time) | true | none | none |
» id | string | true | none | none |
SmsInvitations
[
{
"type": "sms",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"forestId": "646223ed95d25a338950cf3f",
"sender": "+15005550006",
"recipientName": "John Doe",
"recipientNumber": "+490001122333",
"sid": "SM0aece3272170f2ecf9517e36ac793c50",
"status": "sending",
"text": "RFCompany wants to plant a tree for you.\nLeave a review now and we will plant a tree in your name: qa-page.reviewforest.org/test-forest1",
"plan": "pro",
"stripeSubscriptionItemId": "si_NtpeSnxaoifMra",
"timestamp": 1684159352,
"trial": true,
"_id": "64623b7895d25a3389512997",
"createdAt": "2023-05-15T14:02:32.810Z",
"updatedAt": "2023-05-15T14:02:32.810Z",
"errorText": "INVALID_PHONE_NUMBER",
"errorCode": 21609,
"id": "64623b7895d25a3389512997"
}
]
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
type | string | true | none | none |
ownedBy | string | true | none | none |
forestId | string | true | none | none |
sender | string | true | none | none |
recipientName | string | true | none | none |
recipientNumber | string | true | none | none |
sid | string | false | none | none |
status | string | true | none | none |
text | string | true | none | none |
plan | string | true | none | none |
stripeSubscriptionItemId | string | true | none | none |
timestamp | integer | true | none | none |
trial | boolean | false | none | none |
_id | string | true | none | none |
createdAt | string(date-time) | true | none | none |
updatedAt | string(date-time) | true | none | none |
errorText | string | false | none | none |
errorCode | number | false | none | none |
id | string | true | none | none |
GetSmsInvitations
{
"query": {
"forestId": "646223ed95d25a338950cf3f",
"sortBy": "createdAt",
"order": "desc",
"pageSize": 10,
"page": 1
},
"count": 1,
"data": [
{
"_id": "64623b7895d25a3389512997",
"type": "sms",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"forestId": "646223ed95d25a338950cf3f",
"sender": "+15005550006",
"recipientName": "John Doe",
"recipientNumber": "+490001122333",
"sid": "SM0aece3272170f2ecf9517e36ac793c50",
"status": "sending",
"text": "RFCompany wants to plant a tree for you.\nLeave a review now and we will plant a tree in your name: qa-page.reviewforest.org/test-forest1",
"plan": "pro",
"stripeSubscriptionItemId": "si_NtpeSnxaoifMra",
"timestamp": 1684159352,
"trial": true,
"createdAt": "2023-05-15T14:02:32.810Z",
"updatedAt": "2023-05-15T14:02:32.810Z",
"errorText": "INVALID_PHONE_NUMBER",
"errorCode": 21609,
"id": "64623b7895d25a3389512997"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
query | object | true | none | none |
» forestId | string | true | none | none |
» sortBy | string | true | none | none |
» order | string | true | none | none |
» pageSize | integer | true | none | none |
» page | integer | true | none | none |
count | integer | true | none | none |
data | [object] | true | none | none |
» _id | string | true | none | none |
» type | string | true | none | none |
» ownedBy | string | true | none | none |
» forestId | string | true | none | none |
» sender | string | true | none | none |
» recipientName | string | true | none | none |
» recipientNumber | string | true | none | none |
» sid | string | false | none | none |
» status | string | true | none | none |
» text | string | true | none | none |
» plan | string | true | none | none |
» stripeSubscriptionItemId | string | true | none | none |
» timestamp | integer | true | none | none |
» trial | boolean | false | none | none |
» createdAt | string(date-time) | true | none | none |
» updatedAt | string(date-time) | true | none | none |
» errorText | string | false | none | none |
» errorCode | number | false | none | none |
» id | string | true | none | none |
Widget
{
"type": "string",
"sub_type": "string",
"data_id": "string",
"appearance": "string",
"ask_for_reviews": true,
"ask_for_reviews_type": 0,
"behaviour": "string",
"position": "string",
"hide_on_mobile": true,
"logo_of_review_platform": true,
"number_of_reviews": true,
"star_rating": true,
"verified_by_rf": true
}
There are several types of widgets: Review score badge
, Tree Counter badge
, 2in1 badge
, Mini review score
, Mini tree counter
. Below you can see a description of the properties for each widget type.
Properties
oneOf
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | Review score badge widget |
» type | string | true | none | review-score |
» sub_type | string | true | none | badge |
» data_id | string | false | none | ID of forest |
» appearance | string | true | none | light or dark |
» ask_for_reviews | boolean | true | none | Show CTA button |
» ask_for_reviews_type | integer | false | none | Only if ask_for_reviews = true . Possible values: 1 :Link(s) to review platform(s),2 : Link to review forest |
» behaviour | string | true | none | floating or fixed-position |
» position | string | false | none | bottom-right or bottom-left |
» hide_on_mobile | boolean | true | none | none |
» logo_of_review_platform | boolean | true | none | Show logo of review platform(s) |
» number_of_reviews | boolean | true | none | Show number of reviews |
» star_rating | boolean | false | none | This allows to show the star rating of your website in Google search results. |
» verified_by_rf | boolean | true | none | Show Verification by ReviewForest |
xor
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | Tree counter badge widget |
» type | string | true | none | counter |
» sub_type | string | true | none | badge |
» data_id | string | false | none | ID of forest |
» appearance | string | true | none | light or dark |
» ask_for_reviews | boolean | true | none | Show CTA button |
» ask_for_reviews_type | integer | false | none | Only if ask_for_reviews = true . Possible values: 1 :Link(s) to review platform(s),2 : Link to review forest |
» behaviour | string | true | none | floating or fixed-position |
» position | string | false | none | bottom-right or bottom-left |
» hide_on_mobile | boolean | true | none | none |
» logo_of_review_platform | boolean | true | none | Show ReviewForest logo |
» star_rating | boolean | false | none | This allows to show the star rating of your website in Google search results. |
» verified_by_rf | boolean | true | none | Show Verification by ReviewForest |
xor
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | 2 in 1 badge widget |
» type | string | true | none | 2in1 |
» sub_type | string | true | none | badge |
» data_id | string | false | none | ID of forest |
» appearance | string | true | none | light or dark |
» ask_for_reviews | boolean | true | none | Show CTA button |
» ask_for_reviews_type | integer | false | none | Only if ask_for_reviews = true . Possible values: 1 :Link(s) to review platform(s),2 : Link to review forest |
» behaviour | string | true | none | floating or fixed-position |
» position | string | true | none | bottom-right or bottom-left |
» hide_on_mobile | boolean | true | none | none |
» logo_of_review_platform | boolean | true | none | Show logo of review platform(s) |
» number_of_reviews | boolean | true | none | Show number of reviews |
» star_rating | boolean | false | none | This allows to show the star rating of your website in Google search results. |
» verified_by_rf | boolean | true | none | Show Verification by ReviewForest |
xor
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | Mini review score widget |
» type | string | true | none | mini |
» sub_type | string | true | none | review-score |
» data_id | string | false | none | ID of forest |
» appearance | string | true | none | light or dark |
» font_size | string | true | none | small or medium |
» hide_on_mobile | boolean | true | none | none |
» logo_of_review_platform | boolean | true | none | Show logo of review platform(s) |
» number_of_reviews | boolean | true | none | Show number of reviews |
» star_rating | boolean | false | none | This allows to show the star rating of your website in Google search results. |
» text_version | string | true | none | short or full |
xor
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | Mini tree counter widget |
» type | string | true | none | mini |
» sub_type | string | true | none | tree-counter |
» data_id | string | false | none | ID of forest |
» appearance | string | true | none | light or dark |
» font_size | string | true | none | small or medium |
» hide_on_mobile | boolean | true | none | none |
» verified_by_rf | boolean | true | none | Show Verification by ReviewForest |
CreatedWidget
{
"uuid": "33c0319a-6f4e-4061-86d1-22de3ba3e566",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"type": "mini",
"sub_type": "tree-counter",
"data_type": "single-reviews",
"data_id": "646223ed95d25a338950cf3f",
"forestId": "646223ed95d25a338950cf3f",
"config": {
"appearance": "light",
"hide_on_mobile": false,
"verified_by_rf": true,
"font_size": "small"
},
"createdAt": "2023-05-15T16:28:36.504Z",
"updatedAt": "2023-05-15T16:28:36.504Z",
"id": "64625db42b50240c28b925ba"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
uuid | string(uuid) | true | none | none |
ownedBy | string | true | none | none |
type | string | true | none | none |
sub_type | string | true | none | none |
data_type | string | true | none | none |
data_id | string | true | none | none |
forestId | string | true | none | none |
config | object | true | none | none |
» appearance | string | true | none | none |
» hide_on_mobile | boolean | true | none | none |
» verified_by_rf | boolean | true | none | none |
» font_size | string | true | none | none |
createdAt | string(date-time) | true | none | none |
updatedAt | string(date-time) | true | none | none |
id | string | true | none | none |
Enumerated Values
Property | Value |
---|---|
type | mini |
sub_type | tree-counter |
data_type | single-reviews |
appearance | light |
appearance | dark |
font_size | small |
font_size | medium |
font_size | large |
WidgetLists
{
"query": {},
"count": 3,
"data": [
{
"uuid": "33c0319a-6f4e-4061-86d1-22de3ba3e566",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"type": "mini",
"sub_type": "tree-counter",
"data_type": "single-reviews",
"data_id": "646223ed95d25a338950cf3f",
"forestId": "646223ed95d25a338950cf3f",
"config": {
"appearance": "light",
"hide_on_mobile": true,
"verified_by_rf": true,
"font_size": "small",
"behaviour": "floating",
"position": "bottom-right",
"ask_for_reviews_type": 1,
"ask_for_reviews": true,
"logo_of_review_platform": true,
"number_of_reviews": true,
"number_of_trees_planted": true,
"star_rating": true
},
"createdAt": "2023-05-15T16:28:36.504Z",
"updatedAt": "2023-05-15T16:28:36.504Z",
"id": "64625db42b50240c28b925ba"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
query | object | false | none | none |
count | integer | false | none | none |
data | [object] | false | none | none |
» uuid | string(uuid) | true | none | none |
» ownedBy | string | false | none | none |
» type | string | false | none | none |
» sub_type | string | false | none | none |
» data_type | string | false | none | none |
» data_id | string | false | none | none |
» forestId | string | false | none | none |
» config | object | false | none | none |
»» appearance | string | true | none | none |
»» hide_on_mobile | boolean | true | none | none |
»» verified_by_rf | boolean | true | none | none |
»» font_size | string | true | none | none |
»» behaviour | string | false | none | none |
»» position | string | false | none | none |
»» ask_for_reviews_type | integer | false | none | none |
»» ask_for_reviews | boolean | false | none | none |
»» logo_of_review_platform | boolean | false | none | none |
»» number_of_reviews | boolean | false | none | none |
»» number_of_trees_planted | boolean | false | none | none |
»» star_rating | boolean | false | none | none |
» createdAt | string(date-time) | false | none | none |
» updatedAt | string(date-time) | false | none | none |
» id | string | true | none | none |
Enumerated Values
Property | Value |
---|---|
type | mini |
type | review-score |
sub_type | tree-counter |
sub_type | badge |
data_type | single-reviews |
appearance | light |
appearance | dark |
font_size | small |
font_size | medium |
font_size | large |
behaviour | floating |
behaviour | fixed-position |
position | bottom-right |
position | bottom-left |
ask_for_reviews_type | 1 |
ask_for_reviews_type | 2 |
WidgetByUuid
{
"count": 1,
"data": [
{
"uuid": "33c0319a-6f4e-4061-86d1-22de3ba3e566",
"ownedBy": "UbZ2nnx021M2X4RY0AfTtnDIGvh2",
"type": "mini",
"sub_type": "tree-counter",
"data_type": "single-reviews",
"forestId": "string",
"config": {
"appearance": "light",
"hide_on_mobile": true,
"verified_by_rf": true,
"font_size": "small"
},
"id": "string",
"status": 1,
"subscription": {
"plantingReviewLimit": 0,
"status": "TRIALING",
"plan": "pro"
},
"data": {
"totalTreeAmount": 0,
"reviewTreeAmount": 0,
"additionalTreeAmount": 0,
"slug": "string",
"name": "string",
"active": true,
"platforms": [
{
"keys": {
"placeId": "string"
},
"name": "string",
"type": "google"
}
],
"score": "4.9",
"reviewAmount": 23,
"platformsOrder": [
"google"
]
},
"name": "ReviewForest"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
count | integer | true | none | none |
data | [object] | true | none | none |
» uuid | string(uuid) | true | none | none |
» ownedBy | string | true | none | none |
» type | string | true | none | none |
» sub_type | string | true | none | none |
» data_type | string | true | none | none |
» forestId | string | true | none | none |
» config | object | true | none | none |
»» appearance | string | true | none | none |
»» hide_on_mobile | boolean | true | none | none |
»» verified_by_rf | boolean | true | none | none |
»» font_size | string | true | none | none |
» id | string¦null | false | none | none |
» status | integer | true | none | none |
» subscription | object | true | none | none |
»» plantingReviewLimit | integer | false | none | none |
»» status | string | true | none | none |
»» plan | string | true | none | none |
» data | object | true | none | none |
»» totalTreeAmount | integer | true | none | none |
»» reviewTreeAmount | integer | true | none | none |
»» additionalTreeAmount | integer | true | none | none |
»» slug | string | true | none | none |
»» name | string | true | none | none |
»» active | boolean | true | none | none |
»» platforms | [object] | true | none | none |
»»» keys | object | false | none | none |
»»»» placeId | string | true | none | none |
»»» name | string | true | none | none |
»»» type | string | true | none | none |
»» score | string | true | none | none |
»» reviewAmount | integer | true | none | none |
»» platformsOrder | [string] | true | none | none |
» name | string | true | none | none |
Enumerated Values
Property | Value |
---|---|
type | mini |
sub_type | tree-counter |
data_type | single-reviews |
appearance | light |
font_size | small |
status | TRIALING |
plan | pro |
type |
TreePlanting
{
"names": [
"string"
],
"occasion": "string",
"quantity": 1
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
names | [string] | false | none | List of tree names. |
occasion | string | false | none | The reason of tree(s) planting. |
quantity | number | false | none | Total number of trees to be planted; 1 if not specified. |
TreePatch
{
"name": "John Doe",
"occasion": "Sales/new contract"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | Name of person/event tree planting is dedicated to. |
occasion | string | false | none | Indicating an occasion of tree planting. |
MessageSMS
{
"forestId": "string",
"recipients": [
{
"number": "string",
"name": "string"
}
],
"sender": "string",
"companyName": "string",
"language": "en",
"templateType": "formal"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
forestId | string | true | none | Forest ID. |
recipients | [object] | true | none | List of phones numbers (required) and names (optional). |
» number | string | true | none | none |
» name | string | false | none | none |
sender | string | false | none | none |
companyName | string | false | none | none |
language | string | false | none | Language of the message. |
templateType | string | false | none | Formal or friendly style of text message. |
Enumerated Values
Property | Value |
---|---|
language | en |
language | de |
templateType | formal |
templateType | friendly |
MessageEmail
{
"forestId": "string",
"recipients": [
{
"email": "string",
"name": "string"
}
],
"subject": "string",
"language": "en",
"templateType": "formal",
"sendAt": "2023-01-01T10:00:00Z"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
forestId | string | true | none | Forest ID. |
recipients | [object] | true | none | List of emails (required) and names (optional). |
string | true | none | none | |
» name | string | false | none | none |
subject | string | false | none | E-Mail subject. |
language | string | false | none | Language of the message. |
templateType | string | false | none | Formal or friendly style of text message. |
sendAt | string(date-time ISO 8601) | false | none | Schedule emails for within the next three days. |
Enumerated Values
Property | Value |
---|---|
language | en |
language | de |
templateType | formal |
templateType | friendly |
WidgetConfig
{
"appearance": "light",
"behaviour": "floating",
"position": "bottom-left",
"ask_for_reviews_type": 1,
"ask_for_reviews": true,
"hide_on_mobile": true,
"logo_of_review_platform": true,
"number_of_reviews": true,
"number_of_trees_planted": true,
"verified_by_rf": true,
"star_rating": true,
"forest_content": "whole-page",
"text_version": "full",
"font_size": "medium"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
appearance | string | false | none | none |
behaviour | string | false | none | none |
position | string | false | none | none |
ask_for_reviews_type | number | false | none | 1: To Platform, 2: To ReviewForest |
ask_for_reviews | boolean | false | none | none |
hide_on_mobile | boolean | false | none | none |
logo_of_review_platform | boolean | false | none | none |
number_of_reviews | boolean | false | none | none |
number_of_trees_planted | boolean | false | none | none |
verified_by_rf | boolean | false | none | none |
star_rating | boolean | false | none | none |
forest_content | string | false | none | none |
text_version | string | false | none | none |
font_size | string | false | none | none |
Enumerated Values
Property | Value |
---|---|
appearance | light |
appearance | dark |
behaviour | floating |
behaviour | fixed-position |
position | bottom-left |
position | bottom-right |
ask_for_reviews_type | 1 |
ask_for_reviews_type | 2 |
forest_content | whole-page |
forest_content | only-forest |
text_version | full |
text_version | short |
font_size | medium |
font_size | small |
Widgets
[
{
"type": "string",
"sub_type": "string",
"data_id": "string",
"appearance": "string",
"ask_for_reviews": true,
"ask_for_reviews_type": 0,
"behaviour": "string",
"position": "string",
"hide_on_mobile": true,
"logo_of_review_platform": true,
"number_of_reviews": true,
"star_rating": true,
"verified_by_rf": true
}
]
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Widget] | false | none | none |