curl --request POST \
--url https://api.partoo.co/v2/business/{business_id}/free_form_services \
--header 'Content-Type: application/json' \
--header 'x-APIKey: <api-key>' \
--data '
{
"category_gmb_name": "gcid:climbing_gym",
"name": "Random Name",
"price": 25.35,
"description": "This is our custom service"
}
'import requests
url = "https://api.partoo.co/v2/business/{business_id}/free_form_services"
payload = {
"category_gmb_name": "gcid:climbing_gym",
"name": "Random Name",
"price": 25.35,
"description": "This is our custom service"
}
headers = {
"x-APIKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-APIKey': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
category_gmb_name: 'gcid:climbing_gym',
name: 'Random Name',
price: 25.35,
description: 'This is our custom service'
})
};
fetch('https://api.partoo.co/v2/business/{business_id}/free_form_services', 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.partoo.co/v2/business/{business_id}/free_form_services",
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([
'category_gmb_name' => 'gcid:climbing_gym',
'name' => 'Random Name',
'price' => 25.35,
'description' => 'This is our custom service'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-APIKey: <api-key>"
],
]);
$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.partoo.co/v2/business/{business_id}/free_form_services"
payload := strings.NewReader("{\n \"category_gmb_name\": \"gcid:climbing_gym\",\n \"name\": \"Random Name\",\n \"price\": 25.35,\n \"description\": \"This is our custom service\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-APIKey", "<api-key>")
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.partoo.co/v2/business/{business_id}/free_form_services")
.header("x-APIKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"category_gmb_name\": \"gcid:climbing_gym\",\n \"name\": \"Random Name\",\n \"price\": 25.35,\n \"description\": \"This is our custom service\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.partoo.co/v2/business/{business_id}/free_form_services")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-APIKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"category_gmb_name\": \"gcid:climbing_gym\",\n \"name\": \"Random Name\",\n \"price\": 25.35,\n \"description\": \"This is our custom service\"\n}"
response = http.request(request)
puts response.read_body{
"services": [
{
"service_id": 1,
"type": "STRUCTURED_SERVICE_ITEM",
"name": "Climbing Gym",
"price": 50,
"description": "Our climbing gym available for all",
"category_gmb_name": "gcid:climbing_gym"
},
{
"service_id": 2,
"type": "FREE_FORM_SERVICE_ITEM",
"name": "Random Name",
"price": 25.35,
"description": "This is our custom service",
"category_gmb_name": "gcid:climbing_gym"
}
]
}{
"errors": {
"json": {}
}
}{
"errors": {
"authentication": "User not authenticated"
}
}{
"errors": {
"authorization": "Operation not allowed"
}
}{
"errors": {
"json": "Resource not found"
}
}Set custom Google Services for your business
This endpoint allows you to set or update custom Google Services for your business.
curl --request POST \
--url https://api.partoo.co/v2/business/{business_id}/free_form_services \
--header 'Content-Type: application/json' \
--header 'x-APIKey: <api-key>' \
--data '
{
"category_gmb_name": "gcid:climbing_gym",
"name": "Random Name",
"price": 25.35,
"description": "This is our custom service"
}
'import requests
url = "https://api.partoo.co/v2/business/{business_id}/free_form_services"
payload = {
"category_gmb_name": "gcid:climbing_gym",
"name": "Random Name",
"price": 25.35,
"description": "This is our custom service"
}
headers = {
"x-APIKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-APIKey': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
category_gmb_name: 'gcid:climbing_gym',
name: 'Random Name',
price: 25.35,
description: 'This is our custom service'
})
};
fetch('https://api.partoo.co/v2/business/{business_id}/free_form_services', 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.partoo.co/v2/business/{business_id}/free_form_services",
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([
'category_gmb_name' => 'gcid:climbing_gym',
'name' => 'Random Name',
'price' => 25.35,
'description' => 'This is our custom service'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-APIKey: <api-key>"
],
]);
$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.partoo.co/v2/business/{business_id}/free_form_services"
payload := strings.NewReader("{\n \"category_gmb_name\": \"gcid:climbing_gym\",\n \"name\": \"Random Name\",\n \"price\": 25.35,\n \"description\": \"This is our custom service\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-APIKey", "<api-key>")
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.partoo.co/v2/business/{business_id}/free_form_services")
.header("x-APIKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"category_gmb_name\": \"gcid:climbing_gym\",\n \"name\": \"Random Name\",\n \"price\": 25.35,\n \"description\": \"This is our custom service\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.partoo.co/v2/business/{business_id}/free_form_services")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-APIKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"category_gmb_name\": \"gcid:climbing_gym\",\n \"name\": \"Random Name\",\n \"price\": 25.35,\n \"description\": \"This is our custom service\"\n}"
response = http.request(request)
puts response.read_body{
"services": [
{
"service_id": 1,
"type": "STRUCTURED_SERVICE_ITEM",
"name": "Climbing Gym",
"price": 50,
"description": "Our climbing gym available for all",
"category_gmb_name": "gcid:climbing_gym"
},
{
"service_id": 2,
"type": "FREE_FORM_SERVICE_ITEM",
"name": "Random Name",
"price": 25.35,
"description": "This is our custom service",
"category_gmb_name": "gcid:climbing_gym"
}
]
}{
"errors": {
"json": {}
}
}{
"errors": {
"authentication": "User not authenticated"
}
}{
"errors": {
"authorization": "Operation not allowed"
}
}{
"errors": {
"json": "Resource not found"
}
}Authorizations
The authentication system on Partoo API is using API Key that should be put in the header of the request (the name of the header is x-APIKey). An api_key is linked to a user. This user's role will give you different access level to the API features.
Path Parameters
Business id.
It may be replaced by c-{code} where code is the store code, which should be unique per organization. This can be used only for ORG_ADMIN, GROUP_MANAGER and BUSINESS_MANAGER users.
Body
- Option 1
- Option 2
A Google Service.
Google name of the category. The category must belong to your business.
"gcid:climbing_gym"
Name of the service.
"Random Name"
Price of the service.
25.35
Description of the service.
300"This is our custom service"
Response
OK
List of Business Services.
Show child attributes
Show child attributes
[
{
"service_id": 1,
"type": "STRUCTURED_SERVICE_ITEM",
"name": "Climbing Gym",
"price": 50,
"description": "Our climbing gym available for all",
"category_gmb_name": "gcid:climbing_gym"
},
{
"service_id": 2,
"type": "FREE_FORM_SERVICE_ITEM",
"name": "Random Name",
"price": 25.35,
"description": "This is our custom service",
"category_gmb_name": "gcid:climbing_gym"
}
]
Was this page helpful?