Talep Özel Alan Tanımları
Talep formundaki özel alanların tanımını kuran ve değiştiren beş uç.
Genel Bakış
Bu beş uç, müşterinin destek talebi açarken doldurduğu ek form alanlarını tanımlar. Alan tipi, zorunluluğu, sırası ve hangi departmanda görüneceği yapısal kayıtta; etiketi, açıklaması ve seçenek adları ise dil başına tutulur.
Buradaki kayıtlar tanımlardır, cevaplar değil. Müşterinin yazdığı değerler talebin kendi kaydında şifreli durur ve talep detayında görünür; bu uçlar onlara dokunmaz.
Yazma sözleşmesi alışılmışın dışında kalır: güncelleme, adına rağmen tanımın tamamını ister. Çeviriler ve seçenekler her dil için baştan kaydedilir.
Referans
Alanları Listeleme
Talep formundaki özel alanları sırasıyla döndürür.
text, textarea, password, select, radio, checkbox.curl 'https://panel.ornek.com/api/v1/admin/tickets/custom-fields?status=active' \
-H "Authorization: Bearer $API_KEY"const url = new URL('https://panel.ornek.com/api/v1/admin/tickets/custom-fields');
url.searchParams.set('status', 'active');
const res = await fetch(url, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/custom-fields?' . http_build_query(['status' => 'active']));
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Liste TEK DIL verir; tum cevirileri gormek icin alani tek tek okuyun.
$fields = Api::Tickets()->GetTicketCustomFields([], ['status' => 'active'])['data'];Alan Oluşturma
Talep formuna yeni bir alan ekler ve çevirilerini yazar.
text, textarea, password, select, radio, checkbox.curl -X POST 'https://panel.ornek.com/api/v1/admin/tickets/custom-fields' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"type":"select","required":true,"translations":{"tr":{"name":"Sunucu bolgesi"}},"options":{"tr":["Avrupa","Kuzey Amerika"]}}'const res = await fetch('https://panel.ornek.com/api/v1/admin/tickets/custom-fields', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
type: 'select',
required: true,
translations: { en: { name: 'Server location', description: '' } },
options: { en: ['Europe', 'North America'] },
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/custom-fields');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'type' => 'select',
'required' => true,
'translations' => ['en' => ['name' => 'Server location', 'description' => '']],
'options' => ['en' => ['Europe', 'North America']],
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Seceneklerin SIRASI kimliktir: her dilde ayni siraya ayni secenegi yazin.
Api::Tickets()->CreateTicketCustomField([
'type' => 'select',
'translations' => [
'en' => ['name' => 'Server location'],
'tr' => ['name' => 'Sunucu bolgesi'],
],
'options' => [
'en' => ['Europe', 'North America'],
'tr' => ['Avrupa', 'Kuzey Amerika'],
],
]);Alan Detayı
Bir alanı bütün çevirileriyle döndürür.
text, textarea, password, select, radio, checkbox.curl 'https://panel.ornek.com/api/v1/admin/tickets/custom-fields/4' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/tickets/custom-fields/${fid}`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/custom-fields/' . $fid);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Guncellemeden ONCE burayi okuyun: yazma cagrisi tanimin TAMAMINI ister.
$field = Api::Tickets()->GetTicketCustomField(['fid' => $fid])['data'];Alanı Güncelleme
Alanın tanımını yeniden yazar.
text, textarea, password, select, radio, checkbox.curl -X PATCH 'https://panel.ornek.com/api/v1/admin/tickets/custom-fields/4' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"type":"select","status":"inactive","translations":{"tr":{"name":"Sunucu bolgesi"}},"options":{"tr":["AB","ABD","Asya"]}}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/tickets/custom-fields/${fid}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
type: 'select',
status: 'inactive',
translations: { en: { name: 'Server region', description: '' } },
options: { en: ['EU', 'US', 'Asia'] },
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/custom-fields/' . $fid);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'type' => 'select',
'status' => 'inactive',
'translations' => ['en' => ['name' => 'Server region', 'description' => '']],
'options' => ['en' => ['EU', 'US', 'Asia']],
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Tek bir bayragi degistirmek icin bile TUM tanimi gonderin; eksik birakilan silinir.
$cur = Api::Tickets()->GetTicketCustomField(['fid' => $fid])['data'];
$cur['fid'] = $fid;
$cur['status'] = 'inactive';
Api::Tickets()->UpdateTicketCustomField($cur);Alanı Silme
Alanı ve bütün dil kayıtlarını kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/tickets/custom-fields/4' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/tickets/custom-fields/${fid}`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/custom-fields/' . $fid);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Formdan kaldirmak icin silmek yerine KAPATIN: eski yanitlar etiketini boyle korur.
Api::Tickets()->UpdateTicketCustomField($cur + ['status' => 'inactive']);Tuzaklar
Yöntem adı kısmi güncelleme ima etse de gövde tanımın tamamıdır. Çeviriler ve seçenekler her dil için yeniden yazılır, yani göndermediğiniz dil ya da seçenek düşer. Tek bir anahtarı değiştirecekseniz önce detayı okuyun, üzerinde değişikliği yapın ve tümünü geri gönderin.
Bir seçeneği listedeki sırası tanımlar: her dildeki birinci etiket aynı seçeneği anlatır. Bir dilde sıralamayı değiştirmek, o dilde başka bir seçeneğe başka bir ad vermek demektir ve uyarı çıkmaz. Bir satır bir dilde dolu, başka dilde boşsa kayıt reddedilir.
Kayıt, kurulumdaki her etkin dilde bir etiket bekler. Yalnız kendi dilinizi gönderen bir betik, kuruluma ikinci bir dil eklendiği gün çalışmayı bırakır. Diller değişebildiği için listeyi koda gömmek yerine ayarlardan okuyun.
Departman alanındaki sıfır tüm departmanlar demektir; alan her talep formunda çıkar. Sıra alanındaki sıfır ise "başa koy" değil sona ekle anlamına gelir. İkisini karıştırmak, herkese görünen ve listenin dibinde duran bir alan üretir.
Silme yalnız tanımı ve çevirilerini kaldırır. Müşterilerin daha önce doldurduğu değerler taleplerin kendi kayıtlarında kalmaya devam eder, ama artık onları adlandıracak bir etiket yoktur. Alanı formdan çekmek istiyorsanız silmek yerine kapatın: geçmiş talepler böyle okunur kalır.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.