1use serde::{Deserialize, Serialize};
2
3use crate::{
4 api::{ApiMetadata, CodeRepositoryFreshnessDiagnostics, CodeRepositoryScopeMetadata},
5 domain::{
6 CodeFeatureFlagGraph, CodeFeatureFlagRequest, CodeImpactPathGroups, CodeImpactRequest,
7 CodeIndexCheckpoint, CodeIndexSummary, CodeIndexTaskRecord, CodeRepositoryRegistration,
8 CodeRepositoryRemovalSummary, CodeRepositoryReport, CodeRepositoryScopePreview,
9 CodeRepositoryStatus, CodeRetrievalHit, CodeRetrievalRequest, CodeScopeRetentionSummary,
10 SoftwareBuildTarget, SoftwareComponent, SoftwareDependencyUsage, SoftwareDesignElement,
11 SoftwareFile, SoftwareGlobalRequest, SoftwareGlobalStatus, SoftwareIacResource,
12 SoftwareRelationship, SoftwareSdkUsage, SoftwareTopic,
13 },
14};
15
16#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
18pub struct CodeRepositoryRegisterRequest {
19 pub root_path: String,
20 #[serde(default)]
21 pub alias: String,
22 #[serde(default)]
23 pub path_filters: Vec<String>,
24 #[serde(default)]
25 pub language_filters: Vec<String>,
26}
27
28#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
30pub struct CodeRepositoryRegisterResponse {
31 pub metadata: ApiMetadata,
32 pub registration: CodeRepositoryRegistration,
33 pub status: CodeRepositoryStatus,
34}
35
36#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
38pub struct CodeRepositoryListResponse {
39 pub metadata: ApiMetadata,
40 pub repositories: Vec<CodeRepositoryStatus>,
41}
42
43#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
45pub struct CodeRepositoryRemoveResponse {
46 pub metadata: ApiMetadata,
47 pub removed_status: CodeRepositoryStatus,
48 pub summary: CodeRepositoryRemovalSummary,
49}
50
51#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
53pub struct CodeRepositoryIndexResponse {
54 pub metadata: ApiMetadata,
55 pub scope: CodeRepositoryScopeMetadata,
56 pub summary: CodeIndexSummary,
57 pub status: CodeRepositoryStatus,
58}
59
60#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
62pub struct CodeRepositoryIndexStartResponse {
63 pub metadata: ApiMetadata,
64 pub scope: CodeRepositoryScopeMetadata,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub summary: Option<CodeIndexSummary>,
67 pub status: CodeRepositoryStatus,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub task: Option<CodeIndexTaskRecord>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub checkpoint: Option<CodeIndexCheckpoint>,
72}
73
74#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
76pub struct CodeRepositoryIndexResetResponse {
77 pub metadata: ApiMetadata,
78 pub status: CodeRepositoryStatus,
79 pub reset_task_count: usize,
80 pub reset_tasks: Vec<CodeIndexTaskRecord>,
81 #[serde(skip_serializing_if = "Option::is_none")]
82 pub active_task: Option<CodeIndexTaskRecord>,
83 #[serde(skip_serializing_if = "Option::is_none")]
84 pub checkpoint: Option<CodeIndexCheckpoint>,
85 pub retention: CodeScopeRetentionSummary,
86}
87
88#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
90pub struct CodeRepositoryScopePreviewResponse {
91 pub metadata: ApiMetadata,
92 pub scope: CodeRepositoryScopeMetadata,
93 pub preview: CodeRepositoryScopePreview,
94}
95
96#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
98pub struct CodeRepositoryQueryResponse {
99 pub metadata: ApiMetadata,
100 pub scope: CodeRepositoryScopeMetadata,
101 #[serde(default = "CodeRepositoryFreshnessDiagnostics::legacy_unknown")]
102 pub freshness: CodeRepositoryFreshnessDiagnostics,
103 pub request: CodeRetrievalRequest,
104 pub results: Vec<CodeRetrievalHit>,
105 #[serde(skip_serializing_if = "Option::is_none")]
106 pub degraded_reason: Option<String>,
107}
108
109#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
111pub struct CodeRepositoryFeatureFlagsResponse {
112 pub metadata: ApiMetadata,
113 pub scope: CodeRepositoryScopeMetadata,
114 #[serde(default = "CodeRepositoryFreshnessDiagnostics::legacy_unknown")]
115 pub freshness: CodeRepositoryFreshnessDiagnostics,
116 pub request: CodeFeatureFlagRequest,
117 pub flags: Vec<CodeFeatureFlagGraph>,
118 #[serde(skip_serializing_if = "Option::is_none")]
119 pub degraded_reason: Option<String>,
120}
121
122#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
124pub struct CodeRepositoryImpactResponse {
125 pub metadata: ApiMetadata,
126 pub scope: CodeRepositoryScopeMetadata,
127 pub request: CodeImpactRequest,
128 pub path_groups: CodeImpactPathGroups,
129 pub results: Vec<CodeRetrievalHit>,
130}
131
132#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
134pub struct CodeRepositoryStatusResponse {
135 pub metadata: ApiMetadata,
136 pub status: CodeRepositoryStatus,
137 #[serde(skip_serializing_if = "Option::is_none")]
138 pub active_task: Option<CodeIndexTaskRecord>,
139 #[serde(skip_serializing_if = "Option::is_none")]
140 pub checkpoint: Option<CodeIndexCheckpoint>,
141 pub retention: CodeScopeRetentionSummary,
142}
143
144#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
146pub struct CodeRepositoryReportResponse {
147 pub metadata: ApiMetadata,
148 pub scope: CodeRepositoryScopeMetadata,
149 pub report: CodeRepositoryReport,
150}
151
152#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
154pub struct SoftwareGlobalResponse {
155 pub metadata: ApiMetadata,
156 pub scope: CodeRepositoryScopeMetadata,
157 pub request: SoftwareGlobalRequest,
158 pub status: SoftwareGlobalStatus,
159 pub components: Vec<SoftwareComponent>,
160 pub dependency_usages: Vec<SoftwareDependencyUsage>,
161 pub sdk_usages: Vec<SoftwareSdkUsage>,
162 pub files: Vec<SoftwareFile>,
163 pub topics: Vec<SoftwareTopic>,
164 pub relationships: Vec<SoftwareRelationship>,
165 pub build_targets: Vec<SoftwareBuildTarget>,
166 pub iac_resources: Vec<SoftwareIacResource>,
167 pub design_elements: Vec<SoftwareDesignElement>,
168}