feat: integrate MR notifications and implementation results
This commit is contained in:
@@ -370,6 +370,8 @@ impl_openapi_schema!(
|
||||
TicketAssignmentAnswerResponse,
|
||||
NotificationDiagnosticsQuery,
|
||||
NotificationDiagnosticsPage,
|
||||
TicketImplementationResultRequest,
|
||||
TicketImplementationResultReceipt,
|
||||
TicketAssignmentDiagnosticsQuery,
|
||||
TicketAssignmentDiagnosticsPage,
|
||||
TicketQueryRequest,
|
||||
@@ -3289,6 +3291,33 @@ pub trait ServerApi {
|
||||
#[body] request: TicketAssignmentAnswerRequest,
|
||||
) -> Result<TicketAssignmentAnswerResponse, RepositoryApiError>;
|
||||
|
||||
#[post("/workspaces/{workspace_id}/tickets/{ticket_id}/implementation-results", status = 200, error_status = 400, additional_error_statuses = [401, 403, 404, 409, 422, 500], bearer_auth = true, browser_auth = true)]
|
||||
async fn ticket_implementation_result(
|
||||
&self,
|
||||
#[extension] context: ServerRequestContext,
|
||||
#[path] workspace_id: String,
|
||||
#[path] ticket_id: String,
|
||||
#[body] request: TicketImplementationResultRequest,
|
||||
) -> Result<TicketImplementationResultReceipt, RepositoryApiError>;
|
||||
|
||||
#[post("/api/w/{workspace_id}/tickets/{ticket_id}/implementation-results", status = 200, error_status = 400, additional_error_statuses = [401, 403, 404, 409, 422, 500], bearer_auth = true, browser_auth = true)]
|
||||
async fn ticket_implementation_result_browser(
|
||||
&self,
|
||||
#[extension] context: ServerRequestContext,
|
||||
#[path] workspace_id: String,
|
||||
#[path] ticket_id: String,
|
||||
#[body] request: TicketImplementationResultRequest,
|
||||
) -> Result<TicketImplementationResultReceipt, RepositoryApiError>;
|
||||
|
||||
#[get("/workspaces/{workspace_id}/tickets/{ticket_id}/implementation-results/{result_id}", status = 200, error_status = 400, additional_error_statuses = [401, 403, 404, 500], bearer_auth = true, browser_auth = true)]
|
||||
async fn ticket_implementation_result_get(
|
||||
&self,
|
||||
#[extension] context: ServerRequestContext,
|
||||
#[path] workspace_id: String,
|
||||
#[path] ticket_id: String,
|
||||
#[path] result_id: String,
|
||||
) -> Result<TicketImplementationResultReceipt, RepositoryApiError>;
|
||||
|
||||
#[get("/workspaces/{workspace_id}/tickets/{ticket_id}/assignment-tracking", status = 200, error_status = 400, additional_error_statuses = [401, 403, 404, 500], bearer_auth = true, browser_auth = true)]
|
||||
async fn ticket_assignment_tracking_get(
|
||||
&self,
|
||||
@@ -8018,6 +8047,34 @@ transparent_ticket_dto!(
|
||||
ticket::TicketAssignmentAnswerReceipt
|
||||
);
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, JsonSchema)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum TicketImplementationResultKind {
|
||||
Handoff,
|
||||
Result,
|
||||
Blocker,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, JsonSchema)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct TicketImplementationResultRequest {
|
||||
pub operation_key: String,
|
||||
pub assignment_id: String,
|
||||
pub orchestrator_assignment_id: String,
|
||||
pub kind: TicketImplementationResultKind,
|
||||
pub body: String,
|
||||
pub merge_request: Option<MergeRequestReviewSubject>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, JsonSchema)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct TicketImplementationResultReceipt {
|
||||
pub result_id: String,
|
||||
pub ticket_id: String,
|
||||
pub request: TicketImplementationResultRequest,
|
||||
pub created_at: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, JsonSchema)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct TicketAssignmentDiagnosticsQuery {
|
||||
|
||||
@@ -550,6 +550,27 @@ fn validate_ticket_browser_operations(
|
||||
request: None,
|
||||
successes: &[("200", "TicketAssignmentDiagnosticsPage")],
|
||||
},
|
||||
OperationContract {
|
||||
path: "/workspaces/{workspace_id}/tickets/{ticket_id}/implementation-results",
|
||||
method: "post",
|
||||
operation_id: "ticket_implementation_result",
|
||||
request: Some("TicketImplementationResultRequest"),
|
||||
successes: &[("200", "TicketImplementationResultReceipt")],
|
||||
},
|
||||
OperationContract {
|
||||
path: "/api/w/{workspace_id}/tickets/{ticket_id}/implementation-results",
|
||||
method: "post",
|
||||
operation_id: "ticket_implementation_result_browser",
|
||||
request: Some("TicketImplementationResultRequest"),
|
||||
successes: &[("200", "TicketImplementationResultReceipt")],
|
||||
},
|
||||
OperationContract {
|
||||
path: "/workspaces/{workspace_id}/tickets/{ticket_id}/implementation-results/{result_id}",
|
||||
method: "get",
|
||||
operation_id: "ticket_implementation_result_get",
|
||||
request: None,
|
||||
successes: &[("200", "TicketImplementationResultReceipt")],
|
||||
},
|
||||
OperationContract {
|
||||
path: "/workspaces/{workspace_id}/tickets/{ticket_id}/assignment-answer",
|
||||
method: "post",
|
||||
|
||||
Reference in New Issue
Block a user