client

package module
Version: v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Sep 15, 2021 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

Package client provides an HTTP client for using the Playbooks API.

Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/mattermost/mattermost-plugin-playbooks/client"
	"github.com/mattermost/mattermost-server/v6/model"
)

func main() {
	ctx := context.Background()

	client4 := model.NewAPIv4Client("http://localhost:8065")
	_, _, err := client4.Login("test@example.com", "testtest")
	if err != nil {
		log.Fatal(err)
	}

	c, err := client.New(client4)
	if err != nil {
		log.Fatal(err)
	}

	playbookRunID := "h4n3h7s1qjf5pkis4dn6cuxgwa"
	playbookRun, err := c.PlaybookRuns.Get(ctx, playbookRunID)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Playbook Run Name: %s\n", playbookRun.Name)
}
Output:

Index

Examples

Constants

View Source
const Me = "me"

Me is a constant that refers to the current user, and can be used in various APIs in place of explicitly specifying the current user's id.

Variables

This section is empty.

Functions

This section is empty.

Types

type Checklist

type Checklist struct {
	ID    string          `json:"id"`
	Title string          `json:"title"`
	Items []ChecklistItem `json:"items"`
}

Checklist represents a checklist in a playbook

type ChecklistItem

type ChecklistItem struct {
	ID                     string `json:"id"`
	Title                  string `json:"title"`
	State                  string `json:"state"`
	StateModified          int64  `json:"state_modified"`
	StateModifiedPostID    string `json:"state_modified_post_id"`
	AssigneeID             string `json:"assignee_id"`
	AssigneeModified       int64  `json:"assignee_modified"`
	AssigneeModifiedPostID string `json:"assignee_modified_post_id"`
	Command                string `json:"command"`
	CommandLastRun         int64  `json:"command_last_run"`
	Description            string `json:"description"`
}

ChecklistItem represents an item in a checklist

type Client

type Client struct {

	// BaseURL is the base HTTP endpoint for the Playbooks plugin.
	BaseURL *url.URL
	// User agent used when communicating with the Playbooks API.
	UserAgent string

	// PlaybookRuns is a collection of methods used to interact with playbook runs.
	PlaybookRuns *PlaybookRunService
	// Playbooks is a collection of methods used to interact with playbooks.
	Playbooks *PlaybooksService
	// Settings is a collection of methods used to interact with settings.
	Settings *SettingsService
	// contains filtered or unexported fields
}

Client manages communication with the Playbooks API.

func New

func New(client4 *model.Client4) (*Client, error)

New creates a new instance of Client using the configuration from the given Mattermost Client.

type ErrorResponse

type ErrorResponse struct {
	// Method is the HTTP verb used in the API request.
	Method string
	// URL is the HTTP endpoint used in the API request.
	URL string
	// StatusCode is the HTTP status code returned by the API.
	StatusCode int

	// Err is the error parsed from the API response.
	Err error `json:"error"`
}

ErrorResponse is an error from an API request.

func (*ErrorResponse) Error

func (r *ErrorResponse) Error() string

Error describes the error from the API request.

func (*ErrorResponse) UnmarshalJSON

func (e *ErrorResponse) UnmarshalJSON(data []byte) error

func (*ErrorResponse) Unwrap

func (r *ErrorResponse) Unwrap() error

Unwrap exposes the underlying error of an ErrorResponse.

type GetPlaybookRunsResults

type GetPlaybookRunsResults struct {
	TotalCount int           `json:"total_count"`
	PageCount  int           `json:"page_count"`
	HasMore    bool          `json:"has_more"`
	Items      []PlaybookRun `json:"items"`
	Disabled   bool          `json:"disabled"`
}

type GetPlaybooksResults

type GetPlaybooksResults struct {
	TotalCount int        `json:"total_count"`
	PageCount  int        `json:"page_count"`
	HasMore    bool       `json:"has_more"`
	Items      []Playbook `json:"items"`
}

type GlobalSettings

type GlobalSettings struct {
	// PlaybookCreatorsUserIds is an array of user ids authorized to create new playbooks.
	PlaybookCreatorsUserIds []string `json:"playbook_creators_user_ids"`

	// EnableExperimentalFeatures is a read-only field set to true when experimental features
	// are enabled. Changing this field requires access to the system console plugin
	// configuration.
	EnableExperimentalFeatures bool `json:"enable_experimental_features"`
}

type Playbook

type Playbook struct {
	ID                             string      `json:"id"`
	Title                          string      `json:"title"`
	Description                    string      `json:"description"`
	TeamID                         string      `json:"team_id"`
	CreatePublicPlaybookRun        bool        `json:"create_public_playbook_run"`
	CreateAt                       int64       `json:"create_at"`
	DeleteAt                       int64       `json:"delete_at"`
	NumStages                      int64       `json:"num_stages"`
	NumSteps                       int64       `json:"num_steps"`
	Checklists                     []Checklist `json:"checklists"`
	MemberIDs                      []string    `json:"member_ids"`
	ReminderMessageTemplate        string      `json:"reminder_message_template"`
	ReminderTimerDefaultSeconds    int64       `json:"reminder_timer_default_seconds"`
	InvitedUserIDs                 []string    `json:"invited_user_ids"`
	InvitedGroupIDs                []string    `json:"invited_group_ids"`
	InvitedUsersEnabled            bool        `json:"invited_users_enabled"`
	DefaultOwnerID                 string      `json:"default_owner_id"`
	DefaultOwnerEnabled            bool        `json:"default_owner_enabled"`
	BroadcastChannelIDs            []string    `json:"broadcast_channel_ids"`
	BroadcastEnabled               bool        `json:"broadcast_enabled"`
	ExportChannelOnFinishedEnabled bool        `json:"export_channel_on_finished_enabled"`
}

Playbook represents the planning before a playbook run is initiated.

type PlaybookCreateOptions

type PlaybookCreateOptions struct {
	Title                       string      `json:"title"`
	Description                 string      `json:"description"`
	TeamID                      string      `json:"team_id"`
	CreatePublicPlaybookRun     bool        `json:"create_public_playbook_run"`
	Checklists                  []Checklist `json:"checklists"`
	MemberIDs                   []string    `json:"member_ids"`
	BroadcastChannelID          string      `json:"broadcast_channel_id"`
	ReminderMessageTemplate     string      `json:"reminder_message_template"`
	ReminderTimerDefaultSeconds int64       `json:"reminder_timer_default_seconds"`
	InvitedUserIDs              []string    `json:"invited_user_ids"`
	InvitedGroupIDs             []string    `json:"invited_group_ids"`
	InviteUsersEnabled          bool        `json:"invite_users_enabled"`
	DefaultOwnerID              string      `json:"default_owner_id"`
	DefaultOwnerEnabled         bool        `json:"default_owner_enabled"`
	BroadcastChannelIDs         []string    `json:"broadcast_channel_ids"`
	BroadcastEnabled            bool        `json:"broadcast_enabled"`
}

PlaybookCreateOptions specifies the parameters for PlaybooksService.Create method.

type PlaybookListOptions

type PlaybookListOptions struct {
	Sort      Sort          `url:"sort,omitempty"`
	Direction SortDirection `url:"direction,omitempty"`
}

PlaybookListOptions specifies the optional parameters to the PlaybooksService.List method.

type PlaybookRun

type PlaybookRun struct {
	ID                             string          `json:"id"`
	Name                           string          `json:"name"`
	Description                    string          `json:"description"`
	OwnerUserID                    string          `json:"owner_user_id"`
	ReporterUserID                 string          `json:"reporter_user_id"`
	TeamID                         string          `json:"team_id"`
	ChannelID                      string          `json:"channel_id"`
	CreateAt                       int64           `json:"create_at"`
	EndAt                          int64           `json:"end_at"`
	DeleteAt                       int64           `json:"delete_at"`
	ActiveStage                    int             `json:"active_stage"`
	ActiveStageTitle               string          `json:"active_stage_title"`
	PostID                         string          `json:"post_id"`
	PlaybookID                     string          `json:"playbook_id"`
	Checklists                     []Checklist     `json:"checklists"`
	StatusPosts                    []StatusPost    `json:"status_posts"`
	ReminderPostID                 string          `json:"reminder_post_id"`
	PreviousReminder               time.Duration   `json:"previous_reminder"`
	BroadcastChannelID             string          `json:"broadcast_channel_id"`
	ReminderMessageTemplate        string          `json:"reminder_message_template"`
	InvitedUserIDs                 []string        `json:"invited_user_ids"`
	InvitedGroupIDs                []string        `json:"invited_group_ids"`
	TimelineEvents                 []TimelineEvent `json:"timeline_events"`
	ExportChannelOnFinishedEnabled bool            `json:"export_channel_on_finished_enabled"`
}

PlaybookRun represents a playbook run.

type PlaybookRunCreateOptions

type PlaybookRunCreateOptions struct {
	Name        string `json:"name"`
	OwnerUserID string `json:"owner_user_id"`
	TeamID      string `json:"team_id"`
	Description string `json:"description"`
	PostID      string `json:"post_id"`
	PlaybookID  string `json:"playbook_id"`
}

PlaybookRunCreateOptions specifies the parameters for PlaybookRunService.Create method.

type PlaybookRunList

type PlaybookRunList struct {
	TotalCount int  `json:"total_count"`
	PageCount  int  `json:"page_count"`
	HasMore    bool `json:"has_more"`
	Items      []*PlaybookRun
}

PlaybookRunList contains the paginated result.

type PlaybookRunListOptions

type PlaybookRunListOptions struct {
	// TeamID filters playbook runs to those in the given team.
	TeamID string `url:"team_id,omitempty"`

	Sort      Sort          `url:"sort,omitempty"`
	Direction SortDirection `url:"direction,omitempty"`

	// Statuses filters by InProgress or Ended; defaults to All when no status specified.
	Statuses []Status `url:"statuses,omitempty"`

	// OwnerID filters by owner's Mattermost user ID. Defaults to blank (no filter). Specify "me" for current user.
	OwnerID string `url:"owner_user_id,omitempty"`

	// ParticipantID filters playbook runs that have this user as a participant. Defaults to blank (no filter). Specify "me" for current user.
	ParticipantID string `url:"participant_id,omitempty"`

	// SearchTerm returns results of the search term and respecting the other header filter options.
	// The search term acts as a filter and respects the Sort and Direction fields (i.e., results are
	// not returned in relevance order).
	SearchTerm string `url:"search_term,omitempty"`

	// PlaybookID filters playbook runs that are derived from this playbook id.
	// Defaults to blank (no filter).
	PlaybookID string `url:"playbook_id,omitempty"`

	// ActiveGTE filters playbook runs that were active after (or equal) to the unix time given (in millis).
	// A value of 0 means the filter is ignored (which is the default).
	ActiveGTE int64 `url:"active_gte,omitempty"`

	// ActiveLT filters playbook runs that were active before the unix time given (in millis).
	// A value of 0 means the filter is ignored (which is the default).
	ActiveLT int64 `url:"active_lt,omitempty"`

	// StartedGTE filters playbook runs that were started after (or equal) to the unix time given (in millis).
	// A value of 0 means the filter is ignored (which is the default).
	StartedGTE int64 `url:"started_gte,omitempty"`

	// StartedLT filters playbook runs that were started before the unix time given (in millis).
	// A value of 0 means the filter is ignored (which is the default).
	StartedLT int64 `url:"started_lt,omitempty"`
}

PlaybookRunListOptions specifies the optional parameters to the PlaybookRunService.List method.

type PlaybookRunMetadata

type PlaybookRunMetadata struct {
	ChannelName        string `json:"channel_name"`
	ChannelDisplayName string `json:"channel_display_name"`
	TeamName           string `json:"team_name"`
	NumParticipants    int64  `json:"num_participants"`
	TotalPosts         int64  `json:"total_posts"`
}

PlaybookRunMetadata tracks ancillary metadata about a playbook run.

type PlaybookRunService

type PlaybookRunService struct {
	// contains filtered or unexported fields
}

PlaybookRunService handles communication with the playbook run related methods of the Playbooks API.

func (*PlaybookRunService) Create

Create a playbook run.

func (*PlaybookRunService) Finish added in v0.6.0

func (s *PlaybookRunService) Finish(ctx context.Context, playbookRunID string) error

func (*PlaybookRunService) Get

func (s *PlaybookRunService) Get(ctx context.Context, playbookRunID string) (*PlaybookRun, error)

Get a playbook run.

Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/mattermost/mattermost-plugin-playbooks/client"
	"github.com/mattermost/mattermost-server/v6/model"
)

func main() {
	ctx := context.Background()

	client4 := model.NewAPIv4Client("http://localhost:8065")
	client4.Login("test@example.com", "testtest")

	c, err := client.New(client4)
	if err != nil {
		log.Fatal(err)
	}

	playbookRunID := "h4n3h7s1qjf5pkis4dn6cuxgwa"
	playbookRun, err := c.PlaybookRuns.Get(ctx, playbookRunID)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Playbook Run Name: %s\n", playbookRun.Name)
}
Output:

func (*PlaybookRunService) GetByChannelID

func (s *PlaybookRunService) GetByChannelID(ctx context.Context, channelID string) (*PlaybookRun, error)

GetByChannelID gets a playbook run by ChannelID.

func (*PlaybookRunService) GetMetadata

func (s *PlaybookRunService) GetMetadata(ctx context.Context, playbookRunID string) (*PlaybookRunMetadata, error)

Get a playbook run's metadata.

func (*PlaybookRunService) List

List the playbook runs.

Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/mattermost/mattermost-plugin-playbooks/client"
	"github.com/mattermost/mattermost-server/v6/model"
)

func main() {
	ctx := context.Background()

	client4 := model.NewAPIv4Client("http://localhost:8065")
	_, _, err := client4.Login("test@example.com", "testtest")
	if err != nil {
		log.Fatal(err.Error())
	}

	teams, _, err := client4.GetAllTeams("", 0, 1)
	if err != nil {
		log.Fatal(err.Error())
	}
	if len(teams) == 0 {
		log.Fatal("no teams for this user")
	}

	c, err := client.New(client4)
	if err != nil {
		log.Fatal(err)
	}

	var playbookRuns []client.PlaybookRun
	for page := 0; ; page++ {
		result, err := c.PlaybookRuns.List(ctx, page, 100, client.PlaybookRunListOptions{
			TeamID:    teams[0].Id,
			Sort:      client.SortByCreateAt,
			Direction: client.SortDesc,
		})
		if err != nil {
			log.Fatal(err)
		}

		playbookRuns = append(playbookRuns, result.Items...)
		if !result.HasMore {
			break
		}
	}

	for _, playbookRun := range playbookRuns {
		fmt.Printf("Playbook Run Name: %s\n", playbookRun.Name)
	}
}
Output:

func (*PlaybookRunService) UpdateStatus

func (s *PlaybookRunService) UpdateStatus(ctx context.Context, playbookRunID string, message string, reminderInSeconds int64) error

type PlaybooksService

type PlaybooksService struct {
	// contains filtered or unexported fields
}

PlaybooksService handles communication with the playbook related methods of the Playbook API.

func (*PlaybooksService) Create

Create a playbook.

func (*PlaybooksService) Delete

func (s *PlaybooksService) Delete(ctx context.Context, playbookID string) error

func (*PlaybooksService) Get

func (s *PlaybooksService) Get(ctx context.Context, playbookID string) (*Playbook, error)

Get a playbook.

Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/mattermost/mattermost-plugin-playbooks/client"
	"github.com/mattermost/mattermost-server/v6/model"
)

func main() {
	ctx := context.Background()

	client4 := model.NewAPIv4Client("http://localhost:8065")
	client4.Login("test@example.com", "testtest")

	c, err := client.New(client4)
	if err != nil {
		log.Fatal(err)
	}

	playbookID := "h4n3h7s1qjf5pkis4dn6cuxgwa"
	playbook, err := c.Playbooks.Get(ctx, playbookID)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Playbook Name: %s\n", playbook.Title)
}
Output:

func (*PlaybooksService) List

func (s *PlaybooksService) List(ctx context.Context, teamId string, page, perPage int, opts PlaybookListOptions) (*GetPlaybooksResults, error)

List the playbooks.

Example
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/mattermost/mattermost-plugin-playbooks/client"
	"github.com/mattermost/mattermost-server/v6/model"
)

func main() {
	ctx := context.Background()

	client4 := model.NewAPIv4Client("http://localhost:8065")
	_, _, err := client4.Login("test@example.com", "testtest")
	if err != nil {
		log.Fatal(err.Error())
	}

	teams, _, err := client4.GetAllTeams("", 0, 1)
	if err != nil {
		log.Fatal(err.Error())
	}
	if len(teams) == 0 {
		log.Fatal("no teams for this user")
	}

	c, err := client.New(client4)
	if err != nil {
		log.Fatal(err)
	}

	var playbooks []client.Playbook
	for page := 0; ; page++ {
		result, err := c.Playbooks.List(ctx, teams[0].Id, page, 100, client.PlaybookListOptions{
			Sort:      client.SortByCreateAt,
			Direction: client.SortDesc,
		})
		if err != nil {
			log.Fatal(err)
		}

		playbooks = append(playbooks, result.Items...)
		if !result.HasMore {
			break
		}
	}

	for _, playbook := range playbooks {
		fmt.Printf("Playbook Name: %s\n", playbook.Title)
	}
}
Output:

func (*PlaybooksService) Update

func (s *PlaybooksService) Update(ctx context.Context, playbook Playbook) error

type SettingsService

type SettingsService struct {
	// contains filtered or unexported fields
}

SettingsService handles communication with the settings related methods.

func (*SettingsService) Get

Get the configured settings.

func (*SettingsService) Update

func (s *SettingsService) Update(ctx context.Context, settings GlobalSettings) error

Update the configured settings.

type Sort

type Sort string

Sort enumerates the available fields we can sort on.

const (
	// SortByCreateAt sorts by the "create_at" field. It is the default.
	SortByCreateAt Sort = "create_at"

	// SortByID sorts by the "id" field.
	SortByID Sort = "id"

	// SortByName sorts by the "name" field.
	SortByName Sort = "name"

	// SortByOwnerUserID sorts by the "owner_user_id" field.
	SortByOwnerUserID Sort = "owner_user_id"

	// SortByTeamID sorts by the "team_id" field.
	SortByTeamID Sort = "team_id"

	// SortByEndAt sorts by the "end_at" field.
	SortByEndAt Sort = "end_at"

	// SortBySteps sorts playbooks by the number of steps in the playbook.
	SortBySteps Sort = "steps"

	// SortByStages sorts playbooks by the number of stages in the playbook.
	SortByStages Sort = "stages"

	// SortByTitle sorts by the "title" field.
	SortByTitle Sort = "title"

	// SortByRuns sorts by the number of times a playbook has been run.
	SortByRuns Sort = "runs"
)

type SortDirection

type SortDirection string

SortDirection determines whether results are sorted ascending or descending.

const (
	// Desc sorts the results in descending order.
	SortDesc SortDirection = "desc"

	// Asc sorts the results in ascending order.
	SortAsc SortDirection = "asc"
)

type Status

type Status string

Status is the type used to specify the activity status of the playbook run.

const (
	StatusInProgress Status = "InProgress"
	StatusFinished   Status = "Finished"
)

type StatusPost

type StatusPost struct {
	ID       string `json:"id"`
	CreateAt int64  `json:"create_at"`
	DeleteAt int64  `json:"delete_at"`
}

StatusPost is information added to the playbook run when selecting from the db and sent to the client; it is not saved to the db.

type StatusUpdateOptions

type StatusUpdateOptions struct {
	Message           string `json:"message"`
	ReminderInSeconds int64  `json:"reminder"`
}

StatusUpdateOptions are the fields required to update a playbook run's status

type TimelineEvent

type TimelineEvent struct {
	ID            string            `json:"id"`
	PlaybookRunID string            `json:"playbook_run"`
	CreateAt      int64             `json:"create_at"`
	DeleteAt      int64             `json:"delete_at"`
	EventAt       int64             `json:"event_at"`
	EventType     TimelineEventType `json:"event_type"`
	Summary       string            `json:"summary"`
	Details       string            `json:"details"`
	PostID        string            `json:"post_id"`
	SubjectUserID string            `json:"subject_user_id"`
	CreatorUserID string            `json:"creator_user_id"`
}

TimelineEvent represents an event recorded to a playbook run's timeline.

type TimelineEventType

type TimelineEventType string

TimelineEventType describes a type of timeline event.

const (
	PlaybookRunCreated TimelineEventType = "incident_created"
	TaskStateModified  TimelineEventType = "task_state_modified"
	StatusUpdated      TimelineEventType = "status_updated"
	OwnerChanged       TimelineEventType = "owner_changed"
	AssigneeChanged    TimelineEventType = "assignee_changed"
	RanSlashCommand    TimelineEventType = "ran_slash_command"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL