NAV Navigation
JavaScript Shell HTTP

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

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.

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 google

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).
» email 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