jsmops

package module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2025 License: MIT Imports: 36 Imported by: 0

README

go-jsmops

一個簡單易用的 Go 語言庫,用於調用 Jira Service Management Operations REST API。

中文 | English

功能特性

  • ✅ 完整的 API 覆蓋:支援所有 Jira Service Management Operations API 端點
  • ✅ 類型安全:使用強類型的 Go 結構體定義請求和響應
  • ✅ 易於使用:清晰的接口設計,符合 Go 語言慣例
  • ✅ 日誌支援:可選的日誌記錄功能,方便調試
  • ✅ 錯誤處理:統一的錯誤處理機制

支援的資源類別

  • Alerts - 警報管理
  • Audit Logs - 審計日誌
  • Contacts - 聯絡人管理
  • Teams - 團隊管理
  • Roles - 自定義用戶角色
  • Escalations - 升級規則
  • Forwarding Rules - 轉發規則
  • Heartbeats - 心跳監控
  • Integrations - 整合管理
  • Integration Actions - 整合操作
  • Integration Filters - 整合過濾器
  • Maintenances - 維護計劃(全局和團隊)
  • Notification Rules - 通知規則
  • Notification Rule Steps - 通知規則步驟
  • Policies - 警報策略(全局和團隊)
  • Team Roles - 團隊角色
  • Routing Rules - 路由規則
  • Schedules - 排程管理
  • Schedule On-calls - 排程待命
  • Schedule Overrides - 排程覆蓋
  • Schedule Rotations - 排程輪換
  • Schedule Timelines - 排程時間線
  • Syncs - 同步管理
  • Sync Actions - 同步操作
  • Sync Action Groups - 同步操作組
  • JEC - JEC 頻道管理

安裝

go get github.com/circleyu/go-jsmops

快速開始

基本使用
package main

import (
    "fmt"
    "log"
    
    "github.com/circleyu/go-jsmops"
    "github.com/circleyu/go-jsmops/alert"
    "github.com/sirupsen/logrus"
)

func main() {
    // 初始化客戶端
    logger := logrus.New()
    logger.SetLevel(logrus.DebugLevel)
    
    options := &jsmops.ClientOptions{
        Level:  jsmops.LogDebug,
        Logger: logger,
    }
    
    client := jsmops.Init(
        "your-cloud-id",
        "your-api-token",
        "your-username",
        options,
    )
    
    // 使用 API
    // 範例:列出警報
    listReq := &alert.ListAlertsRequest{
        Limit: 10,
    }
    
    result, err := client.Alert.ListAlerts(listReq)
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Printf("找到 %d 個警報\n", len(result.Alerts))
}
不使用日誌
client := jsmops.Init(
    "your-cloud-id",
    "your-api-token",
    "your-username",
    jsmops.EmptyOptions(),
)

使用範例

詳細的使用範例請參考 examples 目錄:

API 文檔

認證

所有 API 請求使用基本認證(Basic Authentication)。您需要提供:

  • cloudID: Jira Cloud ID
  • apiToken: Jira API Token
  • userName: Jira 用戶名或郵箱
錯誤處理

所有 API 方法都會返回錯誤。錯誤類型為 APIError,包含 HTTP 狀態碼和錯誤詳情。

result, err := client.Alert.GetAlert(&alert.GetAlertRequest{ID: "alert-id"})
if err != nil {
    if apiErr, ok := err.(jsmops.APIError); ok {
        fmt.Printf("API 錯誤: %s (狀態碼: %d)\n", apiErr.Error(), apiErr.StatusCode)
    } else {
        fmt.Printf("其他錯誤: %v\n", err)
    }
}

開發

專案結構
go-jsmops/
├── main.go              # 主客戶端和初始化
├── http.go              # HTTP 請求處理
├── endpoints.go         # API 端點定義
├── alerts.go            # 警報管理
├── contacts.go          # 聯絡人管理
├── ...                  # 其他資源管理
├── alert/               # 警報相關結構
├── contacts/            # 聯絡人相關結構
└── examples/            # 使用範例
添加新功能
  1. 在對應的資源目錄下創建 request.goresult.go
  2. 創建或更新對應的 manager 文件(如 alerts.go
  3. endpoints.go 中添加端點定義
  4. main.go 中註冊新的 manager

授權

本專案採用 MIT 授權。

貢獻

歡迎提交 Issue 和 Pull Request!

相關連結

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIClient

type APIClient struct {
	Alert                 AlertsManager
	AuditLogs             AuditLogsManager
	Contacts              ContactsManager
	Teams                 TeamsManager
	Roles                 RolesManager
	Escalations           EscalationsManager
	ForwardingRules       ForwardingRulesManager
	Heartbeats            HeartbeatsManager
	Integrations          IntegrationsManager
	IntegrationActions    IntegrationActionsManager
	IntegrationFilters    IntegrationFiltersManager
	Maintenances          MaintenancesManager
	NotificationRules     NotificationRulesManager
	NotificationRuleSteps NotificationRuleStepsManager
	Policies              PoliciesManager
	TeamPolicies          TeamPoliciesManager
	TeamRoles             TeamRolesManager
	RoutingRules          RoutingRulesManager
	Schedules             SchedulesManager
	SchedulesOnCalls      SchedulesOnCallsManager
	SchedulesOverrides    SchedulesOverridesManager
	SchedulesRotations    SchedulesRotationsManager
	SchedulesTimelines    SchedulesTimelinesManager
	Syncs                 SyncsManager
	SyncsActions          SyncsActionsManager
	SyncsActionGroups     SyncsActionGroupsManager
	JEC                   JECManager
	// contains filtered or unexported fields
}

APIClient ...

func Init

func Init(cloudID, apiToken, userName string, options *ClientOptions) *APIClient

Init initializes the package

func (*APIClient) BackupJSON

func (client *APIClient) BackupJSON(fileName string, data interface{}) error

BackupJSON ...

type APIError

type APIError struct {
	APIError string
	// contains filtered or unexported fields
}

APIError ...

type AlertsManager

type AlertsManager interface {
	GetRequestStatus(*alert.GetRequestStatusRequest) (*alert.RequestStatusResponse, error)
	CreateAlert(*alert.CreateAlertRequest) (*alert.SuccessResponse, error)
	ListAlerts(*alert.ListAlertsRequest) (*alert.ListAlertsResult, error)
	GetAlert(*alert.GetAlertRequest) (*alert.Alert, error)
	DeleteAlert(*alert.DeleteAlertRequest) error
	GetAlertByAlias(*alert.GetAlertByAliasRequest) (*alert.Alert, error)
	AcknowledgeAlert(*alert.AcknowledgeAlertRequest) (*alert.SuccessResponse, error)
	AssignAlert(*alert.AssignAlertRequest) (*alert.SuccessResponse, error)
	AddResponder(*alert.AddResponderRequest) (*alert.SuccessResponse, error)
	AddExtraProperties(*alert.AddExtraPropertiesRequest) (*alert.SuccessResponse, error)
	DeleteExtraProperties(*alert.DeleteExtraPropertiesRequest) error
	AddTags(*alert.AddTagsRequest) (*alert.SuccessResponse, error)
	DeleteTags(*alert.DeleteTagsRequest) error
	CloseAlert(*alert.CloseAlertRequest) (*alert.SuccessResponse, error)
	EscalateAlert(*alert.EscalateAlertRequest) (*alert.SuccessResponse, error)
	ExecuteCustomAction(*alert.ExecuteCustomActionRequest) (*alert.SuccessResponse, error)
	SnoozeAlert(*alert.SnoozeAlertRequest) (*alert.SuccessResponse, error)
	UnacknowledgeAlert(*alert.UnacknowledgeAlertRequest) (*alert.SuccessResponse, error)
	ListAlertNotes(*alert.ListAlertNotesRequest) (*alert.ListAlertNotesResult, error)
	AddAlertNote(*alert.AddNoteRequest) (*alert.AddNoteResponse, error)
	DeleteAlertNote(*alert.DeleteAlertNoteRequest) error
	UpdateAlertNote(*alert.UpdateAlertNoteRequest) (*alert.AlertNote, error)
	UpdateAlertPriority(*alert.UpdateAlertPriorityRequest) (*alert.SuccessResponse, error)
	UpdateAlertMessage(*alert.UpdateAlertMessageRequest) (*alert.SuccessResponse, error)
	UpdateAlertDescription(*alert.UpdateAlertDescriptionRequest) (*alert.SuccessResponse, error)
	ListAlertLogs(*alert.ListAlertLogsRequest) (*alert.ListAlertLogsResult, error)
}

type AuditLogsManager added in v1.0.0

type AuditLogsManager interface {
	GetAuditLogs(*auditlogs.GetAuditLogsRequest) (*auditlogs.ListAuditLogsResult, error)
}

type ClientOptions

type ClientOptions struct {
	Level  LogLevel
	Logger *logrus.Logger
}

ClientOptions ...

func EmptyOptions

func EmptyOptions() *ClientOptions

EmptyOptions ...

func NewOptions

func NewOptions() *ClientOptions

type IntegrationFiltersManager added in v1.0.0

type IntegrationFiltersManager interface {
	GetIntegrationAlertFilter(*filters.GetIntegrationAlertFilterRequest) (*filters.IntegrationAlertFilter, error)
	UpdateIntegrationAlertFilter(*filters.UpdateIntegrationAlertFilterRequest) (*filters.IntegrationAlertFilter, error)
}

type JECManager added in v1.0.0

type JECManager interface {
	ListJECChannels(*jec.ListJECChannelsRequest) (*jec.ListJECChannelsResult, error)
	CreateJECChannel(*jec.CreateJECChannelRequest) (*jec.JECChannel, error)
	GetJECChannel(*jec.GetJECChannelRequest) (*jec.JECChannel, error)
	DeleteJECChannel(*jec.DeleteJECChannelRequest) error
	SendJECAction(*jec.SendJECActionRequest) (*jec.SendJECActionResponse, error)
}

type LogLevel

type LogLevel int
const (
	LogError LogLevel = iota
	LogInfo
	LogDebug
)

type NotificationRuleStepsManager added in v1.0.0

type NotificationRuleStepsManager interface {
	ListNotificationRuleSteps(*steps.ListNotificationRuleStepsRequest) (*steps.ListNotificationRuleStepsResult, error)
	CreateNotificationRuleStep(*steps.CreateNotificationRuleStepRequest) (*steps.NotificationRuleStep, error)
	GetNotificationRuleStep(*steps.GetNotificationRuleStepRequest) (*steps.NotificationRuleStep, error)
	UpdateNotificationRuleStep(*steps.UpdateNotificationRuleStepRequest) (*steps.NotificationRuleStep, error)
	DeleteNotificationRuleStep(*steps.DeleteNotificationRuleStepRequest) error
}

type PoliciesManager added in v1.0.0

type PoliciesManager interface {
	ListGlobalAlertPolicies(*policies.ListGlobalAlertPoliciesRequest) (*policies.ListPoliciesResult, error)
	CreateGlobalAlertPolicy(*policies.CreateGlobalAlertPolicyRequest) (*policies.Policy, error)
	GetGlobalAlertPolicy(*policies.GetGlobalAlertPolicyRequest) (*policies.Policy, error)
	PutGlobalAlertPolicy(*policies.PutGlobalAlertPolicyRequest) (*policies.Policy, error)
	DeleteGlobalAlertPolicy(*policies.DeleteGlobalAlertPolicyRequest) error
	ChangeOrderGlobalAlertPolicy(*policies.ChangeOrderGlobalAlertPolicyRequest) (*policies.Policy, error)
	EnableGlobalAlertPolicy(*policies.EnableGlobalAlertPolicyRequest) (*policies.Policy, error)
	DisableGlobalAlertPolicy(*policies.DisableGlobalAlertPolicyRequest) (*policies.Policy, error)
}

type RolesManager added in v1.0.0

type SchedulesManager added in v1.0.0

type SchedulesOnCallsManager added in v1.0.0

type SchedulesOnCallsManager interface {
	ListOnCallResponders(*oncalls.ListOnCallRespondersRequest) (*oncalls.ListOnCallRespondersResult, error)
	ListNextOnCallResponders(*oncalls.ListNextOnCallRespondersRequest) (*oncalls.ListOnCallRespondersResult, error)
	ExportOnCallResponders(*oncalls.ExportOnCallRespondersRequest) (*bytes.Reader, error)
}

type SchedulesOverridesManager added in v1.0.0

type SchedulesRotationsManager added in v1.0.0

type SchedulesTimelinesManager added in v1.0.0

type SchedulesTimelinesManager interface {
	GetScheduleTimeline(*timelines.GetScheduleTimelineRequest) (*timelines.ScheduleTimeline, error)
	ExportScheduleTimeline(*timelines.ExportScheduleTimelineRequest) (*bytes.Reader, error)
}

type SyncsActionsManager added in v1.0.0

type SyncsManager added in v1.0.0

type SyncsManager interface {
	ListSyncs(*syncs.ListSyncsRequest) (*syncs.ListSyncsResult, error)
	CreateSync(*syncs.CreateSyncRequest) (*syncs.Sync, error)
	GetSync(*syncs.GetSyncRequest) (*syncs.Sync, error)
	UpdateSync(*syncs.UpdateSyncRequest) (*syncs.Sync, error)
	DeleteSync(*syncs.DeleteSyncRequest) error
}

type TeamRolesManager added in v1.0.0

type TeamRolesManager interface {
	ListTeamRoles(*roles.ListTeamRolesRequest) (*roles.ListTeamRolesResult, error)
	GetTeamRole(*roles.GetTeamRoleRequest) (*roles.TeamRole, error)
	CreateTeamRole(*roles.CreateTeamRoleRequest) (*roles.TeamRole, error)
	UpdateTeamRole(*roles.UpdateTeamRoleRequest) (*roles.TeamRole, error)
	DeleteTeamRole(*roles.DeleteTeamRoleRequest) error
}

type TeamsManager added in v1.0.0

type TeamsManager interface {
	ListTeams(*teams.ListTeamsRequest) (*teams.ListTeamsResult, error)
	EnableOps(*teams.EnableOpsRequest) (*teams.SuccessResponse, error)
	GetTeamRequestStatus(*teams.GetTeamRequestStatusRequest) (*teams.RequestStatusResponse, error)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL