NAV Navigation
Go HTTP JavaScript Node.JS Python Ruby PHP

Working Feedback API v9.0.1

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

The Working Feedback API allows system integrators and clients to directly interact with the Working Feedback service from your own application using a simple REST-based API.

All responses, including error messages, are returned in JSON.

All URLs are relative to our API base domain which is https://api9.workingfeedback.co.uk

Authentication

All API resources are protected and require an access token, which should be passed as a Bearer token in the Authorization header. You can generate a personal access token from your Working Feedback dashboard.

Feedback Requests

At the heart of Working Feedback are feedback requests - requests sent via email or SMS asking the recipient to leave feedback on their experience.

Working Feedback will handle the entire feedback request process from start to finish, meaning that integrators simply need to provide us the data necessary for creating a feedback request.

Create a new feedback request

Code samples

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Content-Type": []string{"application/x-www-form-urlencoded"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "/request", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /request HTTP/1.1

Content-Type: application/x-www-form-urlencoded
Accept: application/json
const inputBody = '{
"company": 0,
"type": "email",
"name": "string",
"destination": "string",
"platform": "workingfeedback",
"businessName": "string",
"jobTitle": "string",
"source": "string",
"treatmentType": "Unknown",
"dateOfBirth": "string",
"title": "string",
"metadata": "string",
"staffName": "string",
"sendAfter": "string"
}';
const headers = {
'Content-Type':'application/x-www-form-urlencoded',
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};

fetch('/request',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}

r = requests.post('/request', headers = headers)

print(r.json())
require 'rest-client'
require 'json'

headers = {
'Content-Type' => 'application/x-www-form-urlencoded',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}

result = RestClient.post '/request',
params: {
}, headers: headers

p JSON.parse(result)
<?php

require 'vendor/autoload.php';

