graphapi

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Apr 14, 2026 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ValidateBirthday added in v0.7.0

func ValidateBirthday(s string) (time.Time, error)

ValidateBirthday parses an ISO date string (YYYY-MM-DD) and returns the parsed time.

func ValidateContactFieldLen added in v0.7.0

func ValidateContactFieldLen(value, label string, limit int) error

ValidateContactFieldLen checks that a contact string field is within length limits.

func ValidateEmail

func ValidateEmail(email string) error

ValidateEmail checks basic email format and length.

func ValidatePhone

func ValidatePhone(phone string) error

ValidatePhone checks basic phone number format.

Types

type Address added in v0.7.0

type Address struct {
	Street          string `json:"street,omitempty"`
	City            string `json:"city,omitempty"`
	State           string `json:"state,omitempty"`
	PostalCode      string `json:"postalCode,omitempty"`
	CountryOrRegion string `json:"countryOrRegion,omitempty"`
}

Address is a physical address.

type Attachment

type Attachment struct {
	ID          string `json:"id"`
	Name        string `json:"name"`
	ContentType string `json:"contentType"`
	Size        int32  `json:"size"`
	Content     []byte `json:"-"`
}

Attachment represents a mail attachment

type AttachmentInput added in v0.2.0

type AttachmentInput struct {
	Name        string
	ContentType string
	Content     []byte
}

AttachmentInput represents an attachment to be sent with a message

type AttendeeAvailabilityInfo added in v0.3.0

type AttendeeAvailabilityInfo struct {
	Email        string `json:"email"`
	Availability string `json:"availability"`
}

AttendeeAvailabilityInfo represents an attendee's availability for a time slot

type AutoReplySettings added in v0.2.0

type AutoReplySettings struct {
	Status           string `json:"status"`
	InternalMessage  string `json:"internalMessage"`
	ExternalMessage  string `json:"externalMessage"`
	StartTime        string `json:"startTime,omitempty"`
	EndTime          string `json:"endTime,omitempty"`
	ExternalAudience string `json:"externalAudience"`
}

AutoReplySettings is a simplified auto-reply configuration for output

type CalendarEvent

type CalendarEvent struct {
	ID          string   `json:"id"`
	Subject     string   `json:"subject"`
	Start       string   `json:"start"`
	End         string   `json:"end"`
	Location    string   `json:"location"`
	Organizer   string   `json:"organizer"`
	Attendees   []string `json:"attendees,omitempty"`
	IsAllDay    bool     `json:"isAllDay"`
	IsOnline    bool     `json:"isOnlineMeeting"`
	OnlineURL   string   `json:"onlineMeetingUrl,omitempty"`
	Status      string   `json:"showAs"`
	Recurrence  string   `json:"recurrence,omitempty"`
	BodyPreview string   `json:"bodyPreview"`
	Body        string   `json:"body,omitempty"`
}

CalendarEvent is a simplified calendar event for output

type CalendarInfo

type CalendarInfo struct {
	ID    string `json:"id"`
	Name  string `json:"name"`
	Color string `json:"color"`
	Owner string `json:"owner"`
}

CalendarInfo is a simplified calendar representation

type Category added in v0.4.5

type Category struct {
	ID          string `json:"id"`
	DisplayName string `json:"displayName"`
	Color       string `json:"color"`
}

Category is a simplified outlook category for output

type Client

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

Client wraps the Graph SDK client

func NewClient

func NewClient(cred azcore.TokenCredential) (*Client, error)

NewClient creates a new Graph API client from a token credential

func (*Client) CategorizeMessage added in v0.2.0

func (c *Client) CategorizeMessage(ctx context.Context, messageID string, categories []string) error

CategorizeMessage sets the categories on a message

func (*Client) CompleteTodoTask added in v0.2.0

func (c *Client) CompleteTodoTask(ctx context.Context, listID, taskID string) error

CompleteTodoTask marks a task as completed.

func (*Client) CreateCategory added in v0.4.5

func (c *Client) CreateCategory(ctx context.Context, name, color string) (*Category, error)

func (*Client) CreateChecklistItem added in v0.6.0

func (c *Client) CreateChecklistItem(ctx context.Context, listID, taskID, displayName string) (*TodoChecklistItem, error)

CreateChecklistItem creates a new checklist item on a task.

func (*Client) CreateContact

func (c *Client) CreateContact(ctx context.Context, in *ContactCreateInput) (*Contact, error)

func (*Client) CreateDraft added in v0.2.0

func (c *Client) CreateDraft(ctx context.Context, subject, body string, to, cc, bcc []string, isHTML bool) (*DraftMessage, error)

CreateDraft creates a draft message without sending it

func (*Client) CreateEvent

func (c *Client) CreateEvent(ctx context.Context, subject string, start, end time.Time, location string, attendees []string, isAllDay, isOnlineMeeting bool, recurrence string) (*CalendarEvent, error)

func (*Client) CreateLinkedResource added in v0.6.0

func (c *Client) CreateLinkedResource(ctx context.Context, listID, taskID, displayName, appName, externalID, webURL string) (*TodoLinkedResource, error)

CreateLinkedResource creates a new linked resource on a task.

func (*Client) CreateMailFolder added in v0.4.5

func (c *Client) CreateMailFolder(ctx context.Context, displayName string) (*MailFolder, error)

CreateMailFolder creates a new mail folder.

func (*Client) CreateMailRule added in v0.3.0

func (c *Client) CreateMailRule(ctx context.Context, name, from, subjectContains string, hasAttachment bool, moveFolder string, markRead, deleteMsg bool, forwardTo, importance string) (*MailRule, error)

func (*Client) CreateTodoList added in v0.4.5

func (c *Client) CreateTodoList(ctx context.Context, displayName string) (*TodoList, error)

CreateTodoList creates a new task list.

func (*Client) CreateTodoTask added in v0.2.0

func (c *Client) CreateTodoTask(ctx context.Context, listID, title, dueDate, importance, body, startDate, reminderDate, recurrence string, categories []string) (*TodoTask, error)

CreateTodoTask creates a new task in the given list.

func (*Client) DeleteCategory added in v0.4.5

func (c *Client) DeleteCategory(ctx context.Context, categoryID string) error

func (*Client) DeleteChecklistItem added in v0.6.0

func (c *Client) DeleteChecklistItem(ctx context.Context, listID, taskID, itemID string) error

DeleteChecklistItem deletes a checklist item.

func (*Client) DeleteContact

func (c *Client) DeleteContact(ctx context.Context, contactID string) error

func (*Client) DeleteDraft added in v0.2.0

func (c *Client) DeleteDraft(ctx context.Context, draftID string) error

DeleteDraft deletes a draft message

func (*Client) DeleteEvent

func (c *Client) DeleteEvent(ctx context.Context, eventID string) error

func (*Client) DeleteLinkedResource added in v0.6.0

func (c *Client) DeleteLinkedResource(ctx context.Context, listID, taskID, resourceID string) error

DeleteLinkedResource deletes a linked resource from a task.

func (*Client) DeleteMailFolder added in v0.4.5

func (c *Client) DeleteMailFolder(ctx context.Context, folderID string) error

DeleteMailFolder deletes a mail folder.

func (*Client) DeleteMailRule added in v0.3.0

func (c *Client) DeleteMailRule(ctx context.Context, ruleID string) error

func (*Client) DeleteMessage

func (c *Client) DeleteMessage(ctx context.Context, messageID string) error

func (*Client) DeleteTodoAttachment added in v0.6.0

func (c *Client) DeleteTodoAttachment(ctx context.Context, listID, taskID, attachmentID string) error

DeleteTodoAttachment deletes a task attachment.

func (*Client) DeleteTodoList added in v0.4.5

func (c *Client) DeleteTodoList(ctx context.Context, listID string) error

DeleteTodoList deletes a task list.

func (*Client) DeleteTodoTask added in v0.2.0

func (c *Client) DeleteTodoTask(ctx context.Context, listID, taskID string) error

DeleteTodoTask deletes a task.

func (*Client) DownloadAttachment added in v0.2.0

func (c *Client) DownloadAttachment(ctx context.Context, messageID, attachmentID string) (*Attachment, error)

func (*Client) DownloadTodoAttachment added in v0.6.0

func (c *Client) DownloadTodoAttachment(ctx context.Context, listID, taskID, attachmentID string) (name, contentType string, content []byte, err error)

DownloadTodoAttachment downloads a task attachment's content.

func (*Client) FindMeetingTimes added in v0.3.0

func (c *Client) FindMeetingTimes(ctx context.Context, attendees []string, start, end time.Time, durationMinutes int32) ([]MeetingTimeSuggestion, error)

FindMeetingTimes finds available meeting times for the given attendees

func (*Client) FlagMessage added in v0.2.0

func (c *Client) FlagMessage(ctx context.Context, messageID, flagStatus string) error

FlagMessage sets the follow-up flag status on a message

func (*Client) ForwardMessage

func (c *Client) ForwardMessage(ctx context.Context, messageID, comment string, toRecipients []string) error

func (*Client) GetAttachments

func (c *Client) GetAttachments(ctx context.Context, messageID string) ([]Attachment, error)

func (*Client) GetAutoReply added in v0.2.0

func (c *Client) GetAutoReply(ctx context.Context) (*AutoReplySettings, error)

GetAutoReply retrieves the current auto-reply (out-of-office) settings

func (*Client) GetContact

func (c *Client) GetContact(ctx context.Context, contactID string) (*Contact, error)

func (*Client) GetEvent

func (c *Client) GetEvent(ctx context.Context, eventID string) (*CalendarEvent, error)

func (*Client) GetMessage

func (c *Client) GetMessage(ctx context.Context, messageID string) (*MailMessage, error)

func (*Client) GetProfile added in v0.2.0

func (c *Client) GetProfile(ctx context.Context) (*UserProfile, error)

GetProfile retrieves the current user's profile information

func (*Client) GetSchedule added in v0.2.0

func (c *Client) GetSchedule(ctx context.Context, emails []string, start, end time.Time) ([]ScheduleInfo, error)

GetSchedule retrieves free/busy availability for the specified email addresses

func (*Client) GetTodoTask added in v0.2.0

func (c *Client) GetTodoTask(ctx context.Context, listID, taskID string) (*TodoTask, error)

GetTodoTask returns a single task by ID.

func (*Client) Inner

func (c *Client) Inner() *msgraphsdk.GraphServiceClient

Inner returns the underlying Graph SDK client

func (*Client) ListCalendarView added in v0.3.0

func (c *Client) ListCalendarView(ctx context.Context, startTime, endTime time.Time, calendarID string, top int32) ([]CalendarEvent, error)

ListCalendarView returns expanded occurrences (including recurring) in a date range.

func (*Client) ListCalendars

func (c *Client) ListCalendars(ctx context.Context) ([]CalendarInfo, error)

func (*Client) ListCategories added in v0.4.5

func (c *Client) ListCategories(ctx context.Context) ([]Category, error)

func (*Client) ListChecklistItems added in v0.6.0

func (c *Client) ListChecklistItems(ctx context.Context, listID, taskID string) ([]TodoChecklistItem, error)

ListChecklistItems returns all checklist items for a task.

func (*Client) ListContacts

func (c *Client) ListContacts(ctx context.Context, top, skip int32, orderBy string) ([]Contact, error)

func (*Client) ListDrafts added in v0.2.0

func (c *Client) ListDrafts(ctx context.Context, top int32) ([]DraftMessage, error)

ListDrafts lists messages in the Drafts folder

func (*Client) ListEvents

func (c *Client) ListEvents(ctx context.Context, startTime, endTime time.Time, calendarID string, top int32) ([]CalendarEvent, error)

func (*Client) ListLinkedResources added in v0.6.0

func (c *Client) ListLinkedResources(ctx context.Context, listID, taskID string) ([]TodoLinkedResource, error)

ListLinkedResources returns all linked resources for a task.

func (*Client) ListMailFolders

func (c *Client) ListMailFolders(ctx context.Context) ([]MailFolder, error)

func (*Client) ListMailRules added in v0.3.0

func (c *Client) ListMailRules(ctx context.Context) ([]MailRule, error)

func (*Client) ListMessages

func (c *Client) ListMessages(ctx context.Context, opts *ListMessagesOptions) ([]MailMessage, error)

func (*Client) ListTodoAttachments added in v0.6.0

func (c *Client) ListTodoAttachments(ctx context.Context, listID, taskID string) ([]TodoAttachment, error)

ListTodoAttachments returns all attachments for a task.

func (*Client) ListTodoLists added in v0.2.0

func (c *Client) ListTodoLists(ctx context.Context) ([]TodoList, error)

ListTodoLists returns all task lists for the current user.

func (*Client) ListTodoTasks added in v0.2.0

func (c *Client) ListTodoTasks(ctx context.Context, listID string, top int32, status string) ([]TodoTask, error)

ListTodoTasks returns tasks in a given task list.

func (*Client) MarkMessage

func (c *Client) MarkMessage(ctx context.Context, messageID string, isRead bool) error

func (*Client) MoveMessage

func (c *Client) MoveMessage(ctx context.Context, messageID, folderID string) error

func (*Client) RenameMailFolder added in v0.4.5

func (c *Client) RenameMailFolder(ctx context.Context, folderID, displayName string) (*MailFolder, error)

RenameMailFolder renames a mail folder.

func (*Client) ReplyMessage

func (c *Client) ReplyMessage(ctx context.Context, messageID, comment string, replyAll bool) error

func (*Client) RespondToEvent

func (c *Client) RespondToEvent(ctx context.Context, eventID, response string) error

func (*Client) SearchContacts

func (c *Client) SearchContacts(ctx context.Context, query string, top int32) ([]Contact, error)

func (*Client) SearchDirectory added in v0.4.4

func (c *Client) SearchDirectory(ctx context.Context, query string, top int32) ([]Person, error)

SearchDirectory searches the organization directory via /users with $search

func (*Client) SearchMessages

func (c *Client) SearchMessages(ctx context.Context, query string, top int32) ([]MailMessage, error)

func (*Client) SearchPeople added in v0.3.0

func (c *Client) SearchPeople(ctx context.Context, query string, top int32) ([]Person, error)

func (*Client) SendDraft added in v0.2.0

func (c *Client) SendDraft(ctx context.Context, draftID string) error

SendDraft sends an existing draft message

func (*Client) SendMessage

func (c *Client) SendMessage(ctx context.Context, subject, body string, toRecipients, ccRecipients, bccRecipients []string, isHTML bool, attachments []AttachmentInput, importance string, readReceipt bool) error

func (*Client) SetAutoReply added in v0.2.0

func (c *Client) SetAutoReply(ctx context.Context, status, internalMsg, externalMsg, startTime, endTime, audience string) error

SetAutoReply updates the auto-reply (out-of-office) settings

func (*Client) SetImportance added in v0.2.0

func (c *Client) SetImportance(ctx context.Context, messageID, importance string) error

SetImportance sets the importance level on a message

func (*Client) ToggleChecklistItem added in v0.6.0

func (c *Client) ToggleChecklistItem(ctx context.Context, listID, taskID, itemID string) (*TodoChecklistItem, error)

ToggleChecklistItem toggles the IsChecked state of a checklist item.

func (*Client) UpdateChecklistItem added in v0.6.0

func (c *Client) UpdateChecklistItem(ctx context.Context, listID, taskID, itemID string, displayName *string, isChecked *bool) (*TodoChecklistItem, error)

UpdateChecklistItem updates a checklist item's properties.

func (*Client) UpdateContact

func (c *Client) UpdateContact(ctx context.Context, contactID string, in *ContactUpdateInput) (*Contact, error)

func (*Client) UpdateEvent

func (c *Client) UpdateEvent(ctx context.Context, eventID string, subject *string, start, end *time.Time, location *string) (*CalendarEvent, error)

func (*Client) UpdateTodoTask added in v0.4.5

func (c *Client) UpdateTodoTask(ctx context.Context, listID, taskID string, title, dueDate, importance, body, startDate, reminderDate, recurrence *string, categories *[]string) (*TodoTask, error)

UpdateTodoTask updates a task's properties.

func (*Client) UploadTodoAttachment added in v0.6.0

func (c *Client) UploadTodoAttachment(ctx context.Context, listID, taskID, name, contentType string, content []byte) (*TodoAttachment, error)

UploadTodoAttachment uploads a file attachment to a task.

type Contact

type Contact struct {
	ID               string   `json:"id"`
	DisplayName      string   `json:"displayName"`
	FirstName        string   `json:"givenName"`
	LastName         string   `json:"surname"`
	MiddleName       string   `json:"middleName,omitempty"`
	NickName         string   `json:"nickName,omitempty"`
	Emails           []string `json:"emailAddresses"`
	BusinessPhones   []string `json:"businessPhones,omitempty"`
	HomePhones       []string `json:"homePhones,omitempty"`
	MobilePhone      string   `json:"mobilePhone,omitempty"`
	ImAddresses      []string `json:"imAddresses,omitempty"`
	Company          string   `json:"companyName"`
	JobTitle         string   `json:"jobTitle"`
	Department       string   `json:"department,omitempty"`
	OfficeLocation   string   `json:"officeLocation,omitempty"`
	Profession       string   `json:"profession,omitempty"`
	Manager          string   `json:"manager,omitempty"`
	AssistantName    string   `json:"assistantName,omitempty"`
	Birthday         string   `json:"birthday,omitempty"`
	PersonalNotes    string   `json:"personalNotes,omitempty"`
	SpouseName       string   `json:"spouseName,omitempty"`
	Children         []string `json:"children,omitempty"`
	Categories       []string `json:"categories,omitempty"`
	BusinessHomePage string   `json:"businessHomePage,omitempty"`
	BusinessAddress  *Address `json:"businessAddress,omitempty"`
	HomeAddress      *Address `json:"homeAddress,omitempty"`
	OtherAddress     *Address `json:"otherAddress,omitempty"`
}

Contact is a simplified contact representation

type ContactCreateInput added in v0.7.0

type ContactCreateInput struct {
	FirstName     string
	LastName      string
	Emails        []string
	BusinessPhone string
	HomePhone     string
	MobilePhone   string
	Company       string
	JobTitle      string
	Department    string
	Birthday      string
	PersonalNotes string
	Manager       string
	MiddleName    string
	NickName      string
	Categories    []string
	Address       *Address
	AddressType   string // "business", "home", "other"
}

ContactCreateInput contains the fields for creating a contact.

type ContactUpdateInput added in v0.7.0

type ContactUpdateInput struct {
	FirstName     *string
	LastName      *string
	Emails        *[]string
	BusinessPhone *string
	HomePhone     *string
	MobilePhone   *string
	Company       *string
	JobTitle      *string
	Department    *string
	Birthday      *string
	PersonalNotes *string
	Manager       *string
	MiddleName    *string
	NickName      *string
	Categories    *[]string
	Address       *Address
	AddressType   string
}

ContactUpdateInput contains the fields for updating a contact. Nil pointers mean "don't change".

type DraftMessage added in v0.2.0

type DraftMessage struct {
	ID      string   `json:"id"`
	Subject string   `json:"subject"`
	To      []string `json:"to"`
	Body    string   `json:"body,omitempty"`
	Created string   `json:"createdDateTime"`
}

DraftMessage is a simplified draft message for output

type ListMessagesOptions

type ListMessagesOptions struct {
	FolderID string
	Top      int32
	Filter   string
	OrderBy  string
	Search   string
	Select   []string
}

ListMessagesOptions for filtering messages

type MailFolder

type MailFolder struct {
	ID             string `json:"id"`
	DisplayName    string `json:"displayName"`
	TotalCount     int32  `json:"totalItemCount"`
	UnreadCount    int32  `json:"unreadItemCount"`
	ParentFolderID string `json:"parentFolderId,omitempty"`
}

MailFolder is a simplified folder representation

type MailMessage

type MailMessage struct {
	ID             string   `json:"id"`
	Subject        string   `json:"subject"`
	From           string   `json:"from"`
	To             []string `json:"to"`
	ReceivedAt     string   `json:"receivedDateTime"`
	IsRead         bool     `json:"isRead"`
	HasAttachments bool     `json:"hasAttachments"`
	BodyPreview    string   `json:"bodyPreview"`
	Body           string   `json:"body,omitempty"`
	BodyType       string   `json:"bodyType,omitempty"`
	Categories     []string `json:"categories,omitempty"`
}

MailMessage is a simplified mail message for output

type MailRule added in v0.3.0

type MailRule struct {
	ID          string `json:"id"`
	DisplayName string `json:"displayName"`
	Sequence    int32  `json:"sequence"`
	IsEnabled   bool   `json:"isEnabled"`
	Conditions  string `json:"conditions"`
	Actions     string `json:"actions"`
}

MailRule is a simplified message rule for output

type MeetingTimeSuggestion added in v0.3.0

type MeetingTimeSuggestion struct {
	Start                  string                     `json:"start"`
	End                    string                     `json:"end"`
	Confidence             float64                    `json:"confidence"`
	OrganizerAvailability  string                     `json:"organizerAvailability"`
	AttendeeAvailabilities []AttendeeAvailabilityInfo `json:"attendeeAvailabilities,omitempty"`
}

MeetingTimeSuggestion represents a suggested meeting time

type Person added in v0.3.0

type Person struct {
	DisplayName string `json:"displayName"`
	Email       string `json:"email"`
	JobTitle    string `json:"jobTitle,omitempty"`
	Department  string `json:"department,omitempty"`
	Company     string `json:"companyName,omitempty"`
}

Person is a simplified person for output

type ScheduleInfo added in v0.2.0

type ScheduleInfo struct {
	Email        string         `json:"email"`
	Availability string         `json:"availability"`
	Items        []ScheduleItem `json:"scheduleItems"`
}

ScheduleInfo represents the free/busy schedule for a user

type ScheduleItem added in v0.2.0

type ScheduleItem struct {
	Status  string `json:"status"`
	Start   string `json:"start"`
	End     string `json:"end"`
	Subject string `json:"subject,omitempty"`
}

ScheduleItem represents a single busy block in a user's schedule

type TodoAttachment added in v0.6.0

type TodoAttachment struct {
	ID          string `json:"id"`
	Name        string `json:"name"`
	ContentType string `json:"contentType"`
	Size        int32  `json:"size"`
}

TodoAttachment is a simplified attachment for output

type TodoChecklistItem added in v0.6.0

type TodoChecklistItem struct {
	ID          string `json:"id"`
	DisplayName string `json:"displayName"`
	IsChecked   bool   `json:"isChecked"`
	CreatedAt   string `json:"createdDateTime,omitempty"`
}

TodoChecklistItem is a simplified checklist item for output

type TodoLinkedResource added in v0.6.0

type TodoLinkedResource struct {
	ID              string `json:"id"`
	DisplayName     string `json:"displayName"`
	ApplicationName string `json:"applicationName"`
	ExternalID      string `json:"externalId"`
	WebURL          string `json:"webUrl"`
}

TodoLinkedResource is a simplified linked resource for output

type TodoList added in v0.2.0

type TodoList struct {
	ID          string `json:"id"`
	DisplayName string `json:"displayName"`
	IsOwner     bool   `json:"isOwner"`
}

TodoList is a simplified task list for output

type TodoTask added in v0.2.0

type TodoTask struct {
	ID             string   `json:"id"`
	Title          string   `json:"title"`
	Status         string   `json:"status"`
	Importance     string   `json:"importance"`
	DueDate        string   `json:"dueDateTime,omitempty"`
	CreatedAt      string   `json:"createdDateTime"`
	CompletedAt    string   `json:"completedDateTime,omitempty"`
	Body           string   `json:"body,omitempty"`
	StartDate      string   `json:"startDateTime,omitempty"`
	IsReminderOn   bool     `json:"isReminderOn"`
	ReminderDate   string   `json:"reminderDateTime,omitempty"`
	Recurrence     string   `json:"recurrence,omitempty"`
	Categories     []string `json:"categories,omitempty"`
	HasAttachments bool     `json:"hasAttachments"`
}

TodoTask is a simplified task for output

type UserProfile added in v0.2.0

type UserProfile struct {
	DisplayName string `json:"displayName"`
	Email       string `json:"mail"`
	UPN         string `json:"userPrincipalName"`
	JobTitle    string `json:"jobTitle,omitempty"`
	Department  string `json:"department,omitempty"`
	Office      string `json:"officeLocation,omitempty"`
	Phone       string `json:"businessPhones,omitempty"`
}

UserProfile is a simplified user profile for output

Jump to

Keyboard shortcuts

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