func (k *KeyringMembersWorklogDetails) Summary() string {
	return fmt.Sprintf("This %s is missing access to one or more secrets.", k.Type)
}
Summary returns the human readable summary of this WorklogItem.
package apitypes
import (
	"errors"
	"fmt"
	"github.com/dchest/blake2b"
	"github.com/manifoldco/go-base32"
	"github.com/manifoldco/torus-cli/identity"
	"github.com/manifoldco/torus-cli/pathexp"
	"github.com/manifoldco/torus-cli/primitive"
)
type WorklogType byte
const (
	SecretRotateWorklogType WorklogType = 1 << iota
	MissingKeypairsWorklogType
	InviteApproveWorklogType
	UserKeyringMembersWorklogType
	MachineKeyringMembersWorklogType
	AnyWorklogType WorklogType = 0xff
)
var ErrIncorrectWorklogIDLen = errors.New("Incorrect worklog ID length")
const worklogIDLen = 9
type WorklogID [worklogIDLen]byte
func DecodeWorklogIDFromString(raw string) (WorklogID, error) {
	id := WorklogID{}
	buf, err := base32.DecodeString(raw)
	if err != nil {
		return id, err
	}
	if len(buf) != worklogIDLen {
		return id, ErrIncorrectWorklogIDLen
	}
	copy(id[:], buf)
	return id, nil
}
func (id WorklogID) String() string {
	return base32.EncodeToString(id[:])
}
func (id WorklogID) Type() WorklogType {
	return WorklogType(id[0])
}
type WorklogItem struct {
	ID *WorklogID `json:"id"`
	Details WorklogDetails `json:"details"`
}
func (w *WorklogItem) Subject() string {
	return w.Details.Subject()
}
func (w *WorklogItem) Summary() string {
	return w.Details.Summary()
}
type WorklogDetails interface {
	Subject() string
	Summary() string
}
type InviteApproveWorklogDetails struct {
	InviteID *identity.ID `json:"invite_id"`
	Email    string       `json:"email"`
	Username string       `json:"username"`
	Name     string       `json:"name"`
	Org      string       `json:"org"`
	Teams    []string     `json:"teams"`
}
func (i *InviteApproveWorklogDetails) Subject() string {
	return i.Email
}
func (i *InviteApproveWorklogDetails) Summary() string {
	summary := fmt.Sprintf("The invite for %s to org %s is ready for approval.",
		i.Email, i.Org)
	return summary
}
type KeyringMembersWorklogDetails struct {
	EntityID *identity.ID      `json:"entity_id"`
	Name     string            `json:"name"`
	Type     string            `json:"type"`
	OwnerIDs []identity.ID     `json:"owner_ids"`
	Keyrings []pathexp.PathExp `json:"keyrings"`
}
func (k *KeyringMembersWorklogDetails) Subject() string {
	return k.Name
}