zendesk

package module
v0.0.0-...-ff3accf Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2016 License: MIT Imports: 9 Imported by: 0

README

DO NOT USE!

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Attachement

type Attachement struct {
	ID          uint64   `json:"id,omitempty"`
	Name        string   `json:"name"`
	ContentURL  string   `json:"content_url"`
	ContentType string   `json:"content_type"`
	Size        uint64   `json:"size"`
	Thumbnails  []string `json:"thumbnails"`
}

Attachement represents attachement in ticket

type Auth

type Auth struct {
	Username  string
	Password  string
	Subdomain string

	UseAPIToken bool
}

func NewAuth

func NewAuth(Username, Password, Subdomain string, UseAPIToken bool) *Auth

NewAuth creates Auth

func (Auth) AddCommentToTicket

func (auth Auth) AddCommentToTicket(ticketID uint64, comment *Comment) (*Ticket, error)

AddCommentToTicket adds comment to existing ticket

func (Auth) CreateTicket

func (auth Auth) CreateTicket(ticket *NewTicket) (*Ticket, error)

CreateTicket creates new ticket

func (Auth) CreateUser

func (auth Auth) CreateUser(user NewUser) (User, error)

CreateUser creates user

func (Auth) ListOpenRequests

func (auth Auth) ListOpenRequests(user User) ([]*Request, error)

func (Auth) SearchUser

func (auth Auth) SearchUser(query string) ([]User, error)

SearchUser a search

type Comment

type Comment struct {
	ID           uint64        `json:"id,omitempty"`
	Type         string        `json:"type,omitempty"`
	Body         string        `json:"body,omitempty"`
	Public       bool          `json:"public,omitempty"`
	CreatedAt    *time.Time    `json:"created_at,omitempty"`
	AuthorID     UserID        `json:"author_id,omitempty"`
	Attachements []Attachement `json:"attachements,omitempty"`
	Via          *struct {
		Channel string `json:"channel,omitempty"`
	} `json:"via,omitempty"`
}

Comment represents single message in ticket

type ContactHandler

type ContactHandler struct {
	*Auth
	BeforeCreateTicket func(r *http.Request, ticket *NewTicket) *NewTicket
	Strategy           Strategy
}

ContactHandler is a helper for sending messages

func (ContactHandler) ServeHTTP

func (z ContactHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

type CustomField

type CustomField struct {
	ID    int    `json:"id"`
	Value string `json:"value"`
}

type CustomFields

type CustomFields []CustomField

type Error

type Error struct {
	Description string `json:"description"`
	Details     struct {
		Value []struct {
			Type        string
			Description string
		} `json:"value"`
	}
}

Error represents zendesk api error

func (Error) Error

func (e Error) Error() string

type NewTicket

type NewTicket struct {
	Subject             string       `json:"subject,omitempty"`
	Comment             Comment      `json:"comment,omitempty"`
	RequesterID         UserID       `json:"requester_id,omitempty"`
	SubmitterID         UserID       `json:"submitter_id,omitempty"`
	AssigneeID          UserID       `json:"assignee_id,omitempty"`
	GroupID             uint64       `json:"group_id,omitempty"`
	CollaboratorIDs     []UserID     `json:"collaborator_ids,omitempty"`
	Type                string       `json:"type,omitempty"`
	Priority            string       `json:"priority,omitempty"`
	Status              string       `json:"status,omitempty"`
	Tags                []string     `json:"tags,omitempty"`
	ExternalID          *uint64      `json:"external_id,omitempty"`
	ForumTopicID        *uint64      `json:"forum_topic_id,omitempty"`
	ProblemID           *uint64      `json:"problem_id,omitempty"`
	DueAt               *time.Time   `json:"due_at,omitempty"`
	CustomFields        CustomFields `json:"custom_fields,omitempty"`
	ViaFollowupSourceID *uint64      `json:"via_followup_source_id,omitempty"`
}

NewTicket represents new tickets

type NewUser

type NewUser struct {
	Email      string  `json:"email,omitempty"`
	Name       string  `json:"name,omitempty"`
	Roles      string  `json:"roles,omitempty"`
	ExternalID *uint64 `json:"external_id,omitempty"`
	Verified   bool    `json:"verified,omitempty"`
}

NewUser represents new user

type Request

type Request struct {
	ID              uint64       `json:"id"`
	AssigneeID      uint64       `json:"assignee_id"`
	CanBeSolvedByMe bool         `json:"can_be_solved_by_me"`
	CreatedAt       time.Time    `json:"created_at,omitempty"`
	UpdatedAt       time.Time    `json:"updated_at,omitempty"`
	CustomFields    CustomFields `json:"custom_fields,omitempty"`
	RequesterID     int64        `json:"requester_id,omitempty"`
	Description     string       `json:"description,omitempty"`
	DueAt           *time.Time   `json:"due_at,omitempty"`
	OrganizationID  int64        `json:"organization_id,omitempty"`
	Priority        string       `json:"priority,omitempty"`
	Status          string       `json:"status,omitempty"`
	Subject         string       `json:"subject,omitempty"`
	Type            string       `json:"type,omitempty"`
	URL             string       `json:"url"`
	Via             struct {
		Channel string `json:"channel,omitempty"`
	} `json:"via"`
	CollaboratorIds []*uint64 `json:"collaborator_ids"`
}

type RequestsSearch

type RequestsSearch struct {
	Count    uint       `json:"count"`
	NextPage *string    `json:"next_page"`
	PrevPage *string    `json:"previous_page"`
	Requests []*Request `json:"requests"`
}

type Strategy

type Strategy int

Strategy defines what to do after user sends message

const (
	//AlwaysNewTicket creates new ticket every time user sends message
	AlwaysNewTicket Strategy = iota
	//AddToLastTicket adds message to last not resolved ticket
	AddToLastTicket
)

type Ticket

type Ticket struct {
	ID              uint64     `json:"id,omitempty"`
	URL             string     `json:"url,omitempty"`
	ExternalID      string     `json:"external_id,omitempty"`
	CreatedAt       time.Time  `json:"created_at,omitempty"`
	UpdatedAt       time.Time  `json:"updated_at,omitempty"`
	Type            string     `json:"type,omitempty"`
	Subject         string     `json:"subject,omitempty"`
	RawSubject      string     `json:"raw_subject,omitempty"`
	Description     string     `json:"description,omitempty"`
	Priority        string     `json:"priority,omitempty"`
	Status          string     `json:"status,omitempty"`
	Recipient       string     `json:"recipient,omitempty"`
	RequesterID     int64      `json:"requester_id,omitempty"`
	SubmitterID     int64      `json:"submitter_id,omitempty"`
	AssigneeID      int64      `json:"assignee_id,omitempty"`
	OrganizationID  int64      `json:"organization_id,omitempty"`
	GroupID         int64      `json:"group_id,omitempty"`
	CollaboratorIds []int64    `json:"collaborator_ids,omitempty"`
	ForumTopicID    int64      `json:"forum_topic_id,omitempty"`
	ProblemID       int64      `json:"problem_id,omitempty"`
	HasIncidents    bool       `json:"has_incidents,omitempty"`
	DueAt           *time.Time `json:"due_at,omitempty"`
	Tags            []string   `json:"tags,omitempty"`
	Via             struct {
		Channel string `json:"channel,omitempty"`
	} `json:"via,omitempty"`
	CustomFields       CustomFields `json:"custom_fields,omitempty"`
	SatisfactionRating struct {
		ID      int    `json:"id"`
		Score   string `json:"score"`
		Comment string `json:"comment"`
	} `json:"satisfaction_rating,omitempty"`
	SharingAgreementIds []int64 `json:"sharing_agreement_ids,omitempty"`
}

Ticket

type User

type User struct {
	ID          UserID  `json:"id,omitempty"`
	URL         string  `json:"url,omitempty"`
	Name        string  `json:"name,omitempty"`
	ExternalID  *uint64 `json:"external_id,omitempty"`
	Alias       string  `json:"alias,omitempty"`
	CreatedAt   string  `json:"created_at,omitempty"`
	UpdatedAt   string  `json:"updated_at,omitempty"`
	Active      bool    `json:"active,omitempty"`
	Verified    bool    `json:"verified,omitempty"`
	LastLoginAt string  `json:"last_login_at,omitempty"`
	Email       string  `json:"email,omitempty"`
	Phone       string  `json:"phone,omitempty"`
	Details     string  `json:"details,omitempty"`
	Suspended   bool    `json:"suspended,omitempty"`
}

type UserID

type UserID uint64

type Users

type Users struct {
	Users []User `json:"users"`
}

Jump to

Keyboard shortcuts

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