meegle/field/
types.rs

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;