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. |
| platformTypes | query | string | false | Comma separated list of platform types to filter by. |
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: People+Planet",
"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: People+Planet",
"plantingProjectId": 2,
"type": "review",
"url": "https://qa-page.reviewforest.org/test-forest1?review=f91a152b-69a6-4df9-b4d0-2e87e489cf52",
"invoice": "96661BB1-0004"
}
]
}
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: People+Planet",
"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: People+Planet",
"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: People+Planet",
"plantingProjectId": 2,
"type": "review",
"url": "https://qa-page.reviewforest.org/test-forest1?review=f91a152b-69a6-4df9-b4d0-2e87e489cf52",
"invoice": "96661BB1-0004"
}
]
}
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: People+Planet",
"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: People+Planet",
"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: People+Planet",
"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 |