Update article
curl --request PATCH \
--url https://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"articleDescription": "<string>",
"articleDraft": {
"content": {},
"contentHtml": "<string>",
"contentMarkdown": "<string>",
"contentPlain": "<string>"
},
"articleFeatured": true,
"articleOrder": 5000,
"articleSlug": "<string>",
"articleTitle": "<string>",
"categoryID": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}"
payload = {
"articleDescription": "<string>",
"articleDraft": {
"content": {},
"contentHtml": "<string>",
"contentMarkdown": "<string>",
"contentPlain": "<string>"
},
"articleFeatured": True,
"articleOrder": 5000,
"articleSlug": "<string>",
"articleTitle": "<string>",
"categoryID": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
articleDescription: '<string>',
articleDraft: {
content: {},
contentHtml: '<string>',
contentMarkdown: '<string>',
contentPlain: '<string>'
},
articleFeatured: true,
articleOrder: 5000,
articleSlug: '<string>',
articleTitle: '<string>',
categoryID: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}', 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://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}",
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([
'articleDescription' => '<string>',
'articleDraft' => [
'content' => [
],
'contentHtml' => '<string>',
'contentMarkdown' => '<string>',
'contentPlain' => '<string>'
],
'articleFeatured' => true,
'articleOrder' => 5000,
'articleSlug' => '<string>',
'articleTitle' => '<string>',
'categoryID' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}"
payload := strings.NewReader("{\n \"articleDescription\": \"<string>\",\n \"articleDraft\": {\n \"content\": {},\n \"contentHtml\": \"<string>\",\n \"contentMarkdown\": \"<string>\",\n \"contentPlain\": \"<string>\"\n },\n \"articleFeatured\": true,\n \"articleOrder\": 5000,\n \"articleSlug\": \"<string>\",\n \"articleTitle\": \"<string>\",\n \"categoryID\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"articleDescription\": \"<string>\",\n \"articleDraft\": {\n \"content\": {},\n \"contentHtml\": \"<string>\",\n \"contentMarkdown\": \"<string>\",\n \"contentPlain\": \"<string>\"\n },\n \"articleFeatured\": true,\n \"articleOrder\": 5000,\n \"articleSlug\": \"<string>\",\n \"articleTitle\": \"<string>\",\n \"categoryID\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"articleDescription\": \"<string>\",\n \"articleDraft\": {\n \"content\": {},\n \"contentHtml\": \"<string>\",\n \"contentMarkdown\": \"<string>\",\n \"contentPlain\": \"<string>\"\n },\n \"articleFeatured\": true,\n \"articleOrder\": 5000,\n \"articleSlug\": \"<string>\",\n \"articleTitle\": \"<string>\",\n \"categoryID\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"article": {
"articleContent": {},
"articleContentHtml": "<string>",
"articleContentMarkdown": "<string>",
"articleContentPlain": "<string>",
"articleDescription": "<string>",
"articleDraft": {
"content": {},
"contentHtml": "<string>",
"contentMarkdown": "<string>",
"contentPlain": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedBy": "<string>"
},
"articleFeatured": true,
"articleID": "<string>",
"articleOrder": 123,
"articlePopularity": 123,
"articleSlug": "<string>",
"articleSlugHistory": [
"<string>"
],
"articleStatus": "draft",
"articleTitle": "<string>",
"articleVersion": 123,
"categoryID": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"deletedAt": "2023-11-07T05:31:56Z",
"helpdeskID": "<string>",
"publishedAt": "2023-11-07T05:31:56Z",
"publishedBy": "<string>",
"tenantID": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedBy": "<string>"
}
}{
"errors": [
{
"error": "MissingTenantIDError",
"error_code": 1001,
"message": "tenantID is required.",
"statusCode": 400
}
]
}{
"errors": [
{
"error": "HelpdeskNotFoundError",
"error_code": 1107,
"message": "No help center answers on this address.",
"statusCode": 404
}
]
}{
"errors": [
{
"error": "SlugAlreadyInUseError",
"error_code": 1110,
"message": "This slug is already in use in this help center.",
"statusCode": 409
}
]
}{
"errors": [
{
"error": "TenantNotConnectedError",
"error_code": 1000,
"message": "This tenant is not connected to the plugin.",
"statusCode": 422
}
]
}{
"errors": [
{
"error": "UnknownError",
"error_code": 5999,
"message": "For some unknown reason your request has not succeeded.",
"statusCode": 500
}
]
}Articles
Update article
Patches an article’s metadata and its draft. It never writes the live
articleContent* fields — that only happens on publish, which is what lets
an operator edit for an hour without the page going blank in the meantime.
articleDraft.contentHtml is sanitized before storage. Renaming the slug of
an already-published article records the previous one, so the URL Google
indexed keeps resolving.
PATCH
/
v1
/
tenants
/
{tenantID}
/
articles
/
{articleID}
Update article
curl --request PATCH \
--url https://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"articleDescription": "<string>",
"articleDraft": {
"content": {},
"contentHtml": "<string>",
"contentMarkdown": "<string>",
"contentPlain": "<string>"
},
"articleFeatured": true,
"articleOrder": 5000,
"articleSlug": "<string>",
"articleTitle": "<string>",
"categoryID": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}"
payload = {
"articleDescription": "<string>",
"articleDraft": {
"content": {},
"contentHtml": "<string>",
"contentMarkdown": "<string>",
"contentPlain": "<string>"
},
"articleFeatured": True,
"articleOrder": 5000,
"articleSlug": "<string>",
"articleTitle": "<string>",
"categoryID": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
articleDescription: '<string>',
articleDraft: {
content: {},
contentHtml: '<string>',
contentMarkdown: '<string>',
contentPlain: '<string>'
},
articleFeatured: true,
articleOrder: 5000,
articleSlug: '<string>',
articleTitle: '<string>',
categoryID: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}', 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://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}",
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([
'articleDescription' => '<string>',
'articleDraft' => [
'content' => [
],
'contentHtml' => '<string>',
'contentMarkdown' => '<string>',
'contentPlain' => '<string>'
],
'articleFeatured' => true,
'articleOrder' => 5000,
'articleSlug' => '<string>',
'articleTitle' => '<string>',
'categoryID' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}"
payload := strings.NewReader("{\n \"articleDescription\": \"<string>\",\n \"articleDraft\": {\n \"content\": {},\n \"contentHtml\": \"<string>\",\n \"contentMarkdown\": \"<string>\",\n \"contentPlain\": \"<string>\"\n },\n \"articleFeatured\": true,\n \"articleOrder\": 5000,\n \"articleSlug\": \"<string>\",\n \"articleTitle\": \"<string>\",\n \"categoryID\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"articleDescription\": \"<string>\",\n \"articleDraft\": {\n \"content\": {},\n \"contentHtml\": \"<string>\",\n \"contentMarkdown\": \"<string>\",\n \"contentPlain\": \"<string>\"\n },\n \"articleFeatured\": true,\n \"articleOrder\": 5000,\n \"articleSlug\": \"<string>\",\n \"articleTitle\": \"<string>\",\n \"categoryID\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://plugins-api.talqui.chat/helpdesk/v1/tenants/{tenantID}/articles/{articleID}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"articleDescription\": \"<string>\",\n \"articleDraft\": {\n \"content\": {},\n \"contentHtml\": \"<string>\",\n \"contentMarkdown\": \"<string>\",\n \"contentPlain\": \"<string>\"\n },\n \"articleFeatured\": true,\n \"articleOrder\": 5000,\n \"articleSlug\": \"<string>\",\n \"articleTitle\": \"<string>\",\n \"categoryID\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"article": {
"articleContent": {},
"articleContentHtml": "<string>",
"articleContentMarkdown": "<string>",
"articleContentPlain": "<string>",
"articleDescription": "<string>",
"articleDraft": {
"content": {},
"contentHtml": "<string>",
"contentMarkdown": "<string>",
"contentPlain": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedBy": "<string>"
},
"articleFeatured": true,
"articleID": "<string>",
"articleOrder": 123,
"articlePopularity": 123,
"articleSlug": "<string>",
"articleSlugHistory": [
"<string>"
],
"articleStatus": "draft",
"articleTitle": "<string>",
"articleVersion": 123,
"categoryID": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"deletedAt": "2023-11-07T05:31:56Z",
"helpdeskID": "<string>",
"publishedAt": "2023-11-07T05:31:56Z",
"publishedBy": "<string>",
"tenantID": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedBy": "<string>"
}
}{
"errors": [
{
"error": "MissingTenantIDError",
"error_code": 1001,
"message": "tenantID is required.",
"statusCode": 400
}
]
}{
"errors": [
{
"error": "HelpdeskNotFoundError",
"error_code": 1107,
"message": "No help center answers on this address.",
"statusCode": 404
}
]
}{
"errors": [
{
"error": "SlugAlreadyInUseError",
"error_code": 1110,
"message": "This slug is already in use in this help center.",
"statusCode": 409
}
]
}{
"errors": [
{
"error": "TenantNotConnectedError",
"error_code": 1000,
"message": "This tenant is not connected to the plugin.",
"statusCode": 422
}
]
}{
"errors": [
{
"error": "UnknownError",
"error_code": 5999,
"message": "For some unknown reason your request has not succeeded.",
"statusCode": 500
}
]
}Authorizations
operatorAuthpluginConnectionAuthpluginAuth
Behalf of an Operator. The JWT issued by Talqui Core when an operator signs in. Send as Authorization: Bearer <jwt-token>.
Path Parameters
The tenant the help center belongs to.
Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Body
application/json
Maximum string length:
2000Show child attributes
Show child attributes
Required range:
0 <= x <= 10000Required string length:
1 - 160Available options:
draft, published, archived Required string length:
1 - 300Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Response
Response for status 200.
Show child attributes
Show child attributes
⌘I