curl --request PATCH \
--url https://api.contracting.kukkingu.software/api/v1/billables/{billableId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'tenant-id: <tenant-id>' \
--data '
{
"referenceType": "JIRA",
"referenceId": "PROJ-123",
"name": "Monthly subscription",
"description": "Monthly subscription for service X.",
"metadata": {
"project": "Alpha",
"priority": "High"
},
"quantity": 10,
"amountMinor": 5000,
"currencyCode": "EUR",
"order": 13
}
'import requests
url = "https://api.contracting.kukkingu.software/api/v1/billables/{billableId}"
payload = {
"referenceType": "JIRA",
"referenceId": "PROJ-123",
"name": "Monthly subscription",
"description": "Monthly subscription for service X.",
"metadata": {
"project": "Alpha",
"priority": "High"
},
"quantity": 10,
"amountMinor": 5000,
"currencyCode": "EUR",
"order": 13
}
headers = {
"tenant-id": "<tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'tenant-id': '<tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
referenceType: 'JIRA',
referenceId: 'PROJ-123',
name: 'Monthly subscription',
description: 'Monthly subscription for service X.',
metadata: {project: 'Alpha', priority: 'High'},
quantity: 10,
amountMinor: 5000,
currencyCode: 'EUR',
order: 13
})
};
fetch('https://api.contracting.kukkingu.software/api/v1/billables/{billableId}', 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.contracting.kukkingu.software/api/v1/billables/{billableId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'referenceType' => 'JIRA',
'referenceId' => 'PROJ-123',
'name' => 'Monthly subscription',
'description' => 'Monthly subscription for service X.',
'metadata' => [
'project' => 'Alpha',
'priority' => 'High'
],
'quantity' => 10,
'amountMinor' => 5000,
'currencyCode' => 'EUR',
'order' => 13
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"tenant-id: <tenant-id>"
],
]);
$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.contracting.kukkingu.software/api/v1/billables/{billableId}"
payload := strings.NewReader("{\n \"referenceType\": \"JIRA\",\n \"referenceId\": \"PROJ-123\",\n \"name\": \"Monthly subscription\",\n \"description\": \"Monthly subscription for service X.\",\n \"metadata\": {\n \"project\": \"Alpha\",\n \"priority\": \"High\"\n },\n \"quantity\": 10,\n \"amountMinor\": 5000,\n \"currencyCode\": \"EUR\",\n \"order\": 13\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("tenant-id", "<tenant-id>")
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.patch("https://api.contracting.kukkingu.software/api/v1/billables/{billableId}")
.header("tenant-id", "<tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"referenceType\": \"JIRA\",\n \"referenceId\": \"PROJ-123\",\n \"name\": \"Monthly subscription\",\n \"description\": \"Monthly subscription for service X.\",\n \"metadata\": {\n \"project\": \"Alpha\",\n \"priority\": \"High\"\n },\n \"quantity\": 10,\n \"amountMinor\": 5000,\n \"currencyCode\": \"EUR\",\n \"order\": 13\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.contracting.kukkingu.software/api/v1/billables/{billableId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["tenant-id"] = '<tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"referenceType\": \"JIRA\",\n \"referenceId\": \"PROJ-123\",\n \"name\": \"Monthly subscription\",\n \"description\": \"Monthly subscription for service X.\",\n \"metadata\": {\n \"project\": \"Alpha\",\n \"priority\": \"High\"\n },\n \"quantity\": 10,\n \"amountMinor\": 5000,\n \"currencyCode\": \"EUR\",\n \"order\": 13\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "bil_eym9hcqlh1m7v3d36blf0vfx",
"invoice": "inv_mqxd1kc6bgtcc676xoqzax47",
"name": "Monthly subscription",
"quantity": 10,
"amountMinor": 5000,
"currencyCode": "EUR",
"createdAt": "2023-10-05T14:48:00.000Z",
"updatedAt": "2023-10-05T14:48:00.000Z",
"referenceType": "JIRA",
"referenceId": "PROJ-123",
"description": "Monthly subscription for service X.",
"metadata": {
"project": "Alpha",
"priority": "High"
},
"order": 13
}
}{
"error": "ValidationError",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>",
"constraint": "<string>"
}
]
}{
"error": "Unauthorized",
"message": "Unauthorized"
}{
"error": "Forbidden",
"message": "Forbidden"
}{
"error": "NotFound",
"message": "Not Found"
}Partially update billable
Partially updates an existing billable by its ID.
curl --request PATCH \
--url https://api.contracting.kukkingu.software/api/v1/billables/{billableId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'tenant-id: <tenant-id>' \
--data '
{
"referenceType": "JIRA",
"referenceId": "PROJ-123",
"name": "Monthly subscription",
"description": "Monthly subscription for service X.",
"metadata": {
"project": "Alpha",
"priority": "High"
},
"quantity": 10,
"amountMinor": 5000,
"currencyCode": "EUR",
"order": 13
}
'import requests
url = "https://api.contracting.kukkingu.software/api/v1/billables/{billableId}"
payload = {
"referenceType": "JIRA",
"referenceId": "PROJ-123",
"name": "Monthly subscription",
"description": "Monthly subscription for service X.",
"metadata": {
"project": "Alpha",
"priority": "High"
},
"quantity": 10,
"amountMinor": 5000,
"currencyCode": "EUR",
"order": 13
}
headers = {
"tenant-id": "<tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'tenant-id': '<tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
referenceType: 'JIRA',
referenceId: 'PROJ-123',
name: 'Monthly subscription',
description: 'Monthly subscription for service X.',
metadata: {project: 'Alpha', priority: 'High'},
quantity: 10,
amountMinor: 5000,
currencyCode: 'EUR',
order: 13
})
};
fetch('https://api.contracting.kukkingu.software/api/v1/billables/{billableId}', 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.contracting.kukkingu.software/api/v1/billables/{billableId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'referenceType' => 'JIRA',
'referenceId' => 'PROJ-123',
'name' => 'Monthly subscription',
'description' => 'Monthly subscription for service X.',
'metadata' => [
'project' => 'Alpha',
'priority' => 'High'
],
'quantity' => 10,
'amountMinor' => 5000,
'currencyCode' => 'EUR',
'order' => 13
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"tenant-id: <tenant-id>"
],
]);
$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.contracting.kukkingu.software/api/v1/billables/{billableId}"
payload := strings.NewReader("{\n \"referenceType\": \"JIRA\",\n \"referenceId\": \"PROJ-123\",\n \"name\": \"Monthly subscription\",\n \"description\": \"Monthly subscription for service X.\",\n \"metadata\": {\n \"project\": \"Alpha\",\n \"priority\": \"High\"\n },\n \"quantity\": 10,\n \"amountMinor\": 5000,\n \"currencyCode\": \"EUR\",\n \"order\": 13\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("tenant-id", "<tenant-id>")
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.patch("https://api.contracting.kukkingu.software/api/v1/billables/{billableId}")
.header("tenant-id", "<tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"referenceType\": \"JIRA\",\n \"referenceId\": \"PROJ-123\",\n \"name\": \"Monthly subscription\",\n \"description\": \"Monthly subscription for service X.\",\n \"metadata\": {\n \"project\": \"Alpha\",\n \"priority\": \"High\"\n },\n \"quantity\": 10,\n \"amountMinor\": 5000,\n \"currencyCode\": \"EUR\",\n \"order\": 13\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.contracting.kukkingu.software/api/v1/billables/{billableId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["tenant-id"] = '<tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"referenceType\": \"JIRA\",\n \"referenceId\": \"PROJ-123\",\n \"name\": \"Monthly subscription\",\n \"description\": \"Monthly subscription for service X.\",\n \"metadata\": {\n \"project\": \"Alpha\",\n \"priority\": \"High\"\n },\n \"quantity\": 10,\n \"amountMinor\": 5000,\n \"currencyCode\": \"EUR\",\n \"order\": 13\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "bil_eym9hcqlh1m7v3d36blf0vfx",
"invoice": "inv_mqxd1kc6bgtcc676xoqzax47",
"name": "Monthly subscription",
"quantity": 10,
"amountMinor": 5000,
"currencyCode": "EUR",
"createdAt": "2023-10-05T14:48:00.000Z",
"updatedAt": "2023-10-05T14:48:00.000Z",
"referenceType": "JIRA",
"referenceId": "PROJ-123",
"description": "Monthly subscription for service X.",
"metadata": {
"project": "Alpha",
"priority": "High"
},
"order": 13
}
}{
"error": "ValidationError",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>",
"constraint": "<string>"
}
]
}{
"error": "Unauthorized",
"message": "Unauthorized"
}{
"error": "Forbidden",
"message": "Forbidden"
}{
"error": "NotFound",
"message": "Not Found"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Specifies the tenant context for the request. All endpoints operate within this tenant scope.
"tnt_pfh0haxfpzowht3oi213cqos"
Path Parameters
Unique identifier of the billable.
"bil_eym9hcqlh1m7v3d36blf0vfx"
Body
Request body used to partially update an existing billable resource.
Request body used to partially update an existing billable resource.
Optional Billable Reference Type of the external system (e.g. JIRA, Github, etc.).
"JIRA"
Optional Billable Reference ID in the external system.
"PROJ-123"
Name of the billable.
1 - 255"Monthly subscription"
Description of the billable.
"Monthly subscription for service X."
Optional metadata associated with the billable.
Show child attributes
Show child attributes
{ "project": "Alpha", "priority": "High" }
Quantity of items.
x >= 010
Amount expressed in the minor unit (e.g., cents).
0 <= x <= 90071992547409915000
ISO 4217 currency code.
3"EUR"
Order of the resource for sorting purposes.
0 <= x <= 900719925474099113
Response
Default Response
Standard success response payload wrapped in a data property.
Billable resource returned by the API.
Show child attributes
Show child attributes