Sibill Product API
The Product API from Sibill — 2 operation(s) for product.
The Product API from Sibill — 2 operation(s) for product.
openapi: 3.0.0
info:
title: Sibill Integration Account Product API
version: 1.0.0
x-logo:
altText: Sibill logo
backgroundColor: '#FFFFFF'
url: https://sibill.com/wp-content/uploads/2022/12/logo-sibill.svg
servers:
- url: http://integration.app.svc.cluster.local:4000
variables: {}
security: []
tags:
- name: Product
paths:
/api/v1/companies/{company_id}/products:
get:
callbacks: {}
description: 'The return value is paginated. By default the response contains 25 elements per page but can be instructed to return more elements per page.
A cursor is needed to traverse the results.
'
operationId: SibillWeb.Integration.V1.ProductsController.index
parameters:
- description: The company the products belong to
in: path
name: company_id
required: true
schema:
type: string
- description: The page size
in: query
name: page_size
required: false
schema:
type: integer
- description: 'The pagination cursor. A cursor is used to paginate through a large set of data.
It is a unique identifier that represents a specific position in the dataset.
'
in: query
name: cursor
required: false
schema:
type: string
- description: 'List of filters on the resource. Currently the fields that allow to be filtered are: `code`, `description`, `search`'
in: query
name: filter
required: false
schema:
type: object
- description: 'Fields for which we can order the results. Sortable fields: `code`, `description`'
in: query
name: sort
required: false
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProductList'
description: Ok
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Not found
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Too Many Requests
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Internal Server Error
security:
- authorization: []
summary: Get the list of products
tags:
- Product
x-codeSamples:
- label: ⚡ cURL
lang: Shell
source: "base_url=\"http://example.com\" # Replace with the correct Sibill integration API host\n\ncurl --request GET \\\n --url ${base_url}/api/v1/companies/:company_id/products \\\n --header \"Authorization: Bearer ${authorization_token}\"\n"
- label: 🌐 HTTP
lang: HTTP
source: 'GET /api/v1/companies/:company_id/products HTTP/1.1
Host: example.com # Replace with the correct Sibill integration API host
Authorization: Bearer ${authorization_token}
'
- label: 💜 Elixir
lang: Elixir
source: 'Mix.install([:req])
base_url = "http://example.com" # Replace with the correct Sibill integration API host
url = base_url <> "/api/v1/companies/:company_id/products"
headers = [{"Authorization", "Bearer ${authorization_token}"}]
Req.get(url, headers: headers)
'
- label: 🐍 Python
lang: Python
source: 'import requests
base_url = "http://example.com" # Replace with the correct Sibill integration API host
url = base_url + "/api/v1/companies/:company_id/products"
headers = {"Authorization": "Bearer ${authorization_token}"}
response = requests.get(url, headers=headers)
print(response.text)
'
- label: ☕ Java
lang: Java
source: "import java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.net.URI;\n\nString base_url = \"http://example.com\"; // Replace with the correct Sibill integration API host\nString url = base_url + \"/api/v1/companies/:company_id/products\";\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(url))\n .header(\"Authorization\", \"Bearer ${authorization_token}\")\n .GET()\n .build();\n\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());\n"
- label: 🐘 PHP
lang: PHP
source: "<?php\n\n$url = \"http://example.com/api/v1/companies/:company_id/products\"; // Replace with the correct Sibill integration API host\n\n$ch = curl_init($url);\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"GET\");\n\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n \"Authorization: Bearer ${authorization_token}\"\n]);\n\n$response = curl_exec($ch);\n\nif (curl_errno($ch)) {\n echo 'Curl error: ' . curl_error($ch);\n} else {\n echo 'Response:' . PHP_EOL;\n echo $response;\n}\n\ncurl_close($ch);\n"
post:
callbacks: {}
operationId: SibillWeb.Integration.V1.ProductsController.create
parameters:
- description: The company the product belongs to
in: path
name: company_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProductCreate'
description: Product
required: false
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/ProductData'
description: Product created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Bad request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Not found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Unprocessable Entity
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Too Many Requests
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Internal Server Error
security:
- authorization: []
summary: Create a new product
tags:
- Product
x-codeSamples:
- label: ⚡ cURL
lang: Shell
source: "base_url=\"http://example.com\" # Replace with the correct Sibill integration API host\n\ncurl --request POST \\\n --url ${base_url}/api/v1/companies/:company_id/products \\\n --header \"Authorization: Bearer ${authorization_token}\" \\\n --header \"Content-Type: application/json\" \\\n --data '${your payload here}'\n"
- label: 🌐 HTTP
lang: HTTP
source: 'POST /api/v1/companies/:company_id/products HTTP/1.1
Host: example.com # Replace with the correct Sibill integration API host
Authorization: Bearer ${authorization_token}
Content-Type: application/json
${your payload here}
'
- label: 💜 Elixir
lang: Elixir
source: 'Mix.install([:req])
base_url = "http://example.com" # Replace with the correct Sibill integration API host
url = base_url <> "/api/v1/companies/:company_id/products"
headers = [{"Authorization", "Bearer ${authorization_token}"}, {"Content-Type", "application/json"}]
payload = ${your payload here}
Req.post(url, headers: headers, body: payload)
'
- label: 🐍 Python
lang: Python
source: 'import requests
base_url = "http://example.com" # Replace with the correct Sibill integration API host
url = base_url + "/api/v1/companies/:company_id/products"
headers = {"Authorization": "Bearer ${authorization_token}", "Content-Type": "application/json"}
payload = ${your payload here}
response = requests.post(url, headers=headers, json=payload)
print(response.text)
'
- label: ☕ Java
lang: Java
source: "import java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.net.URI;\n\nString base_url = \"http://example.com\"; // Replace with the correct Sibill integration API host\nString url = base_url + \"/api/v1/companies/:company_id/products\";\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(url))\n .header(\"Authorization\", \"Bearer ${authorization_token}\")\n .header(\"Content-Type\", \"application/json\")\n .POST(HttpRequest.BodyPublishers.ofString(${your payload here}))\n .build();\n\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());\n"
- label: 🐘 PHP
lang: PHP
source: "<?php\n\n$url = \"http://example.com/api/v1/companies/:company_id/products\"; // Replace with the correct Sibill integration API host\n\n$ch = curl_init($url);\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"POST\");\n\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n \"Authorization: Bearer ${authorization_token}\",\n \"Content-Type: application/json\"\n]);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, <<<BODY\n${your payload here}\nBODY\n);\n\n$response = curl_exec($ch);\n\nif (curl_errno($ch)) {\n echo 'Curl error: ' . curl_error($ch);\n} else {\n echo 'Response:' . PHP_EOL;\n echo $response;\n}\n\ncurl_close($ch);\n"
/api/v1/companies/{company_id}/products/{id}:
delete:
callbacks: {}
operationId: SibillWeb.Integration.V1.ProductsController.delete
parameters:
- description: The company the product belongs to
in: path
name: company_id
required: true
schema:
type: string
- description: The product identifier
in: path
name: id
required: true
schema:
type: string
responses:
'204':
content:
application/json: {}
description: Product deleted
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Not found
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Too Many Requests
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Internal Server Error
security:
- authorization: []
summary: Delete a product
tags:
- Product
x-codeSamples:
- label: ⚡ cURL
lang: Shell
source: "base_url=\"http://example.com\" # Replace with the correct Sibill integration API host\n\ncurl --request DELETE \\\n --url ${base_url}/api/v1/companies/:company_id/products/:product_id \\\n --header \"Authorization: Bearer ${authorization_token}\"\n"
- label: 🌐 HTTP
lang: HTTP
source: 'DELETE /api/v1/companies/:company_id/products/:product_id HTTP/1.1
Host: example.com # Replace with the correct Sibill integration API host
Authorization: Bearer ${authorization_token}
'
- label: 💜 Elixir
lang: Elixir
source: 'Mix.install([:req])
base_url = "http://example.com" # Replace with the correct Sibill integration API host
url = base_url <> "/api/v1/companies/:company_id/products/:product_id"
headers = [{"Authorization", "Bearer ${authorization_token}"}]
Req.delete(url, headers: headers)
'
- label: 🐍 Python
lang: Python
source: 'import requests
base_url = "http://example.com" # Replace with the correct Sibill integration API host
url = base_url + "/api/v1/companies/:company_id/products/:product_id"
headers = {"Authorization": "Bearer ${authorization_token}"}
response = requests.delete(url, headers=headers)
print(response.text)
'
- label: ☕ Java
lang: Java
source: "import java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.net.URI;\n\nString base_url = \"http://example.com\"; // Replace with the correct Sibill integration API host\nString url = base_url + \"/api/v1/companies/:company_id/products/:product_id\";\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(url))\n .header(\"Authorization\", \"Bearer ${authorization_token}\")\n .DELETE()\n .build();\n\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());\n"
- label: 🐘 PHP
lang: PHP
source: "<?php\n\n$url = \"http://example.com/api/v1/companies/:company_id/products/:product_id\"; // Replace with the correct Sibill integration API host\n\n$ch = curl_init($url);\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n \"Authorization: Bearer ${authorization_token}\"\n]);\n\n$response = curl_exec($ch);\n\nif (curl_errno($ch)) {\n echo 'Curl error: ' . curl_error($ch);\n} else {\n echo 'Response:' . PHP_EOL;\n echo $response;\n}\n\ncurl_close($ch);\n"
get:
callbacks: {}
operationId: SibillWeb.Integration.V1.ProductsController.show
parameters:
- description: The company the product belongs to
in: path
name: company_id
required: true
schema:
type: string
- description: The product identifier
in: path
name: id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProductData'
description: Ok
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Not found
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Too Many Requests
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Internal Server Error
security:
- authorization: []
summary: Get a specific product
tags:
- Product
x-codeSamples:
- label: ⚡ cURL
lang: Shell
source: "base_url=\"http://example.com\" # Replace with the correct Sibill integration API host\n\ncurl --request GET \\\n --url ${base_url}/api/v1/companies/:company_id/products/:product_id \\\n --header \"Authorization: Bearer ${authorization_token}\"\n"
- label: 🌐 HTTP
lang: HTTP
source: 'GET /api/v1/companies/:company_id/products/:product_id HTTP/1.1
Host: example.com # Replace with the correct Sibill integration API host
Authorization: Bearer ${authorization_token}
'
- label: 💜 Elixir
lang: Elixir
source: 'Mix.install([:req])
base_url = "http://example.com" # Replace with the correct Sibill integration API host
url = base_url <> "/api/v1/companies/:company_id/products/:product_id"
headers = [{"Authorization", "Bearer ${authorization_token}"}]
Req.get(url, headers: headers)
'
- label: 🐍 Python
lang: Python
source: 'import requests
base_url = "http://example.com" # Replace with the correct Sibill integration API host
url = base_url + "/api/v1/companies/:company_id/products/:product_id"
headers = {"Authorization": "Bearer ${authorization_token}"}
response = requests.get(url, headers=headers)
print(response.text)
'
- label: ☕ Java
lang: Java
source: "import java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.net.URI;\n\nString base_url = \"http://example.com\"; // Replace with the correct Sibill integration API host\nString url = base_url + \"/api/v1/companies/:company_id/products/:product_id\";\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(url))\n .header(\"Authorization\", \"Bearer ${authorization_token}\")\n .GET()\n .build();\n\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());\n"
- label: 🐘 PHP
lang: PHP
source: "<?php\n\n$url = \"http://example.com/api/v1/companies/:company_id/products/:product_id\"; // Replace with the correct Sibill integration API host\n\n$ch = curl_init($url);\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"GET\");\n\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n \"Authorization: Bearer ${authorization_token}\"\n]);\n\n$response = curl_exec($ch);\n\nif (curl_errno($ch)) {\n echo 'Curl error: ' . curl_error($ch);\n} else {\n echo 'Response:' . PHP_EOL;\n echo $response;\n}\n\ncurl_close($ch);\n"
patch:
callbacks: {}
operationId: SibillWeb.Integration.V1.ProductsController.update
parameters:
- description: The company the product belongs to
in: path
name: company_id
required: true
schema:
type: string
- description: The product identifier
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProductUpdate'
description: Product
required: false
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProductData'
description: Product updated
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Bad request
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Not found
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Unprocessable Entity
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Too Many Requests
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationError'
description: Internal Server Error
security:
- authorization: []
summary: Update an existing product
tags:
- Product
x-codeSamples:
- label: ⚡ cURL
lang: Shell
source: "base_url=\"http://example.com\" # Replace with the correct Sibill integration API host\n\ncurl --request PATCH \\\n --url ${base_url}/api/v1/companies/:company_id/products/:product_id \\\n --header \"Authorization: Bearer ${authorization_token}\" \\\n --header \"Content-Type: application/json\" \\\n --data '${your payload here}'\n"
- label: 🌐 HTTP
lang: HTTP
source: 'PATCH /api/v1/companies/:company_id/products/:product_id HTTP/1.1
Host: example.com # Replace with the correct Sibill integration API host
Authorization: Bearer ${authorization_token}
Content-Type: application/json
${your payload here}
'
- label: 💜 Elixir
lang: Elixir
source: 'Mix.install([:req])
base_url = "http://example.com" # Replace with the correct Sibill integration API host
url = base_url <> "/api/v1/companies/:company_id/products/:product_id"
headers = [{"Authorization", "Bearer ${authorization_token}"}, {"Content-Type", "application/json"}]
payload = ${your payload here}
Req.patch(url, headers: headers, body: payload)
'
- label: 🐍 Python
lang: Python
source: 'import requests
base_url = "http://example.com" # Replace with the correct Sibill integration API host
url = base_url + "/api/v1/companies/:company_id/products/:product_id"
headers = {"Authorization": "Bearer ${authorization_token}", "Content-Type": "application/json"}
payload = ${your payload here}
response = requests.patch(url, headers=headers, json=payload)
print(response.text)
'
- label: ☕ Java
lang: Java
source: "import java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.net.URI;\n\nString base_url = \"http://example.com\"; // Replace with the correct Sibill integration API host\nString url = base_url + \"/api/v1/companies/:company_id/products/:product_id\";\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(url))\n .header(\"Authorization\", \"Bearer ${authorization_token}\")\n .header(\"Content-Type\", \"application/json\")\n .PATCH(HttpRequest.BodyPublishers.ofString(${your payload here}))\n .build();\n\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());\n"
- label: 🐘 PHP
lang: PHP
source: "<?php\n\n$url = \"http://example.com/api/v1/companies/:company_id/products/:product_id\"; // Replace with the correct Sibill integration API host\n\n$ch = curl_init($url);\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, \"PATCH\");\n\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n \"Authorization: Bearer ${authorization_token}\",\n \"Content-Type: application/json\"\n]);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, <<<BODY\n${your payload here}\nBODY\n);\n\n$response = curl_exec($ch);\n\nif (curl_errno($ch)) {\n echo 'Curl error: ' . curl_error($ch);\n} else {\n echo 'Response:' . PHP_EOL;\n echo $response;\n}\n\ncurl_close($ch);\n"
components:
schemas:
Page:
properties:
cursor:
description: A cursor that can be used to fetch the next page of results
nullable: true
type: string
size:
description: The current page size
type: integer
title: Page
type: object
ProductSchema:
description: Product data representation
properties:
code:
description: The internal code that identifies the product
nullable: true
readOnly: true
type: string
description:
description: The description of the product
readOnly: true
type: string
id:
description: The id of the product
example: 019f8035-9d35-75c4-a2e2-79fcab6703c5
format: uuid
readOnly: true
type: string
tax_exemption:
description: The tax exemption code, required when `vat_percentage` is `0`
nullable: true
readOnly: true
type: string
unit_of_measure:
description: The unit of measure of the product (e.g. `pcs`, `kg`, `h`)
nullable: true
readOnly: true
type: string
unit_price:
description: Money representation through amount and currency properties
example:
amount: '12.3'
currency: EUR
properties:
amount:
minLength: 1
pattern: ^[0-9]*\.?[0-9]+$
readOnly: true
type: string
currency:
enum:
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYN
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CLP
- CNY
- COP
- COU
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- EUR
- FJD
- FKP
- GBP
- GEL
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IQD
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRU
- MUR
- MVR
- MWK
- MXN
- MXV
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SRD
- SSP
- STN
- SVC
- SYP
- SZL
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UGX
- USD
- USN
- UYI
- UYU
- UYW
- UZS
- VES
- VND
- VUV
- WST
- XAF
- XAG
- XAU
- XBA
- XBB
- XBC
- XBD
- XCD
- XDR
- XOF
- XPD
- XPF
- XPT
- XSU
- XTS
- XUA
- XXX
- YER
- ZAR
- ZMW
- ZWL
readOnly: true
type: string
required:
- currency
- amount
type: object
vat_percentage:
description: The VAT percentage applied to the product
format: float
readOnly: true
type: number
title: ProductSchema
type: object
ProductUpdate:
description: Update product data object
properties:
code:
description: The internal code that identifies the product
nullable: true
type: string
description:
description: The description of the product
type: string
tax_exemption:
description: The tax exemption code, required when `vat_percentage` is `0`
nullable: true
type: string
unit_of_measure:
description: The unit of measure of the product (e.g. `pcs`, `kg`, `h`)
nullable: true
type: string
unit_price:
description: Money representation through amount and currency properties
example:
amount: '12.3'
currency: EUR
properties:
amount:
minLength: 1
pattern: ^[0-9]*\.?[0-9]+$
readOnly: false
type: string
currency:
enum:
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYN
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CL
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sibill/refs/heads/main/openapi/sibill-product-api-openapi.yml