meegle/project_relation/
types.rs1use derive_builder::Builder;
2use serde::Serialize;
3use crate::structs::{ProjectRelationRule, RelationInstance, RelationBindInstance};
4
5#[derive(Builder, Debug, Default, Serialize)]
6#[builder(setter(into, strip_option))]
7#[builder(default)]
8pub struct GetProjectRelationRulesRequest {
9 pub project_key: String,
10 pub remote_projects: Option<Vec<String>>,
11}
12
13pub type GetProjectRelationRulesResponse = Vec<ProjectRelationRule>;
14
15#[derive(Builder, Debug, Default, Serialize)]
16#[builder(setter(into, strip_option))]
17#[builder(default)]
18pub struct GetRelationInstancesRequest {
19 pub project_key: String,
20 pub work_item_type_key: String,
21 pub work_item_id: i64,
22 pub relation_work_item_type_key: Option<String>,
23 pub relation_project_key: Option<String>,
24 pub relation_rule_id: Option<String>,
25}
26
27pub type GetRelationInstancesResponse = Vec<RelationInstance>;
28
29#[derive(Builder, Debug, Default, Serialize)]
30#[builder(setter(into, strip_option))]
31#[builder(default)]
32pub struct BatchBindRelationRequest {
33 pub project_key: String,
34 pub work_item_type_key: String,
35 pub work_item_id: i64,
36 pub instances: Vec<RelationBindInstance>,
37 pub relation_rule_id: i64,
38}
39
40pub type BatchBindRelationResponse = serde_json::Value;
41
42#[derive(Builder, Debug, Default, Serialize)]
43#[builder(setter(into, strip_option))]
44#[builder(default)]
45pub struct UnbindRelationRequest {
46 pub project_key: String,
47 pub work_item_type_key: String,
48 pub work_item_id: i64,
49 pub relation_work_item_id: i64,
50 pub relation_rule_id: String,
51}
52
53pub type UnbindRelationResponse = serde_json::Value;