curl --request POST \
--url https://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'x-api-key: <api-key>' \
--data '
{
"id": "classic-meal",
"name": "Classic Meal",
"category_id": "meals",
"price": {
"amount": 12.9,
"currency": "EUR"
},
"lines": [
{
"id": "main",
"product_ids": [
"<string>"
],
"name": "<string>",
"min_selections": 1,
"max_selections": 1
}
],
"description": "<string>",
"image_url": "<string>",
"disabled": false,
"out_of_stock": false,
"restrictions": [],
"price_overrides": []
}
'import requests
url = "https://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles"
payload = {
"id": "classic-meal",
"name": "Classic Meal",
"category_id": "meals",
"price": {
"amount": 12.9,
"currency": "EUR"
},
"lines": [
{
"id": "main",
"product_ids": ["<string>"],
"name": "<string>",
"min_selections": 1,
"max_selections": 1
}
],
"description": "<string>",
"image_url": "<string>",
"disabled": False,
"out_of_stock": False,
"restrictions": [],
"price_overrides": []
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
id: 'classic-meal',
name: 'Classic Meal',
category_id: 'meals',
price: {amount: 12.9, currency: 'EUR'},
lines: [
{
id: 'main',
product_ids: ['<string>'],
name: '<string>',
min_selections: 1,
max_selections: 1
}
],
description: '<string>',
image_url: '<string>',
disabled: false,
out_of_stock: false,
restrictions: [],
price_overrides: []
})
};
fetch('https://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles', 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://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles",
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([
'id' => 'classic-meal',
'name' => 'Classic Meal',
'category_id' => 'meals',
'price' => [
'amount' => 12.9,
'currency' => 'EUR'
],
'lines' => [
[
'id' => 'main',
'product_ids' => [
'<string>'
],
'name' => '<string>',
'min_selections' => 1,
'max_selections' => 1
]
],
'description' => '<string>',
'image_url' => '<string>',
'disabled' => false,
'out_of_stock' => false,
'restrictions' => [
],
'price_overrides' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"x-api-key: <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://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles"
payload := strings.NewReader("{\n \"id\": \"classic-meal\",\n \"name\": \"Classic Meal\",\n \"category_id\": \"meals\",\n \"price\": {\n \"amount\": 12.9,\n \"currency\": \"EUR\"\n },\n \"lines\": [\n {\n \"id\": \"main\",\n \"product_ids\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"min_selections\": 1,\n \"max_selections\": 1\n }\n ],\n \"description\": \"<string>\",\n \"image_url\": \"<string>\",\n \"disabled\": false,\n \"out_of_stock\": false,\n \"restrictions\": [],\n \"price_overrides\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("x-api-key", "<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://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles")
.header("Idempotency-Key", "<idempotency-key>")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"classic-meal\",\n \"name\": \"Classic Meal\",\n \"category_id\": \"meals\",\n \"price\": {\n \"amount\": 12.9,\n \"currency\": \"EUR\"\n },\n \"lines\": [\n {\n \"id\": \"main\",\n \"product_ids\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"min_selections\": 1,\n \"max_selections\": 1\n }\n ],\n \"description\": \"<string>\",\n \"image_url\": \"<string>\",\n \"disabled\": false,\n \"out_of_stock\": false,\n \"restrictions\": [],\n \"price_overrides\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"classic-meal\",\n \"name\": \"Classic Meal\",\n \"category_id\": \"meals\",\n \"price\": {\n \"amount\": 12.9,\n \"currency\": \"EUR\"\n },\n \"lines\": [\n {\n \"id\": \"main\",\n \"product_ids\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"min_selections\": 1,\n \"max_selections\": 1\n }\n ],\n \"description\": \"<string>\",\n \"image_url\": \"<string>\",\n \"disabled\": false,\n \"out_of_stock\": false,\n \"restrictions\": [],\n \"price_overrides\": []\n}"
response = http.request(request)
puts response.read_body{
"id": "classic-meal",
"name": "Classic Meal",
"category_id": "meals",
"price": {
"amount": 12.9,
"currency": "EUR"
},
"disabled": false,
"out_of_stock": false,
"restrictions": [],
"price_overrides": [],
"lines": [
{
"id": "main",
"product_ids": [
"<string>"
],
"name": "<string>",
"min_selections": 1,
"max_selections": 1
}
],
"object": "bundle",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"image_url": "<string>"
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "<string>",
"request_id": "req_8f2c…",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "<string>",
"request_id": "req_8f2c…",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "<string>",
"request_id": "req_8f2c…",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "<string>",
"request_id": "req_8f2c…",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "<string>",
"request_id": "req_8f2c…",
"param": "<string>",
"details": {}
}
}Créer une formule
curl --request POST \
--url https://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'x-api-key: <api-key>' \
--data '
{
"id": "classic-meal",
"name": "Classic Meal",
"category_id": "meals",
"price": {
"amount": 12.9,
"currency": "EUR"
},
"lines": [
{
"id": "main",
"product_ids": [
"<string>"
],
"name": "<string>",
"min_selections": 1,
"max_selections": 1
}
],
"description": "<string>",
"image_url": "<string>",
"disabled": false,
"out_of_stock": false,
"restrictions": [],
"price_overrides": []
}
'import requests
url = "https://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles"
payload = {
"id": "classic-meal",
"name": "Classic Meal",
"category_id": "meals",
"price": {
"amount": 12.9,
"currency": "EUR"
},
"lines": [
{
"id": "main",
"product_ids": ["<string>"],
"name": "<string>",
"min_selections": 1,
"max_selections": 1
}
],
"description": "<string>",
"image_url": "<string>",
"disabled": False,
"out_of_stock": False,
"restrictions": [],
"price_overrides": []
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
id: 'classic-meal',
name: 'Classic Meal',
category_id: 'meals',
price: {amount: 12.9, currency: 'EUR'},
lines: [
{
id: 'main',
product_ids: ['<string>'],
name: '<string>',
min_selections: 1,
max_selections: 1
}
],
description: '<string>',
image_url: '<string>',
disabled: false,
out_of_stock: false,
restrictions: [],
price_overrides: []
})
};
fetch('https://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles', 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://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles",
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([
'id' => 'classic-meal',
'name' => 'Classic Meal',
'category_id' => 'meals',
'price' => [
'amount' => 12.9,
'currency' => 'EUR'
],
'lines' => [
[
'id' => 'main',
'product_ids' => [
'<string>'
],
'name' => '<string>',
'min_selections' => 1,
'max_selections' => 1
]
],
'description' => '<string>',
'image_url' => '<string>',
'disabled' => false,
'out_of_stock' => false,
'restrictions' => [
],
'price_overrides' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"x-api-key: <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://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles"
payload := strings.NewReader("{\n \"id\": \"classic-meal\",\n \"name\": \"Classic Meal\",\n \"category_id\": \"meals\",\n \"price\": {\n \"amount\": 12.9,\n \"currency\": \"EUR\"\n },\n \"lines\": [\n {\n \"id\": \"main\",\n \"product_ids\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"min_selections\": 1,\n \"max_selections\": 1\n }\n ],\n \"description\": \"<string>\",\n \"image_url\": \"<string>\",\n \"disabled\": false,\n \"out_of_stock\": false,\n \"restrictions\": [],\n \"price_overrides\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("x-api-key", "<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://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles")
.header("Idempotency-Key", "<idempotency-key>")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"classic-meal\",\n \"name\": \"Classic Meal\",\n \"category_id\": \"meals\",\n \"price\": {\n \"amount\": 12.9,\n \"currency\": \"EUR\"\n },\n \"lines\": [\n {\n \"id\": \"main\",\n \"product_ids\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"min_selections\": 1,\n \"max_selections\": 1\n }\n ],\n \"description\": \"<string>\",\n \"image_url\": \"<string>\",\n \"disabled\": false,\n \"out_of_stock\": false,\n \"restrictions\": [],\n \"price_overrides\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.chataigne.ai/v1/locations/{location_id}/catalogs/{catalog_id}/bundles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"classic-meal\",\n \"name\": \"Classic Meal\",\n \"category_id\": \"meals\",\n \"price\": {\n \"amount\": 12.9,\n \"currency\": \"EUR\"\n },\n \"lines\": [\n {\n \"id\": \"main\",\n \"product_ids\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"min_selections\": 1,\n \"max_selections\": 1\n }\n ],\n \"description\": \"<string>\",\n \"image_url\": \"<string>\",\n \"disabled\": false,\n \"out_of_stock\": false,\n \"restrictions\": [],\n \"price_overrides\": []\n}"
response = http.request(request)
puts response.read_body{
"id": "classic-meal",
"name": "Classic Meal",
"category_id": "meals",
"price": {
"amount": 12.9,
"currency": "EUR"
},
"disabled": false,
"out_of_stock": false,
"restrictions": [],
"price_overrides": [],
"lines": [
{
"id": "main",
"product_ids": [
"<string>"
],
"name": "<string>",
"min_selections": 1,
"max_selections": 1
}
],
"object": "bundle",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"image_url": "<string>"
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "<string>",
"request_id": "req_8f2c…",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "<string>",
"request_id": "req_8f2c…",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "<string>",
"request_id": "req_8f2c…",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "<string>",
"request_id": "req_8f2c…",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "invalid_request_error",
"code": "resource_missing",
"message": "<string>",
"request_id": "req_8f2c…",
"param": "<string>",
"details": {}
}
}Autorisations
Clé API d’établissement ou d’organisation.
En-têtes
Clé unique qui permet de relancer cette création sans risque ; les rejeux retournent la réponse initiale.
Corps
"classic-meal"
"Classic Meal"
"meals"
Show child attributes
Show child attributes
1Show child attributes
Show child attributes
Indique si la ressource est masquée et ne peut pas être commandée.
Indique si la ressource est temporairement indisponible tout en restant visible.
Fenêtres de disponibilité. La ressource est disponible dès qu’une restriction correspond.
100Show child attributes
Show child attributes
Prix conditionnels. Le prix correspondant aux conditions les plus spécifiques l’emporte.
100Show child attributes
Show child attributes
Réponse
La formule créée.
"classic-meal"
"Classic Meal"
"meals"
Show child attributes
Show child attributes
Indique si la ressource est masquée et ne peut pas être commandée.
Indique si la ressource est temporairement indisponible tout en restant visible.
Fenêtres de disponibilité. La ressource est disponible dès qu’une restriction correspond.
100Show child attributes
Show child attributes
Prix conditionnels. Le prix correspondant aux conditions les plus spécifiques l’emporte.
100Show child attributes
Show child attributes
1Show child attributes
Show child attributes
bundle