1use derive_builder::Builder;
2use serde::Serialize;
3use serde_json::Value;
4
5use crate::structs::SimpleField;
6
7#[derive(Builder, Debug, Default, Serialize)]
8#[builder(setter(into, strip_option))]
9#[builder(default)]
10pub struct ListFieldsRequest {
11 pub work_item_type_key: Option<String>,
12}
13
14pub type ListFieldsResponse = Vec<SimpleField>;
15
16#[derive(Builder, Clone, Debug, Serialize)]
17#[builder(setter(into, strip_option))]
18pub struct FieldValue {
19 pub value: String,
20 pub name: String,
21 pub parent_value: Option<String>,
22}
23
24#[derive(Builder, Debug, Default, Serialize)]
25#[builder(setter(into, strip_option))]
26#[builder(default)]
27pub struct CreateFieldRequest {
28 pub field_name: String,
29 pub field_type_key: String,
30 pub value_type: Option<i32>,
31 pub reference_work_item_type_key: Option<String>,
32 pub reference_field_key: Option<String>,
33 pub is_multi: Option<bool>,
34 pub format: Option<bool>,
35 pub field_value: Option<Vec<FieldValue>>,
36 pub free_add: Option<i32>,
37 pub work_item_relation_uuid: Option<String>,
38 pub default_value: Option<serde_json::Value>,
39 pub field_alias: Option<String>,
40 pub help_description: Option<String>,
41 pub authorized_roles: Option<Vec<String>>,
42}
43
44pub type CreateFieldResponse = String;
45
46#[derive(Builder, Debug, Default, Serialize)]
47#[builder(setter(into, strip_option))]
48#[builder(default)]
49pub struct UpdateFieldRequest {
50 pub field_key: String,
51 pub field_name: Option<String>,
52 pub field_value: Option<Vec<FieldValue>>,
53 pub free_add: Option<i32>,
54 pub work_item_relation_uuid: Option<String>,
55 pub default_value: Option<serde_json::Value>,
56 pub field_alias: Option<String>,
57 pub help_description: Option<String>,
58 pub authorized_roles: Option<Vec<String>>,
59}
60
61pub type UpdateFieldResponse = Value;