Create a review
Let the customer who completed an appointment submit feedback. The review stays pending until the barber approves it.
curl --request POST \
--url https://api.guile.app/appointments/{appointmentId}/reviews \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "<string>",
"reviewTags": [
"<string>"
]
}
'import requests
url = "https://api.guile.app/appointments/{appointmentId}/reviews"
payload = {
"text": "<string>",
"reviewTags": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>', reviewTags: ['<string>']})
};
fetch('https://api.guile.app/appointments/{appointmentId}/reviews', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.guile.app/appointments/{appointmentId}/reviews",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'text' => '<string>',
'reviewTags' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.guile.app/appointments/{appointmentId}/reviews"
payload := strings.NewReader("{\n \"text\": \"<string>\",\n \"reviewTags\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.guile.app/appointments/{appointmentId}/reviews")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\",\n \"reviewTags\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.guile.app/appointments/{appointmentId}/reviews")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\",\n \"reviewTags\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"text": "<string>",
"reviewTags": [
"<string>"
],
"id": "<string>",
"appointment": {
"id": "<string>",
"occursOn": "2023-11-07T05:31:56Z",
"barber": {
"id": "<string>",
"givenName": "<string>",
"surname": "<string>",
"preferredName": "<string>",
"biography": "<string>",
"spokenLanguages": [],
"experience": 50,
"instagram": "<string>",
"urlSlug": "<string>",
"profileImage_URL": "<string>"
},
"location": {
"id": "<string>",
"name": "<string>",
"shopName": "<string>"
},
"timeZone": "<string>"
},
"customer": {
"id": "<string>",
"givenName": "<string>",
"surname": "<string>"
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"displayName": "<string>"
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}Path Parameters
The unique, opaque system identifier for a resource. This case-sensitive ID is also used as path parameters in URLs or in other properties or parameters that reference a resource by ID rather than URL.
Body
Request body for creating a review.
The text content of the review.
1 - 1000The review tags associated with this review. Maximum of 3 tags.
3The unique, opaque system identifier for a resource. This case-sensitive ID is also used as path parameters in URLs or in other properties or parameters that reference a resource by ID rather than URL.
The sentiment of the review.
positive, negative Response
Created.
A representation of a review.
The text content of the review.
1 - 1000The review tags associated with this review. Maximum of 3 tags.
3The unique, opaque system identifier for a resource. This case-sensitive ID is also used as path parameters in URLs or in other properties or parameters that reference a resource by ID rather than URL.
The sentiment of the review.
positive, negative The unique identifier for the review.
The appointment this review is associated with.
Show child attributes
Show child attributes
The customer who created this review. Its surname is omitted when the customer limits barber visibility to the surname initial.
Show child attributes
Show child attributes
The calculated state of the review.
pending, approved, rejected The customer name the authenticated barber may display. Under initial-only visibility, this contains the given name and surname initial, never the full surname.
Was this page helpful?
curl --request POST \
--url https://api.guile.app/appointments/{appointmentId}/reviews \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "<string>",
"reviewTags": [
"<string>"
]
}
'import requests
url = "https://api.guile.app/appointments/{appointmentId}/reviews"
payload = {
"text": "<string>",
"reviewTags": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>', reviewTags: ['<string>']})
};
fetch('https://api.guile.app/appointments/{appointmentId}/reviews', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.guile.app/appointments/{appointmentId}/reviews",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'text' => '<string>',
'reviewTags' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.guile.app/appointments/{appointmentId}/reviews"
payload := strings.NewReader("{\n \"text\": \"<string>\",\n \"reviewTags\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.guile.app/appointments/{appointmentId}/reviews")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\",\n \"reviewTags\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.guile.app/appointments/{appointmentId}/reviews")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\",\n \"reviewTags\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"text": "<string>",
"reviewTags": [
"<string>"
],
"id": "<string>",
"appointment": {
"id": "<string>",
"occursOn": "2023-11-07T05:31:56Z",
"barber": {
"id": "<string>",
"givenName": "<string>",
"surname": "<string>",
"preferredName": "<string>",
"biography": "<string>",
"spokenLanguages": [],
"experience": 50,
"instagram": "<string>",
"urlSlug": "<string>",
"profileImage_URL": "<string>"
},
"location": {
"id": "<string>",
"name": "<string>",
"shopName": "<string>"
},
"timeZone": "<string>"
},
"customer": {
"id": "<string>",
"givenName": "<string>",
"surname": "<string>"
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"displayName": "<string>"
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {},
"recovery": {
"rateLimit": {
"limit": 123,
"remaining": 123,
"resetsAt": "2023-11-07T05:31:56Z"
}
},
"problems": [
{
"type": "<string>",
"title": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": 349,
"detail": "<string>",
"instance": "<string>",
"attributes": {}
}
]
}