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
  conversation.MessageRequest:
    properties:
      actorID:
        type: string
      input:
        type: string
      source:
        type: string
      threadID:
        type: string
      ticketKey:
        type: string
    type: object
  conversation.MessageResponse:
    properties:
      answer:
        type: string
      errcode:
        type: integer
      errmsg:
        type: string
      interactionID:
        type: string
      trace_id:
        type: string
    type: object
  dispatch.Action:
    properties:
      assign:
        $ref: '#/definitions/dispatch.AssignAction'
      escalate:
        $ref: '#/definitions/dispatch.EscalateAction'
      retrigger:
        $ref: '#/definitions/dispatch.RetriggerAction'
      type:
        type: string
    type: object
  dispatch.ActionExecution:
    properties:
      context:
        $ref: '#/definitions/dispatch.ActionExecutionContext'
      index:
        type: integer
      status:
        type: string
    type: object
  dispatch.ActionExecutionContext:
    properties:
      assign:
        $ref: '#/definitions/dispatch.ActionExecutionContextAssign'
      escalate:
        $ref: '#/definitions/dispatch.ActionExecutionContextEscalate'
      retrigger:
        $ref: '#/definitions/dispatch.ActionExecutionContextRetrigger'
    type: object
  dispatch.ActionExecutionContextAssign:
    properties:
      assignee:
        type: string
      candidates:
        items:
          type: string
        type: array
      reason:
        type: string
      receiver_name:
        type: string
    type: object
  dispatch.ActionExecutionContextEscalate:
    properties:
      dispatch_trigger_id:
        type: integer
      from_support_tier:
        type: string
      to_support_tier:
        type: string
    type: object
  dispatch.ActionExecutionContextRetrigger:
    properties:
      available_at:
        type: string
      dispatch_trigger_id:
        type: integer
    type: object
  dispatch.AssignAction:
    properties:
      receiver:
        $ref: '#/definitions/dispatch.Receiver'
      strategy:
        type: string
    type: object
  dispatch.ConditionExpr:
    properties:
      all:
        items:
          $ref: '#/definitions/dispatch.ConditionExpr'
        type: array
      always:
        type: boolean
      any:
        items:
          $ref: '#/definitions/dispatch.ConditionExpr'
        type: array
      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
      current_support_tier:
        type: string
      issue_key:
        type: string
    type: object
  dispatch.DispatchContextOverride:
    properties:
      current_support_tier:
        type: string
    type: object
  dispatch.DispatchDryrunInput:
    properties:
      context_override:
        $ref: '#/definitions/dispatch.DispatchContextOverride'
    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
    type: object
  dispatch.EscalateAction:
    properties:
      support_tier:
        type: string
    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
      policy_id:
        type: integer
      rule_executions:
        items:
          $ref: '#/definitions/dispatch.RuleExecution'
        type: array
      status:
        type: string
      updated_at:
        type: string
    type: object
  dispatch.FieldOption:
    properties:
      action:
        $ref: '#/definitions/dispatch.FieldOptionAction'
      rule_condition:
        $ref: '#/definitions/dispatch.FieldOptionRuleCondition'
    type: object
  dispatch.FieldOptionAction:
    properties:
      on_call_teams:
        items:
          $ref: '#/definitions/dispatch.OnCallTeamOption'
        type: array
      receiver_mapping_fields:
        items:
          type: string
        type: array
    type: object
  dispatch.FieldOptionRuleCondition:
    properties:
      issue_fields:
        items:
          type: string
        type: array
      multi_value_operators:
        items:
          type: string
        type: array
      no_value_operators:
        items:
          type: string
        type: array
      single_value_operators:
        items:
          type: string
        type: array
      weekly_time_window_operators:
        items:
          type: string
        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.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.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.OnCallTeamOption:
    properties:
      team_key:
        type: string
      team_name:
        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
      policy_id:
        type: integer
      project_key_in:
        items:
          type: string
        type: array
      support_tier_is:
        type: string
    type: object
  dispatch.PolicyTriggerInput:
    properties:
      enable:
        type: boolean
      project_key_in:
        items:
          type: string
        type: array
      support_tier_is:
        type: string
    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:
      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.Transition:
    properties:
      on_success:
        type: string
    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
  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.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:
      assignee:
        $ref: '#/definitions/ticket.JiraUser'
      comments:
        description: nil means not fetch
        items:
          $ref: '#/definitions/ticket.JiraComment'
        type: array
      components:
        items:
          type: string
        type: array
      created_at:
        type: integer
      custom_fields:
        $ref: '#/definitions/ticket.JiraIssueCustomFields'
      customer_info:
        $ref: '#/definitions/ticket.JiraIssueCustomerInfo'
      description:
        type: string
      id:
        description: raw ID in jira
        type: string
      issue_links:
        items:
          $ref: '#/definitions/ticket.JiraIssueLink'
        type: array
      key:
        type: string
      priority:
        type: string
      project:
        $ref: '#/definitions/ticket.JiraProject'
      reporter:
        $ref: '#/definitions/ticket.JiraUser'
      resolved_at:
        type: integer
      status:
        type: string
      summary:
        type: string
      updated_at:
        type: integer
    type: object
  ticket.JiraIssueCustomFields:
    properties:
      on_call_tier:
        type: string
    type: object
  ticket.JiraIssueCustomerInfo:
    properties:
      cluster_id:
        type: string
      environment:
        type: string
      issue_key:
        type: string
      tenant_id:
        type: string
      tenant_region:
        type: string
    type: object
  ticket.JiraIssueLink:
    properties:
      inward_issue:
        type: string
      outward_issue:
        type: string
      type_name:
        type: string
    type: object
  ticket.JiraProject:
    properties:
      key:
        type: string
      name:
        type: string
    type: object
  ticket.JiraUser:
    properties:
      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
      triageModule:
        type: string
      triagePriority:
        type: string
      triageTags:
        items:
          type: string
        type: array
      triageType:
        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.UpdateTriageRequest:
    properties:
      confidence:
        type: number
      module:
        type: string
      priority:
        type: string
      reasoningSummary:
        type: string
      tags:
        items:
          type: string
        type: array
      type:
        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/collaboration.CreateResourceForLarkGroupRequest'
      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.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.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
      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.InitializeWorkspaceRequest:
    properties:
      configuration:
        $ref: '#/definitions/workspace.WorkspaceConfiguration'
      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:
    - initial_issue
    - severity
    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:
      errcode:
        type: integer
      errmsg:
        type: string
      total:
        type: integer
      trace_id:
        type: string
      workspaces:
        items:
          $ref: '#/definitions/workspace.Workspace'
        type: array
    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
      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/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/conversations:
    post:
      consumes:
      - application/json
      operationId: ConversationHandlerHandle
      parameters:
      - description: Conversation payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/conversation.MessageRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/conversation.MessageResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Submit a conversation message
      tags:
      - ConversationHandler
  /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/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: project_key
        type: string
      - in: query
        name: project_key_like
        type: string
      - in: query
        name: status
        type: string
      - collectionFormat: multi
        in: query
        items:
          type: string
        name: statuses
        type: array
      - in: query
        name: support_tier
        type: string
      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/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/base.BaseResponse'
        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/tickets/{jiraIssueKey}/triage:
    put:
      consumes:
      - application/json
      operationId: TicketsHandlerUpdateTriage
      parameters:
      - description: Jira issue key
        in: path
        name: jiraIssueKey
        required: true
        type: string
      - description: Update triage payload
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/triage.UpdateTriageRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/base.BaseResponse'
        default:
          description: ""
          schema:
            $ref: '#/definitions/base.BaseResponse'
      summary: Update ticket triage
      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/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/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: keyword
        type: string
      - in: query
        name: member
        type: string
      - in: query
        name: page
        type: integer
      - in: query
        name: page_size
        type: integer
      - 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"