$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded',
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('POST','/request', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

POST /request

Creates a new email or SMS feedback request, queued for sending, with the given inputs.

Body parameter

company: 0
type: email
name: string
destination: string
platform: workingfeedback
businessName: string
jobTitle: string
source: string
treatmentType: Unknown
dateOfBirth: string
title: string
metadata: string
staffName: string
sendAfter: string

Parameters

Name In Type Required Description
body body FeedbackRequestInput true none

Example responses

200 Response

{
"id": 0,
"type": "SMS",
"olderThan28Days": true,
"destination": "string",
"source": "string",
"treatmentType": "Unknown",
"platform": "workingfeedback",
"opened": true,
"sent": true,
"success": true,
"published": true,
"reminders": 0,
"rv_id": 0,
"title": "string",
"author": "string",
"metadata": "string",
"dates": {
"created": "string",
"updated": "string",
"sent": "string",
"reviewSubmitted": "string",
"reviewModerated": "string",
"reviewPublished": "string"
}
}

Responses

Status Meaning Description Schema
200 OK A newly created feedback request that has been accepted for queueing FeedbackRequest
401 Unauthorized Your access token does not have permission to create feedback requests ErrorResponse
418 I’m a teapot A request for feedback has already been sent to this recipient within the threshold period (typically 28 days) ErrorResponse
422 Unprocessable Entity Queuing of the feedback request was rejected by our system. This may be because one or more inputs were invalid, or the person to be contacted was under the age of 18. Full details are returned in the error response ErrorResponse

Get an existing feedback request

Code samples

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/request/{id}", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /request/{id} HTTP/1.1

Accept: application/json

const headers = {
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};

fetch('/request/{id}',
{
method: 'GET',

headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}

r = requests.get('/request/{id}', headers = headers)

print(r.json())
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/request/{id}',
params: {
}, headers: headers

p JSON.parse(result)
<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/request/{id}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

GET /request/{id}

Retrieves the real-time state of an existing feedback request by ID.

Parameters

Name In Type Required Description
id path integer true none

Example responses

200 Response

{
"id": 0,
"type": "SMS",
"olderThan28Days": true,
"destination": "string",
"source": "string",
"treatmentType": "Unknown",
"platform": "workingfeedback",
"opened": true,
"sent": true,
"success": true,
"published": true,
"reminders": 0,
"rv_id": 0,
"title": "string",
"author": "string",
"metadata": "string",
"dates": {
"created": "string",
"updated": "string",
"sent": "string",
"reviewSubmitted": "string",
"reviewModerated": "string",
"reviewPublished": "string"
}
}

Responses

Status Meaning Description Schema
200 OK The feedback request associated with this id FeedbackRequest
401 Unauthorized Your access token does not have permission to get feedback requests ErrorResponse

List existing feedback requests

Code samples

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/request/list/{companyId}", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /request/list/{companyId} HTTP/1.1

Accept: application/json

const headers = {
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};

fetch('/request/list/{companyId}',
{
method: 'GET',

headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}

r = requests.get('/request/list/{companyId}', headers = headers)

print(r.json())
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/request/list/{companyId}',
params: {
}, headers: headers

p JSON.parse(result)
<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/request/list/{companyId}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

GET /request/list/{companyId}

Lists recent feedback requests for any given companyId.

Parameters

Name In Type Required Description
companyId path integer true none

Example responses

200 Response

{
"requests": [
{
"id": 0,
"type": "SMS",
"olderThan28Days": true,
"destination": "string",
"source": "string",
"treatmentType": "Unknown",
"platform": "workingfeedback",
"opened": true,
"sent": true,
"success": true,
"published": true,
"reminders": 0,
"rv_id": 0,
"title": "string",
"author": "string",
"metadata": "string",
"dates": {
"created": "string",
"updated": "string",
"sent": "string",
"reviewSubmitted": "string",
"reviewModerated": "string",
"reviewPublished": "string"
}
}
]
}

Responses

Status Meaning Description Schema
200 OK A list of recent feedback requests (sorted descending) for the given company ID Inline
401 Unauthorized Your access token does not have permission to get feedback requests, or you do not have permission to view details for the given company ID ErrorResponse

Response Schema

Status Code 200

Name Type Required Restrictions Description
» requests [FeedbackRequest] false none none
»» id integer false none The unique ID of this feedback request in our system
»» type string false none The type of request to either - either SMS or email
»» olderThan28Days boolean false none Whether or not this request is older than 28 days
»» destination string false none The destination email address or mobile number that this feedback request has or will be sent to. For privacy, this field is obfuscated. After 28 days, [redacted] will be returned
»» source string false none A human readable description of where this feedback request originated from. In most cases, this will be the name of the integration that submitted the request
»» treatmentType string false none For healthcare industries only - whether or not this feedback request relates to an NHS or Private treatment (or Unknown). N/A is used for non healthcare industries
»» platform string false none The platform that will be used for this feedback request. auto is recommended in all cases
»» opened boolean false none Whether or not the email or SMS has been opened by the end user
»» sent boolean false none Whether or not the feedback request has been sent by the system
»» success boolean false none Whether or not this feedback request resulted in an eventual review submitted
»» published boolean false none Whether or not the resulting review (if any) has been published by the moderation team
»» reminders integer false none The number of follow up reminders sent by Working Feedback for this feedback request, if any
»» rv_id integer false none The ID of the review that was collected as a result of this feedback request, if any
»» title string false none The title given to this feedback request that will be pre-filled on opening (can be changed by the end user prior to submission)
»» author string false none The name of the person that this feedback request was sent to. After 28 days, this will become [redacted]
»» metadata string false none If supplied, the JSON metadata object attached to this feedback request in string representation
»» dates object false none none
»»» created string false none Timestamp when this feedback request was created in our system, in UTC
»»» updated string false none Timestamp when this feedback request was last updated by our system, in UTC
»»» sent string false none Timestamp when this feedback request was actually sent by our system, in UTC
»»» reviewSubmitted string false none Timestamp when this feedback request resulted in a review submission, in UTC
»»» reviewModerated string false none Timestamp when the resulting review submission was moderated, in UTC
»»» reviewPublished string false none Timestamp when the resulting review submission was published and made live, in UTC

Enumerated Values

Property Value
type SMS
type email
treatmentType Unknown
treatmentType N/A
treatmentType NHS
treatmentType Private
platform workingfeedback
platform google
platform auto

Reviews

Reviews collected by Working Feedback can be managed through this API. This includes - where applicable - reviews from Google and recommendations from Facebook.

Note that reviews from third party platforms are prefixed with T for easy identification.

Get a specific review

Code samples

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/review/{reviewId}", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /review/{reviewId} HTTP/1.1

Accept: application/json

const headers = {
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};

fetch('/review/{reviewId}',
{
method: 'GET',

headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}

r = requests.get('/review/{reviewId}', headers = headers)

print(r.json())
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/review/{reviewId}',
params: {
}, headers: headers

p JSON.parse(result)
<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/review/{reviewId}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

GET /review/{reviewId}

Get the review details (including private additional information) for a given reviewId. If no access token is passed then only publicly accessible fields are returned.

Parameters

Name In Type Required Description
reviewId path integer true none

Example responses

200 Response

{
"id": "string",
"status": "PUBLISHED",
"author": {
"name": "string",
"job_title": "string",
"business": "string",
"email": "string"
},
"has_reply": true,
"anonymous": true,
"title": "string",
"text": "string",
"rating": {
"score": 0,
"percentage": 0
},
"dates": {
"submitted": "string",
"published": "string",
"rejected": "string",
"investigated": "string",
"restricted": "string",
"escalated": "string",
"verified": "string",
"moderated": "string",
"nhs_submitted": "string",
"nhs_accepted": "string",
"nhs_rejected": "string"
}
}

Responses

Status Meaning Description Schema
200 OK The requested review Review
401 Unauthorized Your access token does not have permission to read review details, or you do not have permission to view details for the given company ID ErrorResponse

Get paginated company reviews

Code samples

package main

import (
"bytes"
"net/http"
)

func main() {

headers := map[string][]string{
"Accept": []string{"application/json"},
"limit": []string{"0"},
"dateFrom": []string{"string"},
"dateTo": []string{"string"},
"ratings": []string{"string"},
"Authorization": []string{"Bearer {access-token}"},
}

data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/company/{companyId}/reviews/{status}", data)
req.Header = headers

client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /company/{companyId}/reviews/{status} HTTP/1.1

Accept: application/json
limit: 0
dateFrom: string
dateTo: string
ratings: string

const headers = {
'Accept':'application/json',
'limit':'0',
'dateFrom':'string',
'dateTo':'string',
'ratings':'string',
'Authorization':'Bearer {access-token}'
};

fetch('/company/{companyId}/reviews/{status}',
{
method: 'GET',

headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Accept': 'application/json',
'limit': '0',
'dateFrom': 'string',
'dateTo': 'string',
'ratings': 'string',
'Authorization': 'Bearer {access-token}'
}

r = requests.get('/company/{companyId}/reviews/{status}', headers = headers)

print(r.json())
require 'rest-client'
require 'json'

headers = {
'Accept' => 'application/json',
'limit' => '0',
'dateFrom' => 'string',
'dateTo' => 'string',
'ratings' => 'string',
'Authorization' => 'Bearer {access-token}'
}

result = RestClient.get '/company/{companyId}/reviews/{status}',
params: {
}, headers: headers

p JSON.parse(result)
<?php

require 'vendor/autoload.php';

$headers = array(
'Accept' => 'application/json',
'limit' => '0',
'dateFrom' => 'string',
'dateTo' => 'string',
'ratings' => 'string',
'Authorization' => 'Bearer {access-token}',
);

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
$response = $client->request('GET','/company/{companyId}/reviews/{status}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}

// ...

GET /company/{companyId}/reviews/{status}

Get a paginated list of reviews for a given companyId, filtered by status and optionally dates and/or ratings.

Parameters

Name In Type Required Description
companyId path integer true The company ID of which you want to return reviews for
status path string true One of published, rejected, or restricted to specify the review status to return
page query integer false The page number to return when paginating results (default is 1)
limit header integer false The maximum number of results to return per page
dateFrom header string false The minimum date (in YYYY-MM-DD format) when specifing a date range
dateTo header string false The maximum date (in YYYY-MM-DD format) when specifing a date range
ratings header string false A comma separated list of star ratings to return

Enumerated Values

Parameter Value
status published
status rejected
status restricted

Example responses

200 Response

{
"reviews": [
{
"id": "string",
"status": "PUBLISHED",
"author": {
"name": "string",
"job_title": "string",
"business": "string",
"email": "string"
},
"has_reply": true,
"anonymous": true,
"title": "string",
"text": "string",
"rating": {
"score": 0,
"percentage": 0
},
"dates": {
"submitted": "string",
"published": "string",
"rejected": "string",
"investigated": "string",
"restricted": "string",
"escalated": "string",
"verified": "string",
"moderated": "string",
"nhs_submitted": "string",
"nhs_accepted": "string",
"nhs_rejected": "string"
}
}
]
}

Responses

Status Meaning Description Schema
200 OK A paginated list of matching reviews for the given company ID Inline
401 Unauthorized Your access token does not have permission to read review details, or you do not have permission to view details for the company it relates to ErrorResponse
422 Unprocessable Entity The criteria specified was invalid. See the returned error for the exact reason(s) ErrorResponse

Response Schema

Status Code 200

Name Type Required Restrictions Description
» reviews [Review] false none none
»» id string false none The unique ID of this review in our system
»» status string false none The current status of the review
»» author object false none none
»»» name string false none The name of the author of this review
»»» job_title string false none The job description of the author of this review
»»» business string false none The business that the author of this review works at
»»» email string false none The obfuscated email address of the authof of this review
»» has_reply boolean false none Whether or not the review has a published reply associated with it
»» anonymous boolean false none Whether or not the author is anonymous (name will be blanked if true)
»» title string false none The title the author gave this review
»» text string false none The text (main body) of the review itself
»» rating object false none none
»»» score integer false none The star rating given to this review (where 5 is the highest)
»»» percentage integer false none The satisfaction rating of this review, expressed as a percentage
»» dates object false none none
»»» submitted string false none Timestamp when this review was submitted to us, in UTC
»»» published string false none Timestamp when this review was published by our system, if applicable, in UTC
»»» rejected string false none Timestamp when this review was rejected by our moderators, if applicable, in UTC
»»» investigated string false none Timestamp when this review was investigated by our moderators, if applicable, in UTC
»»» restricted string false none Timestamp when this review was restricted by our modereators, if applicable, in UTC
»»» escalated string false none Timestamp when this review was escalated by the client, if applicable, in UTC
»»» verified string false none Timestamp when this review was verified (anti-bot check) by the author, in UTC
»»» moderated string false none Timestamp when this review was last moderated by our team, in UTC
»»» nhs_submitted string false none Timestamp when this review was submitted to the NHS, if applicable, in UTC
»»» nhs_accepted string false none Timestamp when this review was accepted and published by the NHS, if applicable, in UTC
»»» nhs_rejected string false none Timestamp when this review was rejected for publication by the NHS, if applicable, in UTC

Enumerated Values

Property Value
status PUBLISHED
status REJECTED
status RESTRICTED
status UNDER_INVESTIGATION
status PENDING
status VERIFIED

Schemas

FeedbackRequest

{
"id": 0,
"type": "SMS",
"olderThan28Days": true,
"destination": "string",
"source": "string",
"treatmentType": "Unknown",
"platform": "workingfeedback",
"opened": true,
"sent": true,
"success": true,
"published": true,
"reminders": 0,
"rv_id": 0,
"title": "string",
"author": "string",
"metadata": "string",
"dates": {
"created": "string",
"updated": "string",
"sent": "string",
"reviewSubmitted": "string",
"reviewModerated": "string",
"reviewPublished": "string"
}
}

Properties

Name Type Required Restrictions Description
id integer false none The unique ID of this feedback request in our system
type string false none The type of request to either - either SMS or email
olderThan28Days boolean false none Whether or not this request is older than 28 days
destination string false none The destination email address or mobile number that this feedback request has or will be sent to. For privacy, this field is obfuscated. After 28 days, [redacted] will be returned
source string false none A human readable description of where this feedback request originated from. In most cases, this will be the name of the integration that submitted the request
treatmentType string false none For healthcare industries only - whether or not this feedback request relates to an NHS or Private treatment (or Unknown). N/A is used for non healthcare industries
platform string false none The platform that will be used for this feedback request. auto is recommended in all cases
opened boolean false none Whether or not the email or SMS has been opened by the end user
sent boolean false none Whether or not the feedback request has been sent by the system
success boolean false none Whether or not this feedback request resulted in an eventual review submitted
published boolean false none Whether or not the resulting review (if any) has been published by the moderation team
reminders integer false none The number of follow up reminders sent by Working Feedback for this feedback request, if any
rv_id integer false none The ID of the review that was collected as a result of this feedback request, if any
title string false none The title given to this feedback request that will be pre-filled on opening (can be changed by the end user prior to submission)
author string false none The name of the person that this feedback request was sent to. After 28 days, this will become [redacted]
metadata string false none If supplied, the JSON metadata object attached to this feedback request in string representation
dates object false none none
» created string false none Timestamp when this feedback request was created in our system, in UTC
» updated string false none Timestamp when this feedback request was last updated by our system, in UTC
» sent string false none Timestamp when this feedback request was actually sent by our system, in UTC
» reviewSubmitted string false none Timestamp when this feedback request resulted in a review submission, in UTC
» reviewModerated string false none Timestamp when the resulting review submission was moderated, in UTC
» reviewPublished string false none Timestamp when the resulting review submission was published and made live, in UTC

Enumerated Values

Property Value
type SMS
type email
treatmentType Unknown
treatmentType N/A
treatmentType NHS
treatmentType Private
platform workingfeedback
platform google
platform auto

FeedbackRequestInput

{
"company": 0,
"type": "email",
"name": "string",
"destination": "string",
"platform": "workingfeedback",
"businessName": "string",
"jobTitle": "string",
"source": "string",
"treatmentType": "Unknown",
"dateOfBirth": "string",
"title": "string",
"metadata": "string",
"staffName": "string",
"sendAfter": "string"
}

Properties

Name Type Required Restrictions Description
company integer true none The company ID that this feedback request should be created for
type string true none One of email or sms, to identify the type of feedback request to send
name string true none The name of the recipient of this feedback request, as they should be addressed
destination string true none The email address or mobile number this feedback request should be sent to
platform string true none Recommended to set as auto to let Working Feedback decide the destination platform
businessName string false none The name of the business that the recipient works for (e.g My Company Ltd)
jobTitle string false none The job title of the person who this feedback request is being sent to
source string false none The name of your platform or integration
treatmentType string false none For healthcare industries only, the type of treatment that the recipient received
dateOfBirth string false none The date of birth (in YYYY-MM-DD format) of the recipient
title string false none An optional pre-filled title to be set when the recipient leaves feedback
metadata string false none A JSON object containing optional metadata to attach, in string representation
staffName string false none The full name of the staff member this feedback relates to, if any
sendAfter string false none A timestamp of the earliest date and time this feedback request should be sent (useful for adding delays)

Enumerated Values

Property Value
type email
type sms
platform workingfeedback
platform google
platform auto
treatmentType Unknown
treatmentType N/A
treatmentType NHS
treatmentType Private

Review

{
"id": "string",
"status": "PUBLISHED",
"author": {
"name": "string",
"job_title": "string",
"business": "string",
"email": "string"
},
"has_reply": true,
"anonymous": true,
"title": "string",
"text": "string",
"rating": {
"score": 0,
"percentage": 0
},
"dates": {
"submitted": "string",
"published": "string",
"rejected": "string",
"investigated": "string",
"restricted": "string",
"escalated": "string",
"verified": "string",
"moderated": "string",
"nhs_submitted": "string",
"nhs_accepted": "string",
"nhs_rejected": "string"
}
}

Properties

Name Type Required Restrictions Description
id string false none The unique ID of this review in our system
status string false none The current status of the review
author object false none none
» name string false none The name of the author of this review
» job_title string false none The job description of the author of this review
» business string false none The business that the author of this review works at
» email string false none The obfuscated email address of the authof of this review
has_reply boolean false none Whether or not the review has a published reply associated with it
anonymous boolean false none Whether or not the author is anonymous (name will be blanked if true)
title string false none The title the author gave this review
text string false none The text (main body) of the review itself
rating object false none none
» score integer false none The star rating given to this review (where 5 is the highest)
» percentage integer false none The satisfaction rating of this review, expressed as a percentage
dates object false none none
» submitted string false none Timestamp when this review was submitted to us, in UTC
» published string false none Timestamp when this review was published by our system, if applicable, in UTC
» rejected string false none Timestamp when this review was rejected by our moderators, if applicable, in UTC
» investigated string false none Timestamp when this review was investigated by our moderators, if applicable, in UTC
» restricted string false none Timestamp when this review was restricted by our modereators, if applicable, in UTC
» escalated string false none Timestamp when this review was escalated by the client, if applicable, in UTC
» verified string false none Timestamp when this review was verified (anti-bot check) by the author, in UTC
» moderated string false none Timestamp when this review was last moderated by our team, in UTC
» nhs_submitted string false none Timestamp when this review was submitted to the NHS, if applicable, in UTC
» nhs_accepted string false none Timestamp when this review was accepted and published by the NHS, if applicable, in UTC
» nhs_rejected string false none Timestamp when this review was rejected for publication by the NHS, if applicable, in UTC

Enumerated Values

Property Value
status PUBLISHED
status REJECTED
status RESTRICTED
status UNDER_INVESTIGATION
status PENDING
status VERIFIED

ErrorResponse

{
"message": "string",
"errors": {
"key": "string",
"value": "string"
}
}

Properties

Name Type Required Restrictions Description
message string true none A human readable description of the top-level error message
errors KeyValue false none An array of individual key-value pairs containing errors that have occurred. This may be 1 or more errors per request

KeyValue

{
"key": "string",
"value": "string"
}

Properties

Name Type Required Restrictions Description
key string false none none
value string false none none