Update
curl --request PUT \
--url https://api-staging.genuka.com/2023-11/admin/products/{serviceId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
"{\n \"title\": \"Coupe mixte\",\n \"type\": \"service\",\n \"handle\": \"coupe-mixte\",\n \"content\": \"Coupe de cheveux mixte pour hommes et femmes.\",\n \"published\": 1,\n \"price\": 1000,\n \"duration_minutes\": 50,\n \"buffer_minutes\": 10,\n \"professionals\": [\n {\n \"id\": \"01hk7qfgkyd4cg9vd8h7jr749d\"\n }\n ],\n \"medias\": [],\n \"tags\": [\n {\n \"name\": \"Tag Nouveau 1\" // Création d'un nouveau tag\n },\n {\n \"name\": \"Tag Nouveau 2\" // Création d'un autre nouveau tag\n }\n ]\n}"
EOFimport requests
url = "https://api-staging.genuka.com/2023-11/admin/products/{serviceId}"
payload = "{
\"title\": \"Coupe mixte\",
\"type\": \"service\",
\"handle\": \"coupe-mixte\",
\"content\": \"Coupe de cheveux mixte pour hommes et femmes.\",
\"published\": 1,
\"price\": 1000,
\"duration_minutes\": 50,
\"buffer_minutes\": 10,
\"professionals\": [
{
\"id\": \"01hk7qfgkyd4cg9vd8h7jr749d\"
}
],
\"medias\": [],
\"tags\": [
{
\"name\": \"Tag Nouveau 1\" // Création d'un nouveau tag
},
{
\"name\": \"Tag Nouveau 2\" // Création d'un autre nouveau tag
}
]
}"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify('{\n "title": "Coupe mixte",\n "type": "service",\n "handle": "coupe-mixte",\n "content": "Coupe de cheveux mixte pour hommes et femmes.",\n "published": 1,\n "price": 1000,\n "duration_minutes": 50,\n "buffer_minutes": 10,\n "professionals": [\n {\n "id": "01hk7qfgkyd4cg9vd8h7jr749d"\n }\n ],\n "medias": [],\n "tags": [\n {\n "name": "Tag Nouveau 1" // Création d\'un nouveau tag\n },\n {\n "name": "Tag Nouveau 2" // Création d\'un autre nouveau tag\n }\n ]\n}')
};
fetch('https://api-staging.genuka.com/2023-11/admin/products/{serviceId}', 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-staging.genuka.com/2023-11/admin/products/{serviceId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode('{
"title": "Coupe mixte",
"type": "service",
"handle": "coupe-mixte",
"content": "Coupe de cheveux mixte pour hommes et femmes.",
"published": 1,
"price": 1000,
"duration_minutes": 50,
"buffer_minutes": 10,
"professionals": [
{
"id": "01hk7qfgkyd4cg9vd8h7jr749d"
}
],
"medias": [],
"tags": [
{
"name": "Tag Nouveau 1" // Création d\'un nouveau tag
},
{
"name": "Tag Nouveau 2" // Création d\'un autre nouveau tag
}
]
}'),
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-staging.genuka.com/2023-11/admin/products/{serviceId}"
payload := strings.NewReader("\"{\\n \\\"title\\\": \\\"Coupe mixte\\\",\\n \\\"type\\\": \\\"service\\\",\\n \\\"handle\\\": \\\"coupe-mixte\\\",\\n \\\"content\\\": \\\"Coupe de cheveux mixte pour hommes et femmes.\\\",\\n \\\"published\\\": 1,\\n \\\"price\\\": 1000,\\n \\\"duration_minutes\\\": 50,\\n \\\"buffer_minutes\\\": 10,\\n \\\"professionals\\\": [\\n {\\n \\\"id\\\": \\\"01hk7qfgkyd4cg9vd8h7jr749d\\\"\\n }\\n ],\\n \\\"medias\\\": [],\\n \\\"tags\\\": [\\n {\\n \\\"name\\\": \\\"Tag Nouveau 1\\\" // Création d'un nouveau tag\\n },\\n {\\n \\\"name\\\": \\\"Tag Nouveau 2\\\" // Création d'un autre nouveau tag\\n }\\n ]\\n}\"")
req, _ := http.NewRequest("PUT", 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.put("https://api-staging.genuka.com/2023-11/admin/products/{serviceId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("\"{\\n \\\"title\\\": \\\"Coupe mixte\\\",\\n \\\"type\\\": \\\"service\\\",\\n \\\"handle\\\": \\\"coupe-mixte\\\",\\n \\\"content\\\": \\\"Coupe de cheveux mixte pour hommes et femmes.\\\",\\n \\\"published\\\": 1,\\n \\\"price\\\": 1000,\\n \\\"duration_minutes\\\": 50,\\n \\\"buffer_minutes\\\": 10,\\n \\\"professionals\\\": [\\n {\\n \\\"id\\\": \\\"01hk7qfgkyd4cg9vd8h7jr749d\\\"\\n }\\n ],\\n \\\"medias\\\": [],\\n \\\"tags\\\": [\\n {\\n \\\"name\\\": \\\"Tag Nouveau 1\\\" // Création d'un nouveau tag\\n },\\n {\\n \\\"name\\\": \\\"Tag Nouveau 2\\\" // Création d'un autre nouveau tag\\n }\\n ]\\n}\"")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-staging.genuka.com/2023-11/admin/products/{serviceId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "\"{\\n \\\"title\\\": \\\"Coupe mixte\\\",\\n \\\"type\\\": \\\"service\\\",\\n \\\"handle\\\": \\\"coupe-mixte\\\",\\n \\\"content\\\": \\\"Coupe de cheveux mixte pour hommes et femmes.\\\",\\n \\\"published\\\": 1,\\n \\\"price\\\": 1000,\\n \\\"duration_minutes\\\": 50,\\n \\\"buffer_minutes\\\": 10,\\n \\\"professionals\\\": [\\n {\\n \\\"id\\\": \\\"01hk7qfgkyd4cg9vd8h7jr749d\\\"\\n }\\n ],\\n \\\"medias\\\": [],\\n \\\"tags\\\": [\\n {\\n \\\"name\\\": \\\"Tag Nouveau 1\\\" // Création d'un nouveau tag\\n },\\n {\\n \\\"name\\\": \\\"Tag Nouveau 2\\\" // Création d'un autre nouveau tag\\n }\\n ]\\n}\""
response = http.request(request)
puts response.read_body{
"buffer_minutes": 10,
"company_id": "01k7464hqksr4f99rp3ff7x2jz",
"compare_at_price": null,
"content": "Coupe de cheveux mixte pour hommes et femmes.",
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"first_variant": {
"barcode": null,
"base_title": "Default Title",
"buffer_minutes": 10,
"compare_at_price": null,
"composite_stocks": [],
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"estimated_quantity": null,
"estimated_quantity_by_warehouse": [],
"follow_stock": 0,
"id": "01k74jqm9sb7ht6mqqbng08kmb",
"image_id": null,
"metadata": null,
"min_order_quantity": 1,
"options": [
0
],
"position": 1,
"price": 1000,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"professionals": [],
"service": {
"buffer_minutes": 10,
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"id": "01k74jqmajfa8y0z9m5cw9hhw4",
"metadata": null,
"product_variant_id": "01k74jqm9sb7ht6mqqbng08kmb",
"professionals": [],
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"service_id": "01k74jqmajfa8y0z9m5cw9hhw4",
"sku": null,
"supplierproduct": null,
"taxable": 1,
"title": "Default Title",
"updated_at": "2025-10-09T13:31:56.000000Z",
"whatsapp_product_id": null
},
"follow_stock": false,
"handle": "coupe-mixte",
"has_variants": true,
"id": "01k74jk695pe50w3vmd5nz3w2q",
"is_shippable": 1,
"is_taxable": 1,
"medias": [],
"menus": [],
"metadata": {
"image_ready": false
},
"min_price": 10,
"options": [
{
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"id": "01k74jk6c4x17tt8bzkfne0py4",
"metadata": null,
"position": 1,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"title": "Default Title",
"updated_at": "2025-10-09T13:29:30.000000Z",
"values": [
"Default Title"
]
},
{
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"id": "01k74jqmb9636cxzhygn73nkj8",
"metadata": null,
"position": 1,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"title": "Default Title",
"updated_at": "2025-10-09T13:31:56.000000Z",
"values": [
"Default Title"
]
}
],
"professionals": [],
"published": 1,
"remaining_stocks": null,
"supplier_id": null,
"tags": [
{
"company_id": "01k7464hqksr4f99rp3ff7x2jz",
"created_at": "2025-10-09T09:57:33.000000Z",
"id": "01k746f3hn5q8z1kw9m69v1h6a",
"name": "TAG NOUVEAU 1",
"pivot": {
"created_at": "2025-10-09T13:31:56.000000Z",
"tag_id": "01k746f3hn5q8z1kw9m69v1h6a",
"taggable_id": "01k74jk695pe50w3vmd5nz3w2q",
"taggable_type": "App\\Models\\Product",
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"updated_at": "2025-10-09T09:57:33.000000Z"
},
{
"company_id": "01k7464hqksr4f99rp3ff7x2jz",
"created_at": "2025-10-09T09:57:33.000000Z",
"id": "01k746f3jd4tc7z3jkdf5nm4bw",
"name": "TAG NOUVEAU 2",
"pivot": {
"created_at": "2025-10-09T13:31:56.000000Z",
"tag_id": "01k746f3jd4tc7z3jkdf5nm4bw",
"taggable_id": "01k74jk695pe50w3vmd5nz3w2q",
"taggable_type": "App\\Models\\Product",
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"updated_at": "2025-10-09T09:57:33.000000Z"
}
],
"title": "Coupe mixte",
"type": "service",
"updated_at": "2025-10-09T13:29:30.000000Z",
"variants": [
{
"barcode": null,
"base_title": "Default Title",
"buffer_minutes": 10,
"compare_at_price": null,
"composite_stocks": [],
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"estimated_quantity": null,
"estimated_quantity_by_warehouse": [],
"follow_stock": 0,
"id": "01k74jk69y8ff2n7b1kxdy6byv",
"image_id": null,
"load_product": false,
"metadata": null,
"min_order_quantity": 1,
"options": [
0
],
"position": 1,
"price": 10,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"professionals": [],
"service": {
"buffer_minutes": 10,
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"id": "01k74jk6aryht2p5hqa66tr8bd",
"metadata": null,
"product_variant_id": "01k74jk69y8ff2n7b1kxdy6byv",
"professionals": [],
"updated_at": "2025-10-09T13:29:30.000000Z"
},
"service_id": "01k74jk6aryht2p5hqa66tr8bd",
"sku": null,
"stocks": [],
"supplierproduct": null,
"taxable": 1,
"title": "Default Title",
"updated_at": "2025-10-09T13:29:30.000000Z",
"whatsapp_product_id": null
},
{
"barcode": null,
"base_title": "Default Title",
"buffer_minutes": 10,
"compare_at_price": null,
"composite_stocks": [],
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"estimated_quantity": null,
"estimated_quantity_by_warehouse": [],
"follow_stock": 0,
"id": "01k74jqm9sb7ht6mqqbng08kmb",
"image_id": null,
"load_product": false,
"metadata": null,
"min_order_quantity": 1,
"options": [
0
],
"position": 1,
"price": 1000,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"professionals": [],
"service": {
"buffer_minutes": 10,
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"id": "01k74jqmajfa8y0z9m5cw9hhw4",
"metadata": null,
"product_variant_id": "01k74jqm9sb7ht6mqqbng08kmb",
"professionals": [],
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"service_id": "01k74jqmajfa8y0z9m5cw9hhw4",
"sku": null,
"stocks": [],
"supplierproduct": null,
"taxable": 1,
"title": "Default Title",
"updated_at": "2025-10-09T13:31:56.000000Z",
"whatsapp_product_id": null
}
],
"variants_count": 2,
"vendor": null
}{
"exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
"line": 669,
"message": "No query results for model [App\\Models\\Product] 01k74jk695pe50w3vmd5nz3w2",
"trace": [
{
"class": "Illuminate\\Foundation\\Exceptions\\Handler",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
"function": "prepareException",
"line": 617,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Exceptions\\Handler",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"function": "render",
"line": 51,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handleException",
"line": 224,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 166,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
"function": "handleRequest",
"line": 129,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
"function": "handleRequestUsingNamedLimiter",
"line": 90,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 63,
"type": "->"
},
{
"class": "Illuminate\\Auth\\Middleware\\Authenticate",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/app/Http/Middleware/RequestTimingMiddleware.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 42,
"type": "->"
},
{
"class": "App\\Http\\Middleware\\RequestTimingMiddleware",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 137,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"function": "then",
"line": 821,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Router",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"function": "runRouteWithinStack",
"line": 800,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Router",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"function": "runRoute",
"line": 764,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Router",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"function": "dispatchToRoute",
"line": 753,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Router",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"function": "dispatch",
"line": 200,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Kernel",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
"line": 180,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php",
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
"line": 19,
"type": "->"
},
{
"class": "Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 21,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
"function": "handle",
"line": 31,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 21,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
"function": "handle",
"line": 51,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 27,
"type": "->"
},
{
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 109,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 61,
"type": "->"
},
{
"class": "Illuminate\\Http\\Middleware\\HandleCors",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 58,
"type": "->"
},
{
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 137,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"function": "then",
"line": 175,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Kernel",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"function": "sendRequestThroughRouter",
"line": 144,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Kernel",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/public/index.php",
"function": "handle",
"line": 51,
"type": "->"
},
{
"file": "/home/rushclin/.config/composer/vendor/genesisweb/valet-linux-plus/server.php",
"function": "require_once",
"line": 106
}
]
}Products
Update product
Update the information of an existing product. Use this when modifying prices, stock, metadata, or media.
PUT
/
2023-11
/
admin
/
products
/
{serviceId}
Update
curl --request PUT \
--url https://api-staging.genuka.com/2023-11/admin/products/{serviceId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
"{\n \"title\": \"Coupe mixte\",\n \"type\": \"service\",\n \"handle\": \"coupe-mixte\",\n \"content\": \"Coupe de cheveux mixte pour hommes et femmes.\",\n \"published\": 1,\n \"price\": 1000,\n \"duration_minutes\": 50,\n \"buffer_minutes\": 10,\n \"professionals\": [\n {\n \"id\": \"01hk7qfgkyd4cg9vd8h7jr749d\"\n }\n ],\n \"medias\": [],\n \"tags\": [\n {\n \"name\": \"Tag Nouveau 1\" // Création d'un nouveau tag\n },\n {\n \"name\": \"Tag Nouveau 2\" // Création d'un autre nouveau tag\n }\n ]\n}"
EOFimport requests
url = "https://api-staging.genuka.com/2023-11/admin/products/{serviceId}"
payload = "{
\"title\": \"Coupe mixte\",
\"type\": \"service\",
\"handle\": \"coupe-mixte\",
\"content\": \"Coupe de cheveux mixte pour hommes et femmes.\",
\"published\": 1,
\"price\": 1000,
\"duration_minutes\": 50,
\"buffer_minutes\": 10,
\"professionals\": [
{
\"id\": \"01hk7qfgkyd4cg9vd8h7jr749d\"
}
],
\"medias\": [],
\"tags\": [
{
\"name\": \"Tag Nouveau 1\" // Création d'un nouveau tag
},
{
\"name\": \"Tag Nouveau 2\" // Création d'un autre nouveau tag
}
]
}"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify('{\n "title": "Coupe mixte",\n "type": "service",\n "handle": "coupe-mixte",\n "content": "Coupe de cheveux mixte pour hommes et femmes.",\n "published": 1,\n "price": 1000,\n "duration_minutes": 50,\n "buffer_minutes": 10,\n "professionals": [\n {\n "id": "01hk7qfgkyd4cg9vd8h7jr749d"\n }\n ],\n "medias": [],\n "tags": [\n {\n "name": "Tag Nouveau 1" // Création d\'un nouveau tag\n },\n {\n "name": "Tag Nouveau 2" // Création d\'un autre nouveau tag\n }\n ]\n}')
};
fetch('https://api-staging.genuka.com/2023-11/admin/products/{serviceId}', 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-staging.genuka.com/2023-11/admin/products/{serviceId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode('{
"title": "Coupe mixte",
"type": "service",
"handle": "coupe-mixte",
"content": "Coupe de cheveux mixte pour hommes et femmes.",
"published": 1,
"price": 1000,
"duration_minutes": 50,
"buffer_minutes": 10,
"professionals": [
{
"id": "01hk7qfgkyd4cg9vd8h7jr749d"
}
],
"medias": [],
"tags": [
{
"name": "Tag Nouveau 1" // Création d\'un nouveau tag
},
{
"name": "Tag Nouveau 2" // Création d\'un autre nouveau tag
}
]
}'),
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-staging.genuka.com/2023-11/admin/products/{serviceId}"
payload := strings.NewReader("\"{\\n \\\"title\\\": \\\"Coupe mixte\\\",\\n \\\"type\\\": \\\"service\\\",\\n \\\"handle\\\": \\\"coupe-mixte\\\",\\n \\\"content\\\": \\\"Coupe de cheveux mixte pour hommes et femmes.\\\",\\n \\\"published\\\": 1,\\n \\\"price\\\": 1000,\\n \\\"duration_minutes\\\": 50,\\n \\\"buffer_minutes\\\": 10,\\n \\\"professionals\\\": [\\n {\\n \\\"id\\\": \\\"01hk7qfgkyd4cg9vd8h7jr749d\\\"\\n }\\n ],\\n \\\"medias\\\": [],\\n \\\"tags\\\": [\\n {\\n \\\"name\\\": \\\"Tag Nouveau 1\\\" // Création d'un nouveau tag\\n },\\n {\\n \\\"name\\\": \\\"Tag Nouveau 2\\\" // Création d'un autre nouveau tag\\n }\\n ]\\n}\"")
req, _ := http.NewRequest("PUT", 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.put("https://api-staging.genuka.com/2023-11/admin/products/{serviceId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("\"{\\n \\\"title\\\": \\\"Coupe mixte\\\",\\n \\\"type\\\": \\\"service\\\",\\n \\\"handle\\\": \\\"coupe-mixte\\\",\\n \\\"content\\\": \\\"Coupe de cheveux mixte pour hommes et femmes.\\\",\\n \\\"published\\\": 1,\\n \\\"price\\\": 1000,\\n \\\"duration_minutes\\\": 50,\\n \\\"buffer_minutes\\\": 10,\\n \\\"professionals\\\": [\\n {\\n \\\"id\\\": \\\"01hk7qfgkyd4cg9vd8h7jr749d\\\"\\n }\\n ],\\n \\\"medias\\\": [],\\n \\\"tags\\\": [\\n {\\n \\\"name\\\": \\\"Tag Nouveau 1\\\" // Création d'un nouveau tag\\n },\\n {\\n \\\"name\\\": \\\"Tag Nouveau 2\\\" // Création d'un autre nouveau tag\\n }\\n ]\\n}\"")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-staging.genuka.com/2023-11/admin/products/{serviceId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "\"{\\n \\\"title\\\": \\\"Coupe mixte\\\",\\n \\\"type\\\": \\\"service\\\",\\n \\\"handle\\\": \\\"coupe-mixte\\\",\\n \\\"content\\\": \\\"Coupe de cheveux mixte pour hommes et femmes.\\\",\\n \\\"published\\\": 1,\\n \\\"price\\\": 1000,\\n \\\"duration_minutes\\\": 50,\\n \\\"buffer_minutes\\\": 10,\\n \\\"professionals\\\": [\\n {\\n \\\"id\\\": \\\"01hk7qfgkyd4cg9vd8h7jr749d\\\"\\n }\\n ],\\n \\\"medias\\\": [],\\n \\\"tags\\\": [\\n {\\n \\\"name\\\": \\\"Tag Nouveau 1\\\" // Création d'un nouveau tag\\n },\\n {\\n \\\"name\\\": \\\"Tag Nouveau 2\\\" // Création d'un autre nouveau tag\\n }\\n ]\\n}\""
response = http.request(request)
puts response.read_body{
"buffer_minutes": 10,
"company_id": "01k7464hqksr4f99rp3ff7x2jz",
"compare_at_price": null,
"content": "Coupe de cheveux mixte pour hommes et femmes.",
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"first_variant": {
"barcode": null,
"base_title": "Default Title",
"buffer_minutes": 10,
"compare_at_price": null,
"composite_stocks": [],
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"estimated_quantity": null,
"estimated_quantity_by_warehouse": [],
"follow_stock": 0,
"id": "01k74jqm9sb7ht6mqqbng08kmb",
"image_id": null,
"metadata": null,
"min_order_quantity": 1,
"options": [
0
],
"position": 1,
"price": 1000,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"professionals": [],
"service": {
"buffer_minutes": 10,
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"id": "01k74jqmajfa8y0z9m5cw9hhw4",
"metadata": null,
"product_variant_id": "01k74jqm9sb7ht6mqqbng08kmb",
"professionals": [],
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"service_id": "01k74jqmajfa8y0z9m5cw9hhw4",
"sku": null,
"supplierproduct": null,
"taxable": 1,
"title": "Default Title",
"updated_at": "2025-10-09T13:31:56.000000Z",
"whatsapp_product_id": null
},
"follow_stock": false,
"handle": "coupe-mixte",
"has_variants": true,
"id": "01k74jk695pe50w3vmd5nz3w2q",
"is_shippable": 1,
"is_taxable": 1,
"medias": [],
"menus": [],
"metadata": {
"image_ready": false
},
"min_price": 10,
"options": [
{
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"id": "01k74jk6c4x17tt8bzkfne0py4",
"metadata": null,
"position": 1,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"title": "Default Title",
"updated_at": "2025-10-09T13:29:30.000000Z",
"values": [
"Default Title"
]
},
{
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"id": "01k74jqmb9636cxzhygn73nkj8",
"metadata": null,
"position": 1,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"title": "Default Title",
"updated_at": "2025-10-09T13:31:56.000000Z",
"values": [
"Default Title"
]
}
],
"professionals": [],
"published": 1,
"remaining_stocks": null,
"supplier_id": null,
"tags": [
{
"company_id": "01k7464hqksr4f99rp3ff7x2jz",
"created_at": "2025-10-09T09:57:33.000000Z",
"id": "01k746f3hn5q8z1kw9m69v1h6a",
"name": "TAG NOUVEAU 1",
"pivot": {
"created_at": "2025-10-09T13:31:56.000000Z",
"tag_id": "01k746f3hn5q8z1kw9m69v1h6a",
"taggable_id": "01k74jk695pe50w3vmd5nz3w2q",
"taggable_type": "App\\Models\\Product",
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"updated_at": "2025-10-09T09:57:33.000000Z"
},
{
"company_id": "01k7464hqksr4f99rp3ff7x2jz",
"created_at": "2025-10-09T09:57:33.000000Z",
"id": "01k746f3jd4tc7z3jkdf5nm4bw",
"name": "TAG NOUVEAU 2",
"pivot": {
"created_at": "2025-10-09T13:31:56.000000Z",
"tag_id": "01k746f3jd4tc7z3jkdf5nm4bw",
"taggable_id": "01k74jk695pe50w3vmd5nz3w2q",
"taggable_type": "App\\Models\\Product",
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"updated_at": "2025-10-09T09:57:33.000000Z"
}
],
"title": "Coupe mixte",
"type": "service",
"updated_at": "2025-10-09T13:29:30.000000Z",
"variants": [
{
"barcode": null,
"base_title": "Default Title",
"buffer_minutes": 10,
"compare_at_price": null,
"composite_stocks": [],
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"estimated_quantity": null,
"estimated_quantity_by_warehouse": [],
"follow_stock": 0,
"id": "01k74jk69y8ff2n7b1kxdy6byv",
"image_id": null,
"load_product": false,
"metadata": null,
"min_order_quantity": 1,
"options": [
0
],
"position": 1,
"price": 10,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"professionals": [],
"service": {
"buffer_minutes": 10,
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"id": "01k74jk6aryht2p5hqa66tr8bd",
"metadata": null,
"product_variant_id": "01k74jk69y8ff2n7b1kxdy6byv",
"professionals": [],
"updated_at": "2025-10-09T13:29:30.000000Z"
},
"service_id": "01k74jk6aryht2p5hqa66tr8bd",
"sku": null,
"stocks": [],
"supplierproduct": null,
"taxable": 1,
"title": "Default Title",
"updated_at": "2025-10-09T13:29:30.000000Z",
"whatsapp_product_id": null
},
{
"barcode": null,
"base_title": "Default Title",
"buffer_minutes": 10,
"compare_at_price": null,
"composite_stocks": [],
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"estimated_quantity": null,
"estimated_quantity_by_warehouse": [],
"follow_stock": 0,
"id": "01k74jqm9sb7ht6mqqbng08kmb",
"image_id": null,
"load_product": false,
"metadata": null,
"min_order_quantity": 1,
"options": [
0
],
"position": 1,
"price": 1000,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"professionals": [],
"service": {
"buffer_minutes": 10,
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"id": "01k74jqmajfa8y0z9m5cw9hhw4",
"metadata": null,
"product_variant_id": "01k74jqm9sb7ht6mqqbng08kmb",
"professionals": [],
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"service_id": "01k74jqmajfa8y0z9m5cw9hhw4",
"sku": null,
"stocks": [],
"supplierproduct": null,
"taxable": 1,
"title": "Default Title",
"updated_at": "2025-10-09T13:31:56.000000Z",
"whatsapp_product_id": null
}
],
"variants_count": 2,
"vendor": null
}{
"exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
"line": 669,
"message": "No query results for model [App\\Models\\Product] 01k74jk695pe50w3vmd5nz3w2",
"trace": [
{
"class": "Illuminate\\Foundation\\Exceptions\\Handler",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
"function": "prepareException",
"line": 617,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Exceptions\\Handler",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"function": "render",
"line": 51,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handleException",
"line": 224,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 166,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
"function": "handleRequest",
"line": 129,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
"function": "handleRequestUsingNamedLimiter",
"line": 90,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 63,
"type": "->"
},
{
"class": "Illuminate\\Auth\\Middleware\\Authenticate",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/app/Http/Middleware/RequestTimingMiddleware.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 42,
"type": "->"
},
{
"class": "App\\Http\\Middleware\\RequestTimingMiddleware",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 137,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"function": "then",
"line": 821,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Router",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"function": "runRouteWithinStack",
"line": 800,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Router",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"function": "runRoute",
"line": 764,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Router",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"function": "dispatchToRoute",
"line": 753,
"type": "->"
},
{
"class": "Illuminate\\Routing\\Router",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"function": "dispatch",
"line": 200,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Kernel",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
"line": 180,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php",
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
"line": 19,
"type": "->"
},
{
"class": "Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 21,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
"function": "handle",
"line": 31,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 21,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
"function": "handle",
"line": 51,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 27,
"type": "->"
},
{
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 109,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 61,
"type": "->"
},
{
"class": "Illuminate\\Http\\Middleware\\HandleCors",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 58,
"type": "->"
},
{
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "handle",
"line": 219,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
"line": 137,
"type": "->"
},
{
"class": "Illuminate\\Pipeline\\Pipeline",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"function": "then",
"line": 175,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Kernel",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"function": "sendRequestThroughRouter",
"line": 144,
"type": "->"
},
{
"class": "Illuminate\\Foundation\\Http\\Kernel",
"file": "/home/rushclin/Documents/workspaces/genuka/genuka-api/public/index.php",
"function": "handle",
"line": 51,
"type": "->"
},
{
"file": "/home/rushclin/.config/composer/vendor/genesisweb/valet-linux-plus/server.php",
"function": "require_once",
"line": 106
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Example:
"{{companyId}}"
Path Parameters
Response
200 OK
Example:
10
Example:
"01k7464hqksr4f99rp3ff7x2jz"
Example:
"Coupe de cheveux mixte pour hommes et femmes."
Example:
"2025-10-09T13:29:30.000000Z"
Example:
50
Show child attributes
Show child attributes
Example:
false
Example:
"coupe-mixte"
Example:
true
Example:
"01k74jk695pe50w3vmd5nz3w2q"
Example:
1
Example:
1
Example:
[]
Example:
[]
Show child attributes
Show child attributes
Example:
10
Show child attributes
Show child attributes
Example:
[
{
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"id": "01k74jk6c4x17tt8bzkfne0py4",
"metadata": null,
"position": 1,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"title": "Default Title",
"updated_at": "2025-10-09T13:29:30.000000Z",
"values": ["Default Title"]
},
{
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"id": "01k74jqmb9636cxzhygn73nkj8",
"metadata": null,
"position": 1,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"title": "Default Title",
"updated_at": "2025-10-09T13:31:56.000000Z",
"values": ["Default Title"]
}
]
Example:
[]
Example:
1
Show child attributes
Show child attributes
Example:
[
{
"company_id": "01k7464hqksr4f99rp3ff7x2jz",
"created_at": "2025-10-09T09:57:33.000000Z",
"id": "01k746f3hn5q8z1kw9m69v1h6a",
"name": "TAG NOUVEAU 1",
"pivot": {
"created_at": "2025-10-09T13:31:56.000000Z",
"tag_id": "01k746f3hn5q8z1kw9m69v1h6a",
"taggable_id": "01k74jk695pe50w3vmd5nz3w2q",
"taggable_type": "App\\Models\\Product",
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"updated_at": "2025-10-09T09:57:33.000000Z"
},
{
"company_id": "01k7464hqksr4f99rp3ff7x2jz",
"created_at": "2025-10-09T09:57:33.000000Z",
"id": "01k746f3jd4tc7z3jkdf5nm4bw",
"name": "TAG NOUVEAU 2",
"pivot": {
"created_at": "2025-10-09T13:31:56.000000Z",
"tag_id": "01k746f3jd4tc7z3jkdf5nm4bw",
"taggable_id": "01k74jk695pe50w3vmd5nz3w2q",
"taggable_type": "App\\Models\\Product",
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"updated_at": "2025-10-09T09:57:33.000000Z"
}
]
Example:
"Coupe mixte"
Example:
"service"
Example:
"2025-10-09T13:29:30.000000Z"
Show child attributes
Show child attributes
Example:
[
{
"barcode": null,
"base_title": "Default Title",
"buffer_minutes": 10,
"compare_at_price": null,
"composite_stocks": [],
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"estimated_quantity": null,
"estimated_quantity_by_warehouse": [],
"follow_stock": 0,
"id": "01k74jk69y8ff2n7b1kxdy6byv",
"image_id": null,
"load_product": false,
"metadata": null,
"min_order_quantity": 1,
"options": [0],
"position": 1,
"price": 10,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"professionals": [],
"service": {
"buffer_minutes": 10,
"created_at": "2025-10-09T13:29:30.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"id": "01k74jk6aryht2p5hqa66tr8bd",
"metadata": null,
"product_variant_id": "01k74jk69y8ff2n7b1kxdy6byv",
"professionals": [],
"updated_at": "2025-10-09T13:29:30.000000Z"
},
"service_id": "01k74jk6aryht2p5hqa66tr8bd",
"sku": null,
"stocks": [],
"supplierproduct": null,
"taxable": 1,
"title": "Default Title",
"updated_at": "2025-10-09T13:29:30.000000Z",
"whatsapp_product_id": null
},
{
"barcode": null,
"base_title": "Default Title",
"buffer_minutes": 10,
"compare_at_price": null,
"composite_stocks": [],
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"estimated_quantity": null,
"estimated_quantity_by_warehouse": [],
"follow_stock": 0,
"id": "01k74jqm9sb7ht6mqqbng08kmb",
"image_id": null,
"load_product": false,
"metadata": null,
"min_order_quantity": 1,
"options": [0],
"position": 1,
"price": 1000,
"product_id": "01k74jk695pe50w3vmd5nz3w2q",
"professionals": [],
"service": {
"buffer_minutes": 10,
"created_at": "2025-10-09T13:31:56.000000Z",
"deleted_at": null,
"deposit": null,
"duration_minutes": 50,
"id": "01k74jqmajfa8y0z9m5cw9hhw4",
"metadata": null,
"product_variant_id": "01k74jqm9sb7ht6mqqbng08kmb",
"professionals": [],
"updated_at": "2025-10-09T13:31:56.000000Z"
},
"service_id": "01k74jqmajfa8y0z9m5cw9hhw4",
"sku": null,
"stocks": [],
"supplierproduct": null,
"taxable": 1,
"title": "Default Title",
"updated_at": "2025-10-09T13:31:56.000000Z",
"whatsapp_product_id": null
}
]
Example:
2
⌘I
