definitions:
  base.BaseResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  collaboration.CreateLarkGroupRequest:
    properties:
      group_description:
        type: string
      group_name:
        type: string
      members:
        items:
          type: string
        type: array
      owner:
        type: string
    required:
    - group_name
    type: object
  collaboration.CreateResourceForLarkDocumentRequest:
    properties:
      doc_id:
        type: string
      is_wiki:
        type: boolean
      owner:
        type: string
    required:
    - doc_id
    - owner
    type: object
  collaboration.CreateResourceForLarkGroupRequest:
    properties:
      create_group:
        $ref: '#/definitions/collaboration.CreateLarkGroupRequest'
      link_group:
        $ref: '#/definitions/collaboration.LinkLarkGroupRequest'
    type: object
  collaboration.CreateResourceForLarkMeetingRequest:
    properties:
      meeting_id:
        type: string
    required:
    - meeting_id
    type: object
  collaboration.CreateResourceRequest:
    properties:
      lark_document:
        $ref: '#/definitions/collaboration.CreateResourceForLarkDocumentRequest'
      lark_group:
        $ref: '#/definitions/collaboration.CreateResourceForLarkGroupRequest'
      lark_meeting:
        $ref: '#/definitions/collaboration.CreateResourceForLarkMeetingRequest'
    type: object
  collaboration.CreateResourceResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      resource:
        $ref: '#/definitions/collaboration.Resource'
      trace_id:
        type: string
    type: object
  collaboration.GetResourceResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      resource:
        $ref: '#/definitions/collaboration.Resource'
      trace_id:
        type: string
    type: object
  collaboration.LinkLarkGroupRequest:
    properties:
      group_id:
        type: string
    required:
    - group_id
    type: object
  collaboration.ListResourcesResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      resources:
        items:
          $ref: '#/definitions/collaboration.Resource'
        type: array
      total:
        type: integer
      trace_id:
        type: string
    type: object
  collaboration.Resource:
    properties:
      created_at:
        type: integer
      grant_request_id:
        type: string
      grant_status:
        type: string
      id:
        type: integer
      link:
        type: string
      metadata:
        type: object
      name:
        type: string
      owner:
        type: string
      provider:
        type: string
      resource_id:
        type: string
      type:
        type: string
    type: object
  collaboration.UpdateResourceRequest:
    properties:
      link:
        type: string
      metadata:
        type: object
      name:
        type: string
    type: object
  collaboration.UpdateResourceResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      resource:
        $ref: '#/definitions/collaboration.Resource'
      trace_id:
        type: string
    type: object
  dispatch.Action:
    properties:
      assign:
        $ref: '#/definitions/dispatch.AssignAction'
      assign_l2:
        $ref: '#/definitions/dispatch.AssignAction'
      escalate:
        $ref: '#/definitions/dispatch.EscalateAction'
      noop:
        $ref: '#/definitions/dispatch.NoopAction'
      page_assignment:
        $ref: '#/definitions/dispatch.PageAssignmentAction'
      retrigger:
        $ref: '#/definitions/dispatch.RetriggerAction'
      send_assignment_notification:
        $ref: '#/definitions/dispatch.SendAssignmentNotificationAction'
      send_web_request:
        $ref: '#/definitions/dispatch.SendWebRequestAction'
      transition_issue:
        $ref: '#/definitions/dispatch.TransitionIssueAction'
      type:
        type: string
    type: object
  dispatch.ActionExecution:
    properties:
      context:
        $ref: '#/definitions/dispatch.ActionExecutionContext'
      index:
        type: integer
      planned:
        type: boolean
      status:
        type: string
    type: object
  dispatch.ActionExecutionContext:
    properties:
      assign:
        $ref: '#/definitions/dispatch.ActionExecutionContextAssign'
      escalate:
        $ref: '#/definitions/dispatch.ActionExecutionContextEscalate'
      escalate_assignment_to_leader:
        $ref: '#/definitions/dispatch.ActionExecutionContextEscalateAssignmentToLeader'
      mark_assignment_message_urgent:
        $ref: '#/definitions/dispatch.ActionExecutionContextMarkAssignmentMessageUrgent'
      page_assignment:
        $ref: '#/definitions/dispatch.ActionExecutionContextPageAssignment'
      retrigger:
        $ref: '#/definitions/dispatch.ActionExecutionContextRetrigger'
      send_assignment_notification:
        $ref: '#/definitions/dispatch.ActionExecutionContextSendAssignmentNotification'
      send_web_request:
        $ref: '#/definitions/dispatch.ActionExecutionContextSendWebRequest'
      transition_issue:
        $ref: '#/definitions/dispatch.ActionExecutionContextTransitionIssue'
      triage:
        $ref: '#/definitions/dispatch.ActionExecutionContextTriage'
    type: object
  dispatch.ActionExecutionContextAssign:
    properties:
      assignee:
        type: string
      candidates:
        items:
          type: string
        type: array
      oncall_query_at:
        type: string
      reason:
        type: string
      receiver_mapping_value:
        type: string
      receiver_name:
        type: string
      remove_auto_assign_labels:
        items:
          type: string
        type: array
    type: object
  dispatch.ActionExecutionContextEscalate:
    properties:
      escalate_to:
        type: string
      remove_auto_assign_labels:
        items:
          type: string
        type: array
      target_status:
        type: string
      transition_id:
        type: string
    type: object
  dispatch.ActionExecutionContextEscalateAssignmentToLeader:
    properties:
      ack_comment_phase:
        type: string
      ack_comment_status:
        type: string
      leader_account_id:
        type: string
      leader_email:
        type: string
      outcome:
        type: string
      phase:
        type: string
      termination_reason:
        type: string
      warning:
        type: string
    type: object
  dispatch.ActionExecutionContextMarkAssignmentMessageUrgent:
    properties:
      ack_comment_phase:
        type: string
      ack_comment_status:
        type: string
      phase:
        type: string
      status:
        type: string
      termination_reason:
        type: string
      warning:
        type: string
    type: object
  dispatch.ActionExecutionContextPageAssignment:
    properties:
      ack_comment_phase:
        type: string
      ack_comment_status:
        type: string
      ack_pending_statuses:
        items:
          type: string
        type: array
      ack_timeout:
        type: string
      attempt:
        type: integer
      call_error:
        type: string
      call_method:
        type: string
      deadline:
        type: string
      last_observed_at:
        type: string
      notification_comment_phase:
        type: string
      notification_comment_status:
        type: string
      page_phase:
        type: string
      page_status:
        type: string
      poll_interval:
        type: string
      termination_reason:
        type: string
      warning:
        type: string
    type: object
  dispatch.ActionExecutionContextRetrigger:
    properties:
      available_at:
        type: string
      dispatch_trigger_id:
        type: integer
    type: object
  dispatch.ActionExecutionContextSendAssignmentNotification:
    properties:
      card_phase:
        type: string
      card_status:
        type: string
      expected_target_account_id:
        type: string
      expected_target_active:
        type: boolean
      expected_target_email:
        type: string
      expected_target_name:
        type: string
      label:
        type: string
      label_phase:
        type: string
      message_id:
        type: string
      notification_comment_phase:
        type: string
      notification_comment_status:
        type: string
      priority:
        type: string
      project_key:
        type: string
      role:
        type: string
      severity:
        type: string
      status:
        type: string
      target_lark_open_id:
        type: string
      urgency_field:
        type: string
      urgency_values:
        items:
          type: string
        type: array
      warning:
        type: string
    type: object
  dispatch.ActionExecutionContextSendWebRequest:
    properties:
      body:
        type: string
      headers:
        additionalProperties:
          type: string
        type: object
      method:
        type: string
      status_code:
        type: integer
      url:
        type: string
    type: object
  dispatch.ActionExecutionContextTransitionIssue:
    properties:
      target_status:
        type: string
      transition_id:
        type: string
    type: object
  dispatch.ActionExecutionContextTriage:
    properties:
      agent_gateway_session_id:
        type: string
      agent_gateway_task_id:
        type: string
      child_issue_keys:
        items:
          type: string
        type: array
      children_truncated:
        type: boolean
      comment_count:
        type: integer
      comments_truncated:
        type: boolean
      component_candidates:
        items:
          $ref: '#/definitions/triage.ComponentOption'
        type: array
      escalation_comment_count:
        type: integer
      escalation_comments_truncated:
        type: boolean
      escalation_issue_keys:
        description: 'Deprecated: retained so historical v2 execution contexts can
          still be decoded.'
        items:
          type: string
        type: array
      escalations_truncated:
        type: boolean
      generated_at:
        type: string
      input_hash:
        type: string
      input_schema_version:
        type: string
      issue_key:
        type: string
      issue_updated_at:
        type: integer
      on_call_tier:
        type: string
      parent_issue_keys:
        description: 'Deprecated: retained so historical v1 execution contexts can
          still be decoded.'
        items:
          type: string
        type: array
      parents_truncated:
        type: boolean
      project_key:
        type: string
      projection_status:
        type: string
      result:
        $ref: '#/definitions/triage.Result'
      skill_version:
        type: string
      source_comment_count:
        type: integer
      source_comments_truncated:
        type: boolean
      source_issue_keys:
        items:
          type: string
        type: array
      sources_truncated:
        type: boolean
    type: object
  dispatch.AssignAction:
    properties:
      oncall_lookup:
        $ref: '#/definitions/dispatch.OncallLookup'
      receiver:
        $ref: '#/definitions/dispatch.Receiver'
      strategy:
        type: string
    type: object
  dispatch.AssignmentEscalationIntent:
    properties:
      from_account_id:
        type: string
      owner_execution_id:
        type: integer
      state:
        type: string
      to_account_id:
        type: string
      to_email:
        type: string
    type: object
  dispatch.AssignmentNotificationRoleState:
    properties:
      auto_escalated_to_account_id:
        type: string
      escalation_intent:
        $ref: '#/definitions/dispatch.AssignmentEscalationIntent'
    type: object
  dispatch.AssignmentNotificationState:
    properties:
      assignee:
        $ref: '#/definitions/dispatch.AssignmentNotificationRoleState'
      l2_assignee:
        $ref: '#/definitions/dispatch.AssignmentNotificationRoleState'
    type: object
  dispatch.ConditionExpr:
    properties:
      all:
        items:
          $ref: '#/definitions/dispatch.ConditionExpr'
        type: array
      always:
        type: boolean
      any:
        items:
          $ref: '#/definitions/dispatch.ConditionExpr'
        type: array
      calendar_name:
        type: string
      field:
        type: string
      not:
        $ref: '#/definitions/dispatch.ConditionExpr'
      operator:
        type: string
      value:
        type: string
      values:
        items:
          type: string
        type: array
      weekly_time_window:
        $ref: '#/definitions/dispatch.WeeklyTimeWindow'
    type: object
  dispatch.CreateDispatchTriggerInput:
    properties:
      issue_key:
        type: string
    required:
    - issue_key
    type: object
  dispatch.CreateDispatchTriggerRequest:
    properties:
      dryrun:
        $ref: '#/definitions/dispatch.DispatchDryrunInput'
      input:
        $ref: '#/definitions/dispatch.CreateDispatchTriggerInput'
      policy_id:
        type: integer
      source:
        type: string
    required:
    - input
    - source
    type: object
  dispatch.CreateDispatchTriggerResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
      trigger:
        $ref: '#/definitions/dispatch.DispatchTrigger'
    type: object
  dispatch.CreatePolicyRequest:
    properties:
      name:
        type: string
      replaces_policy_id:
        type: integer
      rules:
        items:
          $ref: '#/definitions/dispatch.Rule'
        type: array
      trigger:
        $ref: '#/definitions/dispatch.PolicyTriggerInput'
    required:
    - name
    type: object
  dispatch.CreatePolicyResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      policy:
        $ref: '#/definitions/dispatch.Policy'
      trace_id:
        type: string
    type: object
  dispatch.DispatchContext:
    properties:
      assignee:
        type: string
      assignee_l2:
        type: string
      assignment_notification_state:
        $ref: '#/definitions/dispatch.AssignmentNotificationState'
      issue_key:
        type: string
      triage:
        $ref: '#/definitions/triage.Result'
      triage_execution_id:
        type: integer
      triage_issue_updated_at:
        type: integer
    type: object
  dispatch.DispatchDryrunInput:
    properties:
      overwrite_data:
        $ref: '#/definitions/dispatch.ExecutionOverwriteData'
    type: object
  dispatch.DispatchTrigger:
    properties:
      available_at:
        type: string
      created_at:
        type: string
      failure_reason:
        type: string
      id:
        type: integer
      input:
        $ref: '#/definitions/dispatch.DispatchTriggerInput'
      output:
        $ref: '#/definitions/dispatch.DispatchTriggerOutput'
      source:
        type: string
      status:
        type: string
    type: object
  dispatch.DispatchTriggerInput:
    properties:
      dryrun:
        $ref: '#/definitions/dispatch.DispatchDryrunInput'
      issue_key:
        type: string
      policy_id:
        type: integer
    type: object
  dispatch.DispatchTriggerOutput:
    properties:
      execution_ids:
        items:
          type: integer
        type: array
      policy_rejections:
        items:
          $ref: '#/definitions/dispatch.DispatchTriggerPolicyRejection'
        type: array
    type: object
  dispatch.DispatchTriggerPolicyRejection:
    properties:
      policy_id:
        type: integer
      reason:
        type: string
    type: object
  dispatch.EscalateAction:
    properties:
      escalate_to:
        type: string
    required:
    - escalate_to
    type: object
  dispatch.Execution:
    properties:
      completed_at:
        type: string
      created_at:
        type: string
      failure_code:
        type: string
      failure_reason:
        type: string
      id:
        type: integer
      issue_key:
        type: string
      mode:
        type: string
      overwrite_data:
        $ref: '#/definitions/dispatch.ExecutionOverwriteData'
      policy_id:
        type: integer
      rule_executions:
        items:
          $ref: '#/definitions/dispatch.RuleExecution'
        type: array
      status:
        type: string
      updated_at:
        type: string
    type: object
  dispatch.ExecutionOverwriteData:
    properties:
      now:
        type: string
    type: object
  dispatch.FieldOption:
    properties:
      action:
        $ref: '#/definitions/dispatch.FieldOptionAction'
      rule_condition:
        $ref: '#/definitions/dispatch.FieldOptionRuleCondition'
    type: object
  dispatch.FieldOptionAction:
    properties:
      bot_emails:
        items:
          type: string
        type: array
      on_call_teams:
        items:
          $ref: '#/definitions/dispatch.OnCallTeamOption'
        type: array
      receiver_mapping_fields:
        items:
          type: string
        type: array
      types:
        items:
          $ref: '#/definitions/dispatch.FieldOptionItem'
        type: array
    type: object
  dispatch.FieldOptionConditionOperator:
    properties:
      description:
        type: string
      name:
        type: string
    type: object
  dispatch.FieldOptionItem:
    properties:
      description:
        type: string
      name:
        type: string
    type: object
  dispatch.FieldOptionRuleCondition:
    properties:
      calendar_event_operators:
        items:
          $ref: '#/definitions/dispatch.FieldOptionConditionOperator'
        type: array
      calendar_names:
        items:
          type: string
        type: array
      issue_fields:
        items:
          $ref: '#/definitions/dispatch.FieldOptionItem'
        type: array
      multi_value_operators:
        items:
          $ref: '#/definitions/dispatch.FieldOptionConditionOperator'
        type: array
      no_value_operators:
        items:
          $ref: '#/definitions/dispatch.FieldOptionConditionOperator'
        type: array
      single_value_operators:
        items:
          $ref: '#/definitions/dispatch.FieldOptionConditionOperator'
        type: array
      weekly_time_window_operators:
        items:
          $ref: '#/definitions/dispatch.FieldOptionConditionOperator'
        type: array
    type: object
  dispatch.GetDispatchContextResponse:
    properties:
      context:
        $ref: '#/definitions/dispatch.DispatchContext'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  dispatch.GetDispatchTriggerResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
      trigger:
        $ref: '#/definitions/dispatch.DispatchTrigger'
    type: object
  dispatch.GetExecutionResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      execution:
        $ref: '#/definitions/dispatch.Execution'
      trace_id:
        type: string
    type: object
  dispatch.GetInsightResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      insight:
        $ref: '#/definitions/dispatch.Insight'
      trace_id:
        type: string
    type: object
  dispatch.GetOptionsResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      options:
        $ref: '#/definitions/dispatch.FieldOption'
      trace_id:
        type: string
    type: object
  dispatch.GetPolicyResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      policy:
        $ref: '#/definitions/dispatch.Policy'
      trace_id:
        type: string
    type: object
  dispatch.Insight:
    properties:
      date:
        type: string
      generated_at:
        type: string
      issues:
        items:
          $ref: '#/definitions/dispatch.InsightIssue'
        type: array
      projects:
        items:
          $ref: '#/definitions/dispatch.InsightProjectBreakdown'
        type: array
      summary:
        $ref: '#/definitions/dispatch.InsightSummary'
      timezone:
        type: string
      warnings:
        items:
          type: string
        type: array
    type: object
  dispatch.InsightAssignment:
    properties:
      action_completed_at:
        type: string
      execution_id:
        type: integer
      first_reassignment:
        $ref: '#/definitions/dispatch.InsightReassignment'
      jira_assigned_at:
        type: string
      jira_assignee:
        type: string
      jira_field_id:
        type: string
      observation_24h:
        type: string
      observation_2h:
        type: string
      policy_id:
        type: integer
      policy_name:
        type: string
      policy_version:
        type: integer
      reassignment_count:
        type: integer
      rule_id:
        type: integer
      rule_name:
        type: string
      selected_assignee:
        type: string
      tier:
        type: string
    type: object
  dispatch.InsightIssue:
    properties:
      assignments:
        items:
          $ref: '#/definitions/dispatch.InsightAssignment'
        type: array
      coverage_reason:
        type: string
      coverage_status:
        type: string
      created_at:
        type: string
      execution_ids:
        items:
          type: integer
        type: array
      expected_tiers:
        items:
          type: string
        type: array
      issue_key:
        type: string
      project_key:
        type: string
      trigger_ids:
        items:
          type: integer
        type: array
    type: object
  dispatch.InsightProjectBreakdown:
    properties:
      coverage:
        $ref: '#/definitions/dispatch.InsightRate'
      covered:
        type: integer
      project_key:
        type: string
      total:
        type: integer
      uncovered:
        type: integer
      unknown:
        type: integer
    type: object
  dispatch.InsightRate:
    properties:
      denominator:
        type: integer
      numerator:
        type: integer
      rate:
        type: number
    type: object
  dispatch.InsightReassignment:
    properties:
      at:
        type: string
      author:
        type: string
      elapsed_secs:
        type: integer
      from:
        type: string
      to:
        type: string
    type: object
  dispatch.InsightSummary:
    properties:
      dispatch_route_coverage:
        $ref: '#/definitions/dispatch.InsightRate'
      jira_coverage:
        $ref: '#/definitions/dispatch.InsightRate'
      pending_observation_issues:
        type: integer
      proxy_accuracy_24h:
        $ref: '#/definitions/dispatch.InsightRate'
      proxy_accuracy_2h:
        $ref: '#/definitions/dispatch.InsightRate'
      total_issues:
        type: integer
      unknown_issues:
        type: integer
    type: object
  dispatch.ListDispatchTriggersResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      total:
        type: integer
      trace_id:
        type: string
      triggers:
        items:
          $ref: '#/definitions/dispatch.DispatchTrigger'
        type: array
    type: object
  dispatch.ListExecutionsResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      executions:
        items:
          $ref: '#/definitions/dispatch.Execution'
        type: array
      total:
        type: integer
      trace_id:
        type: string
    type: object
  dispatch.ListPoliciesResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      policies:
        items:
          $ref: '#/definitions/dispatch.Policy'
        type: array
      total:
        type: integer
      trace_id:
        type: string
    type: object
  dispatch.ListProjectComponentsResponse:
    properties:
      components:
        items:
          $ref: '#/definitions/triage.ComponentOption'
        type: array
      fetched_at:
        type: string
      project_key:
        type: string
    type: object
  dispatch.NoopAction:
    properties:
      result:
        type: string
    required:
    - result
    type: object
  dispatch.OnCallTeamOption:
    properties:
      team_key:
        type: string
      team_name:
        type: string
    type: object
  dispatch.OncallLookup:
    properties:
      range:
        type: string
      step:
        type: string
    required:
    - range
    - step
    type: object
  dispatch.PageAssignmentAction:
    properties:
      ack_pending_statuses:
        items:
          type: string
        type: array
      ack_timeout:
        type: string
      attempt:
        type: integer
      poll_interval:
        type: string
    type: object
  dispatch.Policy:
    properties:
      created_at:
        type: string
      created_by:
        type: string
      family_id:
        type: string
      id:
        type: integer
      name:
        type: string
      published_at:
        type: string
      published_by:
        type: string
      replaces_policy_id:
        type: integer
      rules:
        items:
          $ref: '#/definitions/dispatch.Rule'
        type: array
      status:
        type: string
      trigger:
        $ref: '#/definitions/dispatch.PolicyTrigger'
      updated_at:
        type: string
      version:
        type: integer
    type: object
  dispatch.PolicyTrigger:
    properties:
      enable:
        type: boolean
      issue_label_all:
        items:
          type: string
        type: array
      issue_status_in:
        items:
          type: string
        type: array
      policy_id:
        type: integer
      project_key_in:
        items:
          type: string
        type: array
      source_in:
        items:
          type: string
        type: array
    type: object
  dispatch.PolicyTriggerInput:
    properties:
      enable:
        type: boolean
      issue_label_all:
        items:
          type: string
        type: array
      issue_status_in:
        items:
          type: string
        type: array
      project_key_in:
        items:
          type: string
        type: array
      source_in:
        items:
          type: string
        type: array
    type: object
  dispatch.PublishPolicyResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      policy:
        $ref: '#/definitions/dispatch.Policy'
      trace_id:
        type: string
    type: object
  dispatch.Receiver:
    properties:
      bot:
        type: string
      mapping:
        $ref: '#/definitions/dispatch.ReceiverMapping'
      name:
        type: string
      type:
        type: string
      user:
        type: string
      users:
        items:
          type: string
        type: array
    type: object
  dispatch.ReceiverMapping:
    properties:
      default:
        type: string
      field:
        type: string
      name_to_values:
        additionalProperties:
          items:
            type: string
          type: array
        type: object
    required:
    - default
    - field
    - name_to_values
    type: object
  dispatch.RetirePolicyResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      policy:
        $ref: '#/definitions/dispatch.Policy'
      trace_id:
        type: string
    type: object
  dispatch.RetriggerAction:
    properties:
      delay:
        type: string
    type: object
  dispatch.Rule:
    properties:
      id:
        type: integer
      name:
        type: string
      priority:
        type: integer
      then:
        items:
          $ref: '#/definitions/dispatch.Action'
        type: array
      transition:
        $ref: '#/definitions/dispatch.Transition'
      when:
        $ref: '#/definitions/dispatch.ConditionExpr'
    type: object
  dispatch.RuleEvaluation:
    properties:
      outcome:
        type: string
      reason:
        type: string
    type: object
  dispatch.RuleExecution:
    properties:
      action_executions:
        items:
          $ref: '#/definitions/dispatch.ActionExecution'
        type: array
      evaluation:
        $ref: '#/definitions/dispatch.RuleEvaluation'
      execution_id:
        type: integer
      id:
        type: integer
      rule_id:
        type: integer
      sequence:
        type: integer
    type: object
  dispatch.SendAssignmentNotificationAction:
    properties:
      label:
        type: string
      role:
        type: string
    type: object
  dispatch.SendWebRequestAction:
    properties:
      body:
        type: string
      headers:
        additionalProperties:
          type: string
        type: object
      method:
        type: string
      url:
        type: string
    required:
    - method
    - url
    type: object
  dispatch.Transition:
    properties:
      on_success:
        type: string
    type: object
  dispatch.TransitionIssueAction:
    properties:
      target_status:
        type: string
    required:
    - target_status
    type: object
  dispatch.UpdatePolicyRequest:
    properties:
      name:
        type: string
      rules:
        items:
          $ref: '#/definitions/dispatch.Rule'
        type: array
      trigger:
        $ref: '#/definitions/dispatch.PolicyTriggerInput'
    required:
    - name
    - trigger
    type: object
  dispatch.UpdatePolicyResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      policy:
        $ref: '#/definitions/dispatch.Policy'
      trace_id:
        type: string
    type: object
  dispatch.WeeklyTimeWindow:
    properties:
      end:
        type: string
      start:
        type: string
      timezone:
        type: string
      weekdays:
        items:
          type: string
        type: array
    type: object
  engineer.DispatchState:
    properties:
      dispatch_enabled:
        type: boolean
      last_dispatched_at:
        type: string
      last_dispatched_issue:
        type: string
    type: object
  engineer.Engineer:
    properties:
      availability:
        $ref: '#/definitions/engineer.EngineerAvailability'
      dispatch_state:
        $ref: '#/definitions/engineer.DispatchState'
      email:
        type: string
    type: object
  engineer.EngineerAvailability:
    properties:
      is_oncall:
        type: boolean
      on_call_end_at:
        type: string
      on_call_start_at:
        type: string
    type: object
  engineer.GetEngineerResponse:
    properties:
      engineer:
        $ref: '#/definitions/engineer.Engineer'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  engineer.ListEngineersResponse:
    properties:
      engineers:
        items:
          $ref: '#/definitions/engineer.Engineer'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      total:
        type: integer
      trace_id:
        type: string
    type: object
  engineer.SyncEngineersResponse:
    properties:
      engineers_created:
        type: integer
      engineers_deleted:
        type: integer
      engineers_updated:
        type: integer
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
      users_scanned:
        type: integer
    type: object
  gatewayv1.TaskEvent:
    properties:
      content:
        type: string
      session_id:
        type: string
      session_source:
        $ref: '#/definitions/sessionv1.SessionSource'
      status:
        type: integer
      task_id:
        type: string
      task_source:
        $ref: '#/definitions/sessionv1.TaskSource'
      type:
        type: integer
    type: object
  sessionv1.MessageSourceRef:
    properties:
      instance_id:
        type: string
      type:
        type: integer
    type: object
  sessionv1.SessionSource:
    properties:
      context:
        description: "Types that are valid to be assigned to Context:\n\n\t*SessionSource_Lark"
      initiator_email:
        type: string
      source:
        $ref: '#/definitions/sessionv1.MessageSourceRef'
      source_session_key:
        type: string
    type: object
  sessionv1.TaskSource:
    properties:
      sender_email:
        type: string
      source_message_id:
        type: string
    type: object
  task.CompleteTaskResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task:
        $ref: '#/definitions/task.Task'
      trace_id:
        type: string
    type: object
  task.CreateTaskListRequest:
    properties:
      name:
        type: string
      owner:
        type: string
    required:
    - name
    - owner
    type: object
  task.CreateTaskListResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task_list:
        $ref: '#/definitions/task.TaskList'
      trace_id:
        type: string
    type: object
  task.CreateTaskRequest:
    properties:
      creator:
        type: string
      description:
        type: string
      due_at:
        type: integer
      group:
        type: string
      members:
        items:
          $ref: '#/definitions/task.TaskMember'
        type: array
      parent_task_id:
        type: integer
      priority:
        type: string
      started_at:
        type: integer
      task_list_id:
        type: integer
      title:
        type: string
    required:
    - creator
    - description
    - priority
    - task_list_id
    - title
    type: object
  task.CreateTaskResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task:
        $ref: '#/definitions/task.Task'
      trace_id:
        type: string
    type: object
  task.GetTaskListResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task_list:
        $ref: '#/definitions/task.TaskList'
      trace_id:
        type: string
    type: object
  task.GetTaskResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task:
        $ref: '#/definitions/task.Task'
      trace_id:
        type: string
    type: object
  task.ListTaskListsResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task_lists:
        items:
          $ref: '#/definitions/task.TaskList'
        type: array
      total:
        type: integer
      trace_id:
        type: string
    type: object
  task.ListTasksResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      tasks:
        items:
          $ref: '#/definitions/task.Task'
        type: array
      total:
        type: integer
      trace_id:
        type: string
    type: object
  task.Task:
    properties:
      completed_at:
        type: integer
      created_at:
        type: integer
      creator:
        type: string
      description:
        type: string
      due_at:
        type: integer
      group:
        type: string
      id:
        type: integer
      members:
        items:
          $ref: '#/definitions/task.TaskMember'
        type: array
      parent_task_id:
        type: integer
      priority:
        type: string
      started_at:
        type: integer
      task_list_id:
        type: integer
      title:
        type: string
      updated_at:
        type: integer
    type: object
  task.TaskList:
    properties:
      created_at:
        type: integer
      id:
        type: integer
      name:
        type: string
      owner:
        type: string
      updated_at:
        type: integer
    type: object
  task.TaskMember:
    properties:
      member_email:
        type: string
      role:
        type: string
      task_id:
        type: integer
    type: object
  task.UpdateTaskListRequest:
    properties:
      name:
        type: string
      owner:
        type: string
    type: object
  task.UpdateTaskListResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task_list:
        $ref: '#/definitions/task.TaskList'
      trace_id:
        type: string
    type: object
  task.UpdateTaskRequest:
    properties:
      creator:
        type: string
      description:
        type: string
      due_at:
        type: integer
      group:
        type: string
      members:
        items:
          $ref: '#/definitions/task.TaskMember'
        type: array
      parent_task_id:
        type: integer
      priority:
        type: string
      started_at:
        type: integer
      title:
        type: string
    type: object
  task.UpdateTaskResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task:
        $ref: '#/definitions/task.Task'
      trace_id:
        type: string
    type: object
  ticket.CreateTicketRequest:
    properties:
      jiraIssue:
        $ref: '#/definitions/ticket.JiraIssue'
    type: object
  ticket.CreateTicketResponse:
    properties:
      dispatchTrigger:
        $ref: '#/definitions/dispatch.DispatchTrigger'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  ticket.GetTicketResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      ticket:
        $ref: '#/definitions/ticket.Ticket'
      trace_id:
        type: string
    type: object
  ticket.GetTicketTimelineResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      events:
        items:
          $ref: '#/definitions/ticket.TimelineEvent'
        type: array
      trace_id:
        type: string
    type: object
  ticket.JiraComment:
    properties:
      author:
        $ref: '#/definitions/ticket.JiraUser'
      content:
        type: string
      created_at:
        type: integer
      id:
        type: string
      updated_at:
        type: integer
    type: object
  ticket.JiraIssue:
    properties:
      affects_versions:
        items:
          $ref: '#/definitions/ticket.JiraIssueVersion'
        type: array
      assignee:
        $ref: '#/definitions/ticket.JiraUser'
      attachments:
        description: optional fields, nil means not fetch
        items:
          $ref: '#/definitions/ticket.JiraIssueAttachment'
        type: array
      comments:
        items:
          $ref: '#/definitions/ticket.JiraComment'
        type: array
      components:
        items:
          type: string
        type: array
      computed_fields:
        $ref: '#/definitions/ticket.JiraIssueComputedFields'
      created_at:
        type: integer
      custom_fields:
        $ref: '#/definitions/ticket.JiraIssueCustomFields'
      customer_info:
        $ref: '#/definitions/ticket.JiraIssueCustomerInfo'
      description:
        type: string
      environment:
        type: string
      id:
        description: raw ID in jira
        type: string
      issue_links:
        items:
          $ref: '#/definitions/ticket.JiraIssueLink'
        type: array
      key:
        type: string
      l2_assignee:
        $ref: '#/definitions/ticket.JiraUser'
      labels:
        items:
          type: string
        type: array
      parent_key:
        type: string
      priority:
        type: string
      project:
        $ref: '#/definitions/ticket.JiraProject'
      reporter:
        $ref: '#/definitions/ticket.JiraUser'
      resolved_at:
        type: integer
      status:
        type: string
      subtask_keys:
        items:
          type: string
        type: array
      summary:
        type: string
      updated_at:
        type: integer
    type: object
  ticket.JiraIssueAttachment:
    properties:
      filename:
        type: string
      id:
        type: string
    type: object
  ticket.JiraIssueComputedFields:
    properties:
      response_sla_due_at:
        description: nil means not supported, 0 means unlimited.
        type: integer
    type: object
  ticket.JiraIssueCustomFields:
    properties:
      alert_required:
        type: string
      auto_oncall_status:
        type: string
      escalation_description:
        type: object
      escalation_summary:
        type: string
      on_call_tier:
        type: string
      severity:
        type: string
      tidb_cloud_cluster_type:
        type: string
    type: object
  ticket.JiraIssueCustomerInfo:
    properties:
      account_level:
        description: only set for op.
        type: string
      cluster_id:
        type: string
      deploy_model:
        type: string
      environment:
        type: string
      issue_key:
        type: string
      tenant_alias:
        type: string
      tenant_id:
        description: 'op: account id, cloud: org id'
        type: string
      tenant_region:
        type: string
    type: object
  ticket.JiraIssueLink:
    properties:
      inward:
        type: string
      inward_issue:
        type: string
      outward:
        type: string
      outward_issue:
        type: string
      type_name:
        type: string
    type: object
  ticket.JiraIssueVersion:
    properties:
      id:
        type: string
      name:
        type: string
    type: object
  ticket.JiraProject:
    properties:
      key:
        type: string
      name:
        type: string
    type: object
  ticket.JiraUser:
    properties:
      account_id:
        type: string
      active:
        type: boolean
      display_name:
        type: string
      email:
        type: string
    type: object
  ticket.ListTicketsResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      tickets:
        items:
          $ref: '#/definitions/ticket.Ticket'
        type: array
      trace_id:
        type: string
    type: object
  ticket.Ticket:
    properties:
      assignmentCandidates:
        items:
          type: string
        type: array
      assignmentReason:
        type: string
      createdAt:
        type: string
      currentJiraStatus:
        type: string
      id:
        type: integer
      jiraAssignee:
        type: string
      jiraIssueId:
        type: string
      jiraIssueKey:
        type: string
      lastRemindedAt:
        type: string
      lastSignificantEventAt:
        type: string
      latestSummary:
        type: string
      resolvedAt:
        type: string
      statusEnteredAt:
        type: string
      title:
        type: string
      updatedAt:
        type: string
    type: object
  ticket.TimelineEvent:
    properties:
      actorID:
        type: string
      actorType:
        type: string
      detailsURL:
        type: string
      eventType:
        type: string
      id:
        format: int64
        type: integer
      metadataJSON:
        type: string
      occurredAt:
        type: string
      source:
        type: string
      summary:
        type: string
      ticketID:
        format: int64
        type: integer
    type: object
  ticket.UpdateTicketJiraIssueRequest:
    properties:
      jiraIssue:
        $ref: '#/definitions/ticket.JiraIssue'
    type: object
  triage.ComponentOption:
    properties:
      description:
        type: string
      id:
        type: string
      ids:
        items:
          type: string
        type: array
      name:
        type: string
    type: object
  triage.Result:
    properties:
      components:
        items:
          type: string
        type: array
      confidenceScore:
        type: number
      issueType:
        type: string
      language:
        type: string
      projectLevel:
        type: boolean
      reasoningSummary:
        type: string
      severity:
        type: string
    type: object
  workspace.Advice:
    properties:
      applied_at:
        type: integer
      created_at:
        type: integer
      data:
        $ref: '#/definitions/workspace.AdviceData'
      description:
        type: string
      id:
        type: integer
      status:
        type: string
      type:
        type: string
      updated_at:
        type: integer
      workspace_id:
        type: integer
    type: object
  workspace.AdviceData:
    properties:
      add_task:
        $ref: '#/definitions/workspace.AdviceDataAddTask'
      bind_lark_doc:
        $ref: '#/definitions/workspace.AdviceDataBindLarkDoc'
      bind_lark_meeting:
        $ref: '#/definitions/workspace.AdviceDataBindLarkMeeting'
    type: object
  workspace.AdviceDataAddTask:
    properties:
      card_message_id:
        type: string
      creator:
        type: string
      description:
        type: string
      due_at:
        type: integer
      group:
        type: string
      members:
        items:
          $ref: '#/definitions/task.TaskMember'
        type: array
      parent_task_id:
        type: integer
      priority:
        type: string
      started_at:
        type: integer
      title:
        type: string
    type: object
  workspace.AdviceDataBindLarkDoc:
    properties:
      card_message_id:
        type: string
      doc_id:
        type: string
      doc_url:
        type: string
      is_wiki:
        type: boolean
      owner:
        type: string
    type: object
  workspace.AdviceDataBindLarkMeeting:
    properties:
      card_message_id:
        type: string
      enable_record:
        type: boolean
      meeting_id:
        type: string
      meeting_number:
        type: string
      meeting_url:
        type: string
      status:
        description: '1: calling  2: in progress 3: done'
        type: integer
      topic:
        type: string
    type: object
  workspace.Alert:
    properties:
      alert:
        allOf:
        - $ref: '#/definitions/ticket.JiraIssue'
        description: maybe nil, set when caller needs
      alert_key:
        type: string
      bound_by:
        type: string
      created_at:
        type: integer
      id:
        type: integer
      workspace_id:
        type: integer
    type: object
  workspace.ApplyAdviceResponse:
    properties:
      advice:
        $ref: '#/definitions/workspace.Advice'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.ArchiveWorkspaceResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
      workspace:
        $ref: '#/definitions/workspace.Workspace'
    type: object
  workspace.BindCollaborationResourceRequest:
    properties:
      lark_document:
        $ref: '#/definitions/collaboration.CreateResourceForLarkDocumentRequest'
      lark_group:
        $ref: '#/definitions/workspace.BindLarkGroupRequest'
      lark_meeting:
        $ref: '#/definitions/collaboration.CreateResourceForLarkMeetingRequest'
      workspace_id:
        type: integer
    required:
    - workspace_id
    type: object
  workspace.BindCollaborationResourceResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      resource:
        $ref: '#/definitions/workspace.CollaborationResource'
      trace_id:
        type: string
    type: object
  workspace.BindLarkGroupRequest:
    properties:
      create_lark_group:
        type: boolean
      link_lark_group_id:
        type: string
      set_primary_if_empty:
        type: boolean
    required:
    - create_lark_group
    - set_primary_if_empty
    type: object
  workspace.BindWorkspaceTimelineEvidenceRequest:
    properties:
      evidence_id:
        type: integer
      relation:
        type: string
    required:
    - evidence_id
    type: object
  workspace.BindWorkspaceTimelineEvidenceResponse:
    properties:
      binding:
        $ref: '#/definitions/workspace.TimelineEntryEvidence'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.ClusterBinding:
    properties:
      cluster_id:
        type: string
      cluster_name:
        type: string
      cluster_provider:
        type: string
      cluster_region:
        type: string
      cluster_type:
        type: string
      created_at:
        type: integer
      id:
        type: integer
      workspace_id:
        type: integer
    type: object
  workspace.CollaborationResource:
    properties:
      bound_by:
        type: string
      collaboration_resource:
        allOf:
        - $ref: '#/definitions/collaboration.Resource'
        description: maybe nil, set when caller needs
      created_at:
        type: integer
      id:
        type: integer
      resource_id:
        type: integer
      workspace_id:
        type: integer
    type: object
  workspace.CompleteTaskResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task:
        $ref: '#/definitions/task.Task'
      trace_id:
        type: string
    type: object
  workspace.CreateAdviceRequest:
    properties:
      data:
        $ref: '#/definitions/workspace.AdviceData'
      description:
        type: string
      reply_message_id:
        type: string
      type:
        type: string
      workspace_id:
        type: integer
    required:
    - data
    - description
    - type
    - workspace_id
    type: object
  workspace.CreateAdviceResponse:
    properties:
      advice:
        $ref: '#/definitions/workspace.Advice'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.CreateAlertBindingsRequest:
    properties:
      alert_keys:
        items:
          type: string
        type: array
      workspace_id:
        type: integer
    type: object
  workspace.CreateAlertBindingsResponse:
    properties:
      bindings:
        items:
          $ref: '#/definitions/workspace.Alert'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.CreateClusterBindingsRequest:
    properties:
      cluster_ids:
        items:
          type: string
        type: array
      workspace_id:
        type: integer
    type: object
  workspace.CreateClusterBindingsResponse:
    properties:
      bindings:
        items:
          $ref: '#/definitions/workspace.ClusterBinding'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.CreateIssueBindingsRequest:
    properties:
      issue_keys:
        items:
          type: string
        type: array
      workspace_id:
        type: integer
    type: object
  workspace.CreateIssueBindingsResponse:
    properties:
      bindings:
        items:
          $ref: '#/definitions/workspace.Issue'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.CreateTaskRequest:
    properties:
      creator:
        type: string
      description:
        type: string
      due_at:
        type: integer
      group:
        type: string
      members:
        items:
          $ref: '#/definitions/task.TaskMember'
        type: array
      parent_task_id:
        type: integer
      priority:
        type: string
      started_at:
        type: integer
      title:
        type: string
    required:
    - creator
    - priority
    - title
    type: object
  workspace.CreateTaskResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task:
        $ref: '#/definitions/task.Task'
      trace_id:
        type: string
    type: object
  workspace.CreateTenantBindingsRequest:
    properties:
      tenant_ids:
        items:
          type: string
        type: array
      workspace_id:
        type: integer
    type: object
  workspace.CreateTenantBindingsResponse:
    properties:
      bindings:
        items:
          $ref: '#/definitions/workspace.TenantBinding'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.CreateWorkspaceTimelineEntryRequest:
    properties:
      created_by:
        type: string
      details:
        type: string
      entities:
        items:
          type: string
        type: array
      event_kind:
        type: string
      evidence_ids:
        items:
          type: integer
        type: array
      evidence_relation:
        type: string
      metadata_json:
        type: string
      occurred_at:
        type: string
      title:
        type: string
      topic:
        type: string
    required:
    - occurred_at
    - title
    type: object
  workspace.DeleteAdviceResponse:
    properties:
      advice:
        $ref: '#/definitions/workspace.Advice'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.DeleteAlertBindingsRequest:
    properties:
      ids:
        items:
          type: integer
        type: array
    type: object
  workspace.DeleteClusterBindingsRequest:
    properties:
      ids:
        items:
          type: integer
        type: array
      workspace_id:
        type: integer
    type: object
  workspace.DeleteIssueBindingsRequest:
    properties:
      ids:
        items:
          type: integer
        type: array
    type: object
  workspace.DeleteTenantBindingsRequest:
    properties:
      ids:
        items:
          type: integer
        type: array
      workspace_id:
        type: integer
    type: object
  workspace.GetAdviceResponse:
    properties:
      advice:
        $ref: '#/definitions/workspace.Advice'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.GetOverviewResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      overview:
        $ref: '#/definitions/workspace.Overview'
      trace_id:
        type: string
    type: object
  workspace.GetTaskResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task:
        $ref: '#/definitions/task.Task'
      trace_id:
        type: string
    type: object
  workspace.GetWorkspaceCuratedTimelineResponse:
    properties:
      entries:
        items:
          $ref: '#/definitions/workspace.TimelineEntry'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      summary:
        type: string
      summary_updated_at:
        description: SummaryUpdatedAt is the latest summary generation or edit time
          in Unix seconds.
        format: int64
        type: integer
      trace_id:
        type: string
    type: object
  workspace.GetWorkspaceResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
      workspace:
        $ref: '#/definitions/workspace.Workspace'
    type: object
  workspace.GetWorkspaceTimelineEvidenceResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      evidence:
        items:
          $ref: '#/definitions/workspace.TimelineEvidence'
        type: array
      trace_id:
        type: string
    type: object
  workspace.IgnoreAdviceResponse:
    properties:
      advice:
        $ref: '#/definitions/workspace.Advice'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.InitializeWorkspaceFromInputRequest:
    properties:
      configuration:
        $ref: '#/definitions/workspace.WorkspaceConfiguration'
      create_lark_group:
        type: boolean
      description:
        type: string
      link_lark_group_id:
        type: string
      members:
        items:
          $ref: '#/definitions/workspace.WorkspaceMember'
        type: array
      name:
        type: string
      severity:
        type: string
      type:
        type: string
    required:
    - create_lark_group
    - name
    type: object
  workspace.InitializeWorkspaceFromIssueRequest:
    properties:
      configuration:
        $ref: '#/definitions/workspace.WorkspaceConfiguration'
      create_lark_group:
        type: boolean
      initial_issue:
        type: string
      link_lark_group_id:
        type: string
      members:
        items:
          $ref: '#/definitions/workspace.WorkspaceMember'
        type: array
      severity:
        type: string
      type:
        type: string
    required:
    - create_lark_group
    - initial_issue
    type: object
  workspace.InitializeWorkspaceRequest:
    properties:
      from_input:
        $ref: '#/definitions/workspace.InitializeWorkspaceFromInputRequest'
      from_issue:
        $ref: '#/definitions/workspace.InitializeWorkspaceFromIssueRequest'
    type: object
  workspace.InitializeWorkspaceResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
      workspace:
        $ref: '#/definitions/workspace.Workspace'
    type: object
  workspace.Issue:
    properties:
      bound_by:
        type: string
      created_at:
        type: integer
      id:
        type: integer
      issue:
        allOf:
        - $ref: '#/definitions/ticket.JiraIssue'
        description: maybe nil, set when caller needs
      issue_key:
        type: string
      workspace_id:
        type: integer
    type: object
  workspace.ListAdvicesResponse:
    properties:
      advices:
        items:
          $ref: '#/definitions/workspace.Advice'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      total:
        type: integer
      trace_id:
        type: string
    type: object
  workspace.ListAlertBindingsResponse:
    properties:
      bindings:
        items:
          $ref: '#/definitions/workspace.Alert'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      total:
        type: integer
      trace_id:
        type: string
    type: object
  workspace.ListClusterBindingsResponse:
    properties:
      bindings:
        items:
          $ref: '#/definitions/workspace.ClusterBinding'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      total:
        type: integer
      trace_id:
        type: string
    type: object
  workspace.ListCollaborationResourcesResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      resources:
        items:
          $ref: '#/definitions/workspace.CollaborationResource'
        type: array
      total:
        type: integer
      trace_id:
        type: string
    type: object
  workspace.ListIssueBindingsResponse:
    properties:
      bindings:
        items:
          $ref: '#/definitions/workspace.Issue'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      total:
        type: integer
      trace_id:
        type: string
    type: object
  workspace.ListTasksResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      tasks:
        items:
          $ref: '#/definitions/task.Task'
        type: array
      total:
        type: integer
      trace_id:
        type: string
    type: object
  workspace.ListTenantBindingsResponse:
    properties:
      bindings:
        items:
          $ref: '#/definitions/workspace.TenantBinding'
        type: array
      errcode:
        type: integer
      errmsg:
        type: string
      total:
        type: integer
      trace_id:
        type: string
    type: object
  workspace.ListWorkspacesResponse:
    properties:
      age_reference_at:
        type: integer
      errcode:
        type: integer
      errmsg:
        type: string
      queried_at:
        type: integer
      total:
        type: integer
      trace_id:
        type: string
      workspaces:
        items:
          $ref: '#/definitions/workspace.Workspace'
        type: array
    type: object
  workspace.Overview:
    properties:
      comparison:
        $ref: '#/definitions/workspace.OverviewComparisonSection'
      data_quality:
        $ref: '#/definitions/workspace.OverviewQualitySection'
      meta:
        $ref: '#/definitions/workspace.OverviewMeta'
      open_age:
        $ref: '#/definitions/workspace.OverviewAgeSection'
      open_by_owner:
        $ref: '#/definitions/workspace.OverviewOwnersSection'
      review_counts:
        $ref: '#/definitions/workspace.OverviewReviewSection'
      summary:
        $ref: '#/definitions/workspace.OverviewSummarySection'
      volume:
        $ref: '#/definitions/workspace.OverviewVolumeSection'
    type: object
  workspace.OverviewAgeBucket:
    properties:
      bucket:
        type: string
      count:
        type: integer
    type: object
  workspace.OverviewAgeSection:
    properties:
      data:
        items:
          $ref: '#/definitions/workspace.OverviewAgeBucket'
        type: array
      error:
        description: Public error code, never a database error.
        type: string
      queried_at:
        type: integer
      status:
        enum:
        - available
        - unavailable
        type: string
    type: object
  workspace.OverviewComparison:
    properties:
      new_cases:
        type: integer
      resolved_cases:
        type: integer
    type: object
  workspace.OverviewComparisonSection:
    properties:
      data:
        $ref: '#/definitions/workspace.OverviewComparison'
      error:
        description: Public error code, never a database error.
        type: string
      queried_at:
        type: integer
      status:
        enum:
        - available
        - unavailable
        type: string
    type: object
  workspace.OverviewDataQuality:
    properties:
      missing_recovered_at:
        type: integer
      missing_started_at:
        type: integer
    type: object
  workspace.OverviewMeta:
    properties:
      age_reference_at:
        type: integer
      has_cases:
        description: Null when the existence query is unavailable.
        type: boolean
      period:
        $ref: '#/definitions/workspace.OverviewPeriod'
      previous_period:
        $ref: '#/definitions/workspace.OverviewPeriod'
      queried_at:
        type: integer
      timezone:
        type: string
    type: object
  workspace.OverviewOwnerCount:
    properties:
      count:
        type: integer
      owner:
        type: string
    type: object
  workspace.OverviewOwners:
    properties:
      others:
        type: integer
      owners:
        items:
          $ref: '#/definitions/workspace.OverviewOwnerCount'
        type: array
      top_owner_emails:
        items:
          type: string
        type: array
      unassigned:
        type: integer
    type: object
  workspace.OverviewOwnersSection:
    properties:
      data:
        $ref: '#/definitions/workspace.OverviewOwners'
      error:
        description: Public error code, never a database error.
        type: string
      queried_at:
        type: integer
      status:
        enum:
        - available
        - unavailable
        type: string
    type: object
  workspace.OverviewPeriod:
    properties:
      from:
        type: integer
      to:
        description: Exclusive.
        type: integer
    type: object
  workspace.OverviewQualitySection:
    properties:
      data:
        $ref: '#/definitions/workspace.OverviewDataQuality'
      error:
        description: Public error code, never a database error.
        type: string
      queried_at:
        type: integer
      status:
        enum:
        - available
        - unavailable
        type: string
    type: object
  workspace.OverviewReviewCounts:
    properties:
      aging:
        type: integer
      all_open:
        type: integer
      high_severity:
        type: integer
      recently_started:
        type: integer
      unassigned:
        type: integer
    type: object
  workspace.OverviewReviewSection:
    properties:
      data:
        $ref: '#/definitions/workspace.OverviewReviewCounts'
      error:
        description: Public error code, never a database error.
        type: string
      queried_at:
        type: integer
      status:
        enum:
        - available
        - unavailable
        type: string
    type: object
  workspace.OverviewSummary:
    properties:
      high_severity_open:
        type: integer
      new_cases:
        type: integer
      open_now:
        type: integer
      p1_open:
        type: integer
      p2_open:
        type: integer
      resolved_cases:
        type: integer
    type: object
  workspace.OverviewSummarySection:
    properties:
      data:
        $ref: '#/definitions/workspace.OverviewSummary'
      error:
        description: Public error code, never a database error.
        type: string
      queried_at:
        type: integer
      status:
        enum:
        - available
        - unavailable
        type: string
    type: object
  workspace.OverviewVolumeDay:
    properties:
      date:
        type: string
      from:
        type: integer
      new_cases:
        type: integer
      partial:
        type: boolean
      resolved_cases:
        type: integer
      to:
        description: Exclusive.
        type: integer
    type: object
  workspace.OverviewVolumeSection:
    properties:
      data:
        items:
          $ref: '#/definitions/workspace.OverviewVolumeDay'
        type: array
      error:
        description: Public error code, never a database error.
        type: string
      queried_at:
        type: integer
      status:
        enum:
        - available
        - unavailable
        type: string
    type: object
  workspace.RecoverWorkspaceResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
      workspace:
        $ref: '#/definitions/workspace.Workspace'
    type: object
  workspace.SyncWorkspaceTimelineResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
      workspace_id:
        type: integer
    type: object
  workspace.TenantBinding:
    properties:
      created_at:
        type: integer
      id:
        type: integer
      tenant_id:
        type: string
      tenant_name:
        type: string
      tenant_region:
        type: string
      workspace_id:
        type: integer
    type: object
  workspace.TimelineEntry:
    properties:
      confidence:
        type: number
      created_at:
        type: integer
      created_by:
        type: string
      details:
        type: string
      entities_json:
        type: string
      event_kind:
        type: string
      evidence_count:
        type: integer
      evidence_ids:
        items:
          type: integer
        type: array
      id:
        type: integer
      metadata_json:
        type: string
      occurred_at:
        type: string
      sort_order:
        type: integer
      source:
        type: string
      status:
        type: string
      superseded_by:
        type: integer
      title:
        type: string
      topic:
        type: string
      updated_at:
        type: integer
      updated_by:
        type: string
      version:
        type: integer
      workspace_id:
        type: integer
    type: object
  workspace.TimelineEntryEvidence:
    properties:
      created_at:
        type: integer
      entry_id:
        type: integer
      evidence_id:
        type: integer
      relation:
        type: string
      workspace_id:
        type: integer
    type: object
  workspace.TimelineEvidence:
    properties:
      actor_display_name:
        type: string
      actor_id:
        type: string
      content:
        type: string
      content_hash:
        type: string
      created_at:
        type: integer
      id:
        type: integer
      metadata_json:
        type: string
      observed_at:
        type: string
      occurred_at:
        type: string
      source:
        type: string
      source_key:
        type: string
      source_type:
        type: string
      source_updated_at:
        type: string
      updated_at:
        type: integer
      workspace_id:
        type: integer
    type: object
  workspace.UnbindCollaborationResourceRequest:
    properties:
      id:
        type: integer
      workspace_id:
        type: integer
    required:
    - id
    - workspace_id
    type: object
  workspace.UpdateAdviceRequest:
    properties:
      data:
        $ref: '#/definitions/workspace.AdviceData'
      description:
        type: string
    type: object
  workspace.UpdateAdviceResponse:
    properties:
      advice:
        $ref: '#/definitions/workspace.Advice'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
  workspace.UpdateTaskRequest:
    properties:
      creator:
        type: string
      description:
        type: string
      due_at:
        type: integer
      group:
        type: string
      members:
        items:
          $ref: '#/definitions/task.TaskMember'
        type: array
      parent_task_id:
        type: integer
      priority:
        type: string
      started_at:
        type: integer
      title:
        type: string
    type: object
  workspace.UpdateTaskResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      task:
        $ref: '#/definitions/task.Task'
      trace_id:
        type: string
    type: object
  workspace.UpdateWorkspaceConfigurationRequest:
    properties:
      send_overview_message_interval_minutes:
        type: integer
    type: object
  workspace.UpdateWorkspaceRequest:
    properties:
      configuration:
        $ref: '#/definitions/workspace.UpdateWorkspaceConfigurationRequest'
      description:
        type: string
      members:
        items:
          $ref: '#/definitions/workspace.WorkspaceMember'
        type: array
      name:
        type: string
      severity:
        type: string
    type: object
  workspace.UpdateWorkspaceResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
      workspace:
        $ref: '#/definitions/workspace.Workspace'
    type: object
  workspace.UpdateWorkspaceTimelineEntryRequest:
    properties:
      details:
        type: string
      entities:
        items:
          type: string
        type: array
      event_kind:
        type: string
      metadata_json:
        type: string
      occurred_at:
        type: string
      title:
        type: string
      topic:
        type: string
      updated_by:
        type: string
      version:
        type: integer
    required:
    - version
    type: object
  workspace.UpdateWorkspaceTimelineSummaryRequest:
    properties:
      summary:
        type: string
      updated_by:
        type: string
    required:
    - summary
    type: object
  workspace.UpdateWorkspaceTimelineSummaryResponse:
    properties:
      errcode:
        type: integer
      errmsg:
        type: string
      summary:
        type: string
      trace_id:
        type: string
    type: object
  workspace.Workspace:
    properties:
      archived_at:
        type: integer
      configuration:
        $ref: '#/definitions/workspace.WorkspaceConfiguration'
      created_at:
        type: integer
      description:
        type: string
      id:
        type: integer
      last_send_overview_message_at:
        type: integer
      last_timeline_sync_at:
        type: integer
      members:
        items:
          $ref: '#/definitions/workspace.WorkspaceMember'
        type: array
      name:
        type: string
      primary_chat_group_cr_id:
        description: primary chat group collboration resource id.
        type: integer
      recovered_at:
        type: integer
      severity:
        type: string
      started_at:
        type: integer
      status:
        type: string
      task_list_id:
        type: integer
      type:
        type: string
      updated_at:
        type: integer
    type: object
  workspace.WorkspaceConfiguration:
    properties:
      send_overview_message_interval_minutes:
        description: 0 means disable sending overview message.
        type: integer
    type: object
  workspace.WorkspaceMember:
    properties:
      email:
        type: string
      group:
        type: string
      role:
        type: string
    type: object
  workspace.WorkspaceTimelineEntryResponse:
    properties:
      entry:
        $ref: '#/definitions/workspace.TimelineEntry'
      errcode:
        type: integer
      errmsg:
        type: string
      trace_id:
        type: string
    type: object
info:
  contact: {}
  description: ticket maganger
  title: Ticket Manager API
  version: "1.0"
paths:
  /api/v1/ticketmanager/agent-gateway/events:
    post:
      consumes:
      - application/json
      operationId: AgentHandlerHandleAgentGatewayEvent
      parameters:
      - description: Agent Gateway task event
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/gatewayv1.TaskEvent'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/base.BaseResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Handle an Agent Gateway task event
      tags:
      - AgentHandler
  /api/v1/ticketmanager/collaboration/resources:
    get:
      consumes:
      - application/json
      operationId: CollaborationHandlerListResources
      parameters:
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: provider
        type: string
      - in: query
        name: resource_id
        type: string
      - in: query
        name: resource_name
        type: string
      - in: query
        name: ticket_id
        type: integer
      - in: query
        name: type
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/collaboration.ListResourcesResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List collaboration resources
      tags:
      - CollaborationHandler
    post:
      consumes:
      - application/json
      operationId: CollaborationHandlerCreateResource
      parameters:
      - description: Collaboration resource create payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/collaboration.CreateResourceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/collaboration.CreateResourceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create a collaboration resource
      tags:
      - CollaborationHandler
  /api/v1/ticketmanager/collaboration/resources/{id}:
    delete:
      consumes:
      - application/json
      operationId: CollaborationHandlerDeleteResource
      parameters:
      - description: Collaboration resource ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties: true
            type: object
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Delete a collaboration resource
      tags:
      - CollaborationHandler
    get:
      consumes:
      - application/json
      operationId: CollaborationHandlerGetResource
      parameters:
      - description: Collaboration resource ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/collaboration.GetResourceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get a collaboration resource
      tags:
      - CollaborationHandler
    put:
      consumes:
      - application/json
      operationId: CollaborationHandlerUpdateResource
      parameters:
      - description: Collaboration resource ID
        in: path
        name: id
        required: true
        type: integer
      - description: Collaboration resource update payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/collaboration.UpdateResourceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/collaboration.UpdateResourceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Update a collaboration resource
      tags:
      - CollaborationHandler
  /api/v1/ticketmanager/dispatch/contexts/{issue_key}:
    get:
      consumes:
      - application/json
      operationId: DispatchHandlerGetDispatchContext
      parameters:
      - description: Issue key
        in: path
        name: issue_key
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.GetDispatchContextResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get dispatch context
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/executions:
    get:
      consumes:
      - application/json
      operationId: DispatchHandlerListExecutions
      parameters:
      - in: query
        name: issue_key_like
        type: string
      - in: query
        name: mode
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: policy_family_id
        type: string
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: statuses
        type: array
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.ListExecutionsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List dispatch executions
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/executions/{id}:
    get:
      consumes:
      - application/json
      operationId: DispatchHandlerGetExecution
      parameters:
      - description: Execution ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.GetExecutionResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get dispatch execution
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/insights:
    get:
      consumes:
      - application/json
      operationId: DispatchHandlerGetInsight
      parameters:
      - in: query
        name: date
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.GetInsightResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get Dispatch insight
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/options:
    get:
      consumes:
      - application/json
      operationId: DispatchHandlerGetOptions
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.GetOptionsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get dispatch policy options
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/policies:
    get:
      consumes:
      - application/json
      operationId: DispatchHandlerListPolicies
      parameters:
      - in: query
        name: family_id
        type: string
      - in: query
        name: name_like
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: status
        type: string
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: statuses
        type: array
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.ListPoliciesResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List dispatch policies
      tags:
      - DispatchHandler
    post:
      consumes:
      - application/json
      operationId: DispatchHandlerCreatePolicy
      parameters:
      - description: Policy payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/dispatch.CreatePolicyRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.CreatePolicyResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create dispatch policy
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/policies/{id}:
    delete:
      consumes:
      - application/json
      operationId: DispatchHandlerDeletePolicy
      parameters:
      - description: Policy ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/base.BaseResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Delete dispatch policy
      tags:
      - DispatchHandler
    get:
      consumes:
      - application/json
      operationId: DispatchHandlerGetPolicy
      parameters:
      - description: Policy ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.GetPolicyResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get dispatch policy
      tags:
      - DispatchHandler
    put:
      consumes:
      - application/json
      operationId: DispatchHandlerUpdatePolicy
      parameters:
      - description: Policy ID
        in: path
        name: id
        required: true
        type: integer
      - description: Policy payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/dispatch.UpdatePolicyRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.UpdatePolicyResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Update dispatch policy
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/policies/{id}/publish:
    post:
      consumes:
      - application/json
      operationId: DispatchHandlerPublishPolicy
      parameters:
      - description: Policy ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.PublishPolicyResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Publish dispatch policy
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/policies/{id}/retire:
    post:
      consumes:
      - application/json
      operationId: DispatchHandlerRetirePolicy
      parameters:
      - description: Policy ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.RetirePolicyResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Retire dispatch policy
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/projects/{project_key}/components:
    get:
      operationId: DispatchHandlerListProjectComponents
      parameters:
      - description: Jira project key
        in: path
        name: project_key
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.ListProjectComponentsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List Jira project components
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/triggers:
    get:
      consumes:
      - application/json
      operationId: DispatchHandlerListDispatchTriggers
      parameters:
      - in: query
        name: issue_key_like
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: source
        type: string
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: statuses
        type: array
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.ListDispatchTriggersResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List dispatch triggers
      tags:
      - DispatchHandler
    post:
      consumes:
      - application/json
      operationId: DispatchHandlerCreateDispatchTrigger
      parameters:
      - description: Trigger payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/dispatch.CreateDispatchTriggerRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.CreateDispatchTriggerResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create dispatch trigger
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/dispatch/triggers/{id}:
    get:
      consumes:
      - application/json
      operationId: DispatchHandlerGetDispatchTrigger
      parameters:
      - description: Trigger ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dispatch.GetDispatchTriggerResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get dispatch trigger
      tags:
      - DispatchHandler
  /api/v1/ticketmanager/engineers:
    get:
      consumes:
      - application/json
      operationId: EngineerHandlerListEngineers
      parameters:
      - in: query
        name: enabled
        type: boolean
      - in: query
        name: keyword
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/engineer.ListEngineersResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List engineers
      tags:
      - EngineerHandler
  /api/v1/ticketmanager/engineers/{email}:
    get:
      consumes:
      - application/json
      operationId: EngineerHandlerGetEngineer
      parameters:
      - description: Engineer email
        in: path
        name: email
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/engineer.GetEngineerResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get engineer
      tags:
      - EngineerHandler
  /api/v1/ticketmanager/engineers/sync:
    post:
      consumes:
      - application/json
      operationId: EngineerHandlerSyncEngineers
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/engineer.SyncEngineersResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Sync engineers
      tags:
      - EngineerHandler
  /api/v1/ticketmanager/task/lists:
    get:
      consumes:
      - application/json
      operationId: TaskHandlerListTaskLists
      parameters:
      - in: query
        name: name
        type: string
      - in: query
        name: owner
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/task.ListTaskListsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List task lists
      tags:
      - TaskHandler
    post:
      consumes:
      - application/json
      operationId: TaskHandlerCreateTaskList
      parameters:
      - description: Task list create payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/task.CreateTaskListRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/task.CreateTaskListResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create a task list
      tags:
      - TaskHandler
  /api/v1/ticketmanager/task/lists/{id}:
    delete:
      consumes:
      - application/json
      operationId: TaskHandlerDeleteTaskList
      parameters:
      - description: Task list ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties: true
            type: object
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Delete a task list
      tags:
      - TaskHandler
    get:
      consumes:
      - application/json
      operationId: TaskHandlerGetTaskList
      parameters:
      - description: Task list ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/task.GetTaskListResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get a task list
      tags:
      - TaskHandler
    put:
      consumes:
      - application/json
      operationId: TaskHandlerUpdateTaskList
      parameters:
      - description: Task list ID
        in: path
        name: id
        required: true
        type: integer
      - description: Task list update payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/task.UpdateTaskListRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/task.UpdateTaskListResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Update a task list
      tags:
      - TaskHandler
  /api/v1/ticketmanager/task/tasks:
    get:
      consumes:
      - application/json
      operationId: TaskHandlerListTasks
      parameters:
      - in: query
        name: creator
        type: string
      - in: query
        name: group
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: parent_task_id
        type: integer
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: priority
        type: array
      - in: query
        name: task_list_id
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/task.ListTasksResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List tasks
      tags:
      - TaskHandler
    post:
      consumes:
      - application/json
      operationId: TaskHandlerCreateTask
      parameters:
      - description: Task create payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/task.CreateTaskRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/task.CreateTaskResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create a task
      tags:
      - TaskHandler
  /api/v1/ticketmanager/task/tasks/{id}:
    delete:
      consumes:
      - application/json
      operationId: TaskHandlerDeleteTask
      parameters:
      - description: Task ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties: true
            type: object
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Delete a task
      tags:
      - TaskHandler
    get:
      consumes:
      - application/json
      operationId: TaskHandlerGetTask
      parameters:
      - description: Task ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/task.GetTaskResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get a task
      tags:
      - TaskHandler
    put:
      consumes:
      - application/json
      operationId: TaskHandlerUpdateTask
      parameters:
      - description: Task ID
        in: path
        name: id
        required: true
        type: integer
      - description: Task update payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/task.UpdateTaskRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/task.UpdateTaskResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Update a task
      tags:
      - TaskHandler
  /api/v1/ticketmanager/task/tasks/{id}/complete:
    post:
      consumes:
      - application/json
      operationId: TaskHandlerCompleteTask
      parameters:
      - description: Task ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/task.CompleteTaskResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Complete a task
      tags:
      - TaskHandler
  /api/v1/ticketmanager/tickets:
    get:
      consumes:
      - application/json
      operationId: TicketsHandlerListTickets
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/ticket.ListTicketsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List ticket snapshots
      tags:
      - TicketsHandler
  /api/v1/ticketmanager/tickets/{jiraIssueKey}:
    get:
      consumes:
      - application/json
      operationId: TicketsHandlerGetTicket
      parameters:
      - description: Jira issue key
        in: path
        name: jiraIssueKey
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/ticket.GetTicketResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get a ticket by Jira issue key
      tags:
      - TicketsHandler
    post:
      consumes:
      - application/json
      operationId: TicketsHandlerCreateTicket
      parameters:
      - description: Jira issue key
        in: path
        name: jiraIssueKey
        required: true
        type: string
      - description: Optional mock Jira issue payload
        in: body
        name: request
        schema:
          $ref: '#/definitions/ticket.CreateTicketRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/ticket.CreateTicketResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create a ticket snapshot from Jira
      tags:
      - TicketsHandler
  /api/v1/ticketmanager/tickets/{jiraIssueKey}/jira_issue:
    put:
      consumes:
      - application/json
      operationId: TicketsHandlerUpdateTicketJiraIssue
      parameters:
      - description: Jira issue key
        in: path
        name: jiraIssueKey
        required: true
        type: string
      - description: Optional mock Jira issue payload
        in: body
        name: request
        schema:
          $ref: '#/definitions/ticket.UpdateTicketJiraIssueRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/base.BaseResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Refresh a ticket snapshot from Jira
      tags:
      - TicketsHandler
  /api/v1/ticketmanager/tickets/{jiraIssueKey}/timeline:
    get:
      consumes:
      - application/json
      operationId: TicketsHandlerListTimeline
      parameters:
      - description: Jira issue key
        in: path
        name: jiraIssueKey
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/ticket.GetTicketTimelineResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List ticket timeline events
      tags:
      - TicketsHandler
  /api/v1/ticketmanager/workspace/advices:
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerListAdvices
      parameters:
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: status
        type: array
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: type
        type: array
      - in: query
        name: workspace_id
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.ListAdvicesResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List workspace advices
      tags:
      - WorkspaceHandler
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerCreateAdvice
      parameters:
      - description: Workspace advice payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.CreateAdviceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.CreateAdviceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create workspace advice
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/advices/{id}:
    delete:
      consumes:
      - application/json
      operationId: WorkspaceHandlerDeleteAdvice
      parameters:
      - description: Advice ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.DeleteAdviceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Delete workspace advice
      tags:
      - WorkspaceHandler
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerGetAdvice
      parameters:
      - description: Advice ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.GetAdviceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get workspace advice
      tags:
      - WorkspaceHandler
    put:
      consumes:
      - application/json
      operationId: WorkspaceHandlerUpdateAdvice
      parameters:
      - description: Advice ID
        in: path
        name: id
        required: true
        type: integer
      - description: Workspace advice payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.UpdateAdviceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.UpdateAdviceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Update workspace advice
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/advices/{id}/apply:
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerApplyAdvice
      parameters:
      - description: Advice ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.ApplyAdviceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Apply workspace advice
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/advices/{id}/ignore:
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerIgnoreAdvice
      parameters:
      - description: Advice ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.IgnoreAdviceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Ignore workspace advice
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/alert-bindings:
    delete:
      consumes:
      - application/json
      operationId: WorkspaceHandlerDeleteAlertBindings
      parameters:
      - description: Workspace alert binding IDs
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.DeleteAlertBindingsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties: true
            type: object
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Delete workspace alert bindings
      tags:
      - WorkspaceHandler
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerListAlertBindings
      parameters:
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: alert_key
        type: array
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: with_alert_detail
        type: boolean
      - collectionFormat: multi
        in: query
        items:
          type: integer
        name: workspace_id
        type: array
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.ListAlertBindingsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List workspace alert bindings
      tags:
      - WorkspaceHandler
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerCreateAlertBindings
      parameters:
      - description: Workspace alert binding payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.CreateAlertBindingsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.CreateAlertBindingsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create workspace alert bindings
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/case-workspaces/{issue_key}/sync:
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerSyncCaseWorkspaceOfIssue
      parameters:
      - description: Jira issue key
        in: path
        name: issue_key
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/base.BaseResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create or sync Case Workspaces for a Jira issue
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/cluster-bindings:
    delete:
      consumes:
      - application/json
      operationId: WorkspaceHandlerDeleteClusterBindings
      parameters:
      - description: Workspace cluster binding IDs
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.DeleteClusterBindingsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties: true
            type: object
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Delete workspace cluster bindings
      tags:
      - WorkspaceHandler
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerListClusterBindings
      parameters:
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: cluster_id
        type: array
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - collectionFormat: multi
        in: query
        items:
          type: integer
        name: workspace_id
        type: array
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.ListClusterBindingsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List workspace cluster bindings
      tags:
      - WorkspaceHandler
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerCreateClusterBindings
      parameters:
      - description: Workspace cluster binding payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.CreateClusterBindingsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.CreateClusterBindingsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create workspace cluster bindings
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/collaboration-resource:
    delete:
      consumes:
      - application/json
      operationId: WorkspaceHandlerUnbindCollaborationResource
      parameters:
      - description: Workspace collaboration resource payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.UnbindCollaborationResourceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties: true
            type: object
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Unbind workspace collaboration resource
      tags:
      - WorkspaceHandler
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerListCollaborationResources
      parameters:
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - collectionFormat: multi
        in: query
        items:
          type: integer
        name: resource_id
        type: array
      - in: query
        name: with_resource_detail
        type: boolean
      - in: query
        name: workspace_id
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.ListCollaborationResourcesResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List workspace collaboration resources
      tags:
      - WorkspaceHandler
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerBindCollaborationResource
      parameters:
      - description: Workspace collaboration resource payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.BindCollaborationResourceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.BindCollaborationResourceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Bind workspace collaboration resource
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/curated-timeline/{entry_id}:
    patch:
      consumes:
      - application/json
      operationId: WorkspaceHandlerUpdateCuratedTimelineEntry
      parameters:
      - description: Timeline entry ID
        in: path
        name: entry_id
        required: true
        type: integer
      - description: Timeline entry update payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.UpdateWorkspaceTimelineEntryRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.WorkspaceTimelineEntryResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Update a curated timeline entry
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/curated-timeline/{entry_id}/confirm:
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerConfirmCuratedTimelineEntry
      parameters:
      - description: Timeline entry ID
        in: path
        name: entry_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.WorkspaceTimelineEntryResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Confirm a curated timeline entry
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/curated-timeline/{entry_id}/evidence:
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerBindTimelineEvidence
      parameters:
      - description: Timeline entry ID
        in: path
        name: entry_id
        required: true
        type: integer
      - description: Evidence binding payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.BindWorkspaceTimelineEvidenceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.BindWorkspaceTimelineEvidenceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Bind evidence to a curated timeline entry
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/curated-timeline/{entry_id}/hide:
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerHideCuratedTimelineEntry
      parameters:
      - description: Timeline entry ID
        in: path
        name: entry_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.WorkspaceTimelineEntryResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Hide a curated timeline entry
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/issue-bindings:
    delete:
      consumes:
      - application/json
      operationId: WorkspaceHandlerDeleteIssueBindings
      parameters:
      - description: Workspace issue binding IDs
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.DeleteIssueBindingsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties: true
            type: object
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Delete workspace issue bindings
      tags:
      - WorkspaceHandler
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerListIssueBindings
      parameters:
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: issue_key
        type: array
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: with_issue_detail
        type: boolean
      - collectionFormat: multi
        in: query
        items:
          type: integer
        name: workspace_id
        type: array
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.ListIssueBindingsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List workspace issue bindings
      tags:
      - WorkspaceHandler
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerCreateIssueBindings
      parameters:
      - description: Workspace issue binding payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.CreateIssueBindingsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.CreateIssueBindingsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create workspace issue bindings
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/overview:
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerGetOverview
      parameters:
      - in: query
        name: end_date
        type: string
      - in: query
        name: owner
        type: string
      - collectionFormat: multi
        in: query
        items:
          enum:
          - APAC
          - EMEA
          - JAPAN
          - NA
          - LATAM
          - OTHERS
          type: string
        name: region
        type: array
      - collectionFormat: multi
        in: query
        items:
          enum:
          - summary
          - comparison
          - volume
          - open_age
          - open_by_owner
          - review_counts
          - data_quality
          type: string
        name: sections
        type: array
      - collectionFormat: multi
        in: query
        items:
          enum:
          - P1
          - P2
          - P3
          - P4
          type: string
        name: severity_in
        type: array
      - in: query
        name: start_date
        type: string
      - in: query
        name: tenant_id
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.GetOverviewResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get Case Workspace overview
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/tenant-bindings:
    delete:
      consumes:
      - application/json
      operationId: WorkspaceHandlerDeleteTenantBindings
      parameters:
      - description: Workspace tenant binding IDs
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.DeleteTenantBindingsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties: true
            type: object
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Delete workspace tenant bindings
      tags:
      - WorkspaceHandler
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerListTenantBindings
      parameters:
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: tenant_id
        type: array
      - collectionFormat: multi
        in: query
        items:
          type: integer
        name: workspace_id
        type: array
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.ListTenantBindingsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List workspace tenant bindings
      tags:
      - WorkspaceHandler
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerCreateTenantBindings
      parameters:
      - description: Workspace tenant binding payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.CreateTenantBindingsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.CreateTenantBindingsResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create workspace tenant bindings
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces:
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerListWorkspaces
      parameters:
      - in: query
        name: age_reference_at
        type: integer
      - in: query
        name: cluster_keyword
        type: string
      - in: query
        name: issue_keyword
        type: string
      - in: query
        name: keyword
        type: string
      - in: query
        name: member
        type: string
      - enum:
        - started_at
        - recovered_at
        in: query
        name: missing_date
        type: string
      - enum:
        - lt_24h
        - 1_3d
        - 3_7d
        - gte_7d
        - unknown
        in: query
        name: open_age_bucket
        type: string
      - in: query
        name: owner
        type: string
      - in: query
        name: owner_assigned
        type: boolean
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: owner_exclude
        type: array
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: recovered_at_from
        type: integer
      - in: query
        name: recovered_at_to
        type: integer
      - collectionFormat: multi
        in: query
        items:
          enum:
          - APAC
          - EMEA
          - JAPAN
          - NA
          - LATAM
          - OTHERS
          type: string
        name: region
        type: array
      - enum:
        - P1
        - P2
        - P3
        - P4
        in: query
        name: severity
        type: string
      - collectionFormat: multi
        in: query
        items:
          enum:
          - P1
          - P2
          - P3
          - P4
          type: string
        name: severity_in
        type: array
      - enum:
        - started_at_desc
        - started_at_asc
        - severity_asc_started_at_asc
        in: query
        name: sort
        type: string
      - in: query
        name: started_at_from
        type: integer
      - default: desc
        enum:
        - asc
        - desc
        in: query
        name: started_at_order
        type: string
      - in: query
        name: started_at_to
        type: integer
      - collectionFormat: multi
        in: query
        items:
          enum:
          - firing
          - recovered
          - archived
          type: string
        name: status
        type: array
      - in: query
        name: tenant_id
        type: string
      - in: query
        name: tenant_keyword
        type: string
      - in: query
        name: type
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.ListWorkspacesResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List workspaces
      tags:
      - WorkspaceHandler
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerInitializeWorkspace
      parameters:
      - description: Workspace initialize payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.InitializeWorkspaceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.InitializeWorkspaceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Initialize a workspace
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces/{id}:
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerGetWorkspace
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.GetWorkspaceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get a workspace
      tags:
      - WorkspaceHandler
    put:
      consumes:
      - application/json
      operationId: WorkspaceHandlerUpdateWorkspace
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - description: Workspace update payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.UpdateWorkspaceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.UpdateWorkspaceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Update a workspace
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces/{id}/archive:
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerArchiveWorkspace
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.ArchiveWorkspaceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Archive a workspace
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces/{id}/curated-timeline:
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerListCuratedTimeline
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - in: query
        name: include_drafts
        type: boolean
      - in: query
        name: include_evidence
        type: boolean
      - in: query
        name: include_hidden
        type: boolean
      - in: query
        name: order
        type: string
      - in: query
        name: workspace_id
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.GetWorkspaceCuratedTimelineResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List workspace curated timeline entries
      tags:
      - WorkspaceHandler
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerCreateCuratedTimelineEntry
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - description: Timeline entry payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.CreateWorkspaceTimelineEntryRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.WorkspaceTimelineEntryResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create a workspace curated timeline entry
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces/{id}/recover:
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerRecoverWorkspace
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.RecoverWorkspaceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Recover a workspace
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces/{id}/tasks:
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerListTasks
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - in: query
        name: creator
        type: string
      - in: query
        name: group
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - in: query
        name: parent_task_id
        type: integer
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: priority
        type: array
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.ListTasksResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List workspace tasks
      tags:
      - WorkspaceHandler
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerCreateTask
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - description: Workspace task create payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.CreateTaskRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.CreateTaskResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Create a workspace task
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces/{id}/tasks/{task_id}:
    delete:
      consumes:
      - application/json
      operationId: WorkspaceHandlerDeleteTask
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - description: Task ID
        in: path
        name: task_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties: true
            type: object
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Delete a workspace task
      tags:
      - WorkspaceHandler
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerGetTask
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - description: Task ID
        in: path
        name: task_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.GetTaskResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Get a workspace task
      tags:
      - WorkspaceHandler
    put:
      consumes:
      - application/json
      operationId: WorkspaceHandlerUpdateTask
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - description: Task ID
        in: path
        name: task_id
        required: true
        type: integer
      - description: Workspace task update payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.UpdateTaskRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.UpdateTaskResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Update a workspace task
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces/{id}/tasks/{task_id}/complete:
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerCompleteTask
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - description: Task ID
        in: path
        name: task_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.CompleteTaskResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Complete a workspace task
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces/{id}/timeline-evidence:
    get:
      consumes:
      - application/json
      operationId: WorkspaceHandlerListTimelineEvidence
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - in: query
        name: actor
        type: string
      - in: query
        name: bound
        type: boolean
      - in: query
        name: end
        type: string
      - in: query
        name: issue_key
        type: string
      - in: query
        name: source
        type: string
      - in: query
        name: source_type
        type: string
      - in: query
        name: start
        type: string
      - in: query
        name: workspace_id
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.GetWorkspaceTimelineEvidenceResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: List workspace timeline evidence
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces/{id}/timeline-summary:
    patch:
      consumes:
      - application/json
      operationId: WorkspaceHandlerUpdateTimelineSummary
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      - description: Timeline summary payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/workspace.UpdateWorkspaceTimelineSummaryRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.UpdateWorkspaceTimelineSummaryResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Update workspace timeline summary
      tags:
      - WorkspaceHandler
  /api/v1/ticketmanager/workspace/workspaces/{id}/timeline-sync:
    post:
      consumes:
      - application/json
      operationId: WorkspaceHandlerSyncWorkspaceTimeline
      parameters:
      - description: Workspace ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/workspace.SyncWorkspaceTimelineResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Manually sync workspace timeline
      tags:
      - WorkspaceHandler
swagger: "2.0"
