tracker

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Jul 6, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package tracker implements MCP tools for Yandex Tracker + Wiki. Connect decodes the source's `connect:` map, builds an API client (with optional OAuth device-flow token exchange), and returns the configured tools. Each returned tool sets mcp.ToolAnnotations to describe its semantics: the nine read-only tools (search_*, get_*, get_wiki_*, get_fields, my_report) set ReadOnlyHint: true; the two create_* tools (create_issue, create_comment) set DestructiveHint: new(false) and IdempotentHint: false because they only add new resources; the two update_* tools (update_issue, update_comment) set DestructiveHint: new(true) and IdempotentHint: true because they overwrite the same resource.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Connect

func Connect(
	ctx context.Context,
	connect map[string]any,
	opts ...tool.Option,
) (tool.Response, error)

Connect decodes the source's `connect:` map, builds an API client, and returns the configured tools. When a token is provided directly it is used as-is; otherwise the OAuth device-flow is invoked with the client_id and client_secret.

Each tool's mcp.ToolAnnotations encodes its read-only / mutating semantics; see the package doc for the per-tool mapping.

Types

type CreateCommentRequest

type CreateCommentRequest struct {
	KeyOrID string `json:"key_or_id" jsonschema:"Issue key (e.g. TREK-123) or numeric ID (required)"`
	Text    string `json:"text"      jsonschema:"Comment text (required)"`
}

CreateCommentRequest is the request for creating a comment on an issue.

type CreateCommentResponse

type CreateCommentResponse struct {
	Comment TrackerComment `json:"comment" jsonschema:"Created comment details"`
}

CreateCommentResponse is the response for creating a comment.

type CreateIssueRequest

type CreateIssueRequest struct {
	Summary     string   `json:"summary"              jsonschema:"Issue title (required)"`
	Queue       string   `json:"queue"                jsonschema:"Queue key to create the issue in, e.g. TREK (required)"`
	Description string   `json:"description,omitzero" jsonschema:"Issue description (supports HTML or YFM markup)"`
	Type        string   `json:"type,omitzero"        jsonschema:"Issue type key (e.g. task, bug, epic, subtask)"`
	Priority    string   `json:"priority,omitzero"    jsonschema:"Priority key (e.g. blocker, critical, major, normal, minor, trivial)"`
	Assignee    string   `json:"assignee,omitzero"    jsonschema:"Assignee username or login"`
	Parent      string   `json:"parent,omitzero"      jsonschema:"Parent issue key (e.g. TREK-100)"`
	Tags        []string `json:"tags,omitzero"        jsonschema:"Issue tags"`
	Deadline    string   `json:"deadline,omitzero"    jsonschema:"Deadline in YYYY-MM-DD format"`
	Start       string   `json:"start,omitzero"       jsonschema:"Start date in YYYY-MM-DD format"`
	End         string   `json:"end,omitzero"         jsonschema:"Completion date in YYYY-MM-DD format"`
	Followers   []string `json:"followers,omitzero"   jsonschema:"Follower usernames or IDs"`
}

CreateIssueRequest is the request for creating a new Tracker issue.

type CreateIssueResponse

type CreateIssueResponse struct {
	Issue TrackerIssue `json:"issue" jsonschema:"Created issue details"`
}

CreateIssueResponse is the response for creating an issue.

type GetCommentsRequest

type GetCommentsRequest struct {
	KeyOrID string `json:"key_or_id" jsonschema:"Issue key (e.g. TREK-123) or numeric ID"`
}

GetCommentsRequest is the request for getting issue comments.

type GetCommentsResponse

type GetCommentsResponse struct {
	Comments []TrackerComment `json:"comments,omitzero" jsonschema:"List of comments on the issue"`
}

GetCommentsResponse is the response for getting issue comments.

type GetFieldsRequest

type GetFieldsRequest struct {
	// FieldID is an optional specific field ID to look up.
	// If empty, all fields are returned.
	FieldID string `json:"field_id,omitzero" jsonschema:"Optional field ID to fetch"`
}

GetFieldsRequest is the request for getting available Tracker fields.

type GetFieldsResponse

type GetFieldsResponse struct {
	Fields []TrackerField `json:"fields,omitzero" jsonschema:"List of available issue fields with their IDs, types, and allowed values"`
}

GetFieldsResponse is the response for getting available Tracker fields.

type GetIssueRequest

type GetIssueRequest struct {
	KeyOrID string `json:"key_or_id"       jsonschema:"Issue key (e.g. TREK-123) or numeric ID"`
	Fields  string `json:"fields,omitzero" jsonschema:"Comma-separated list of fields to include in response"` //nolint:lll // jsonschema description
}

GetIssueRequest is the request for getting a single Tracker issue.

type GetIssueResponse

type GetIssueResponse struct {
	Issue TrackerIssue `json:"issue" jsonschema:"Full issue details"`
}

GetIssueResponse is the response for getting a single issue.

type GetLinksRequest

type GetLinksRequest struct {
	KeyOrID string `json:"key_or_id" jsonschema:"Issue key (e.g. TREK-123) or numeric ID"`
}

GetLinksRequest is the request for getting issue links.

type GetLinksResponse

type GetLinksResponse struct {
	Links []TrackerLink `json:"links,omitzero" jsonschema:"List of links for the issue"`
}

GetLinksResponse is the response for getting issue links.

type GetWikiPageRequest

type GetWikiPageRequest struct {
	Slug   string `json:"slug,omitzero"    jsonschema:"Page slug (URL path, e.g. users/test/page). Mutually exclusive with page_id."` //nolint:lll // jsonschema description
	PageID int64  `json:"page_id,omitzero" jsonschema:"Numeric page ID"`
}

GetWikiPageRequest is the request for getting a Wiki page.

type GetWikiPageResponse

type GetWikiPageResponse struct {
	Page WikiPage `json:"page" jsonschema:"Wiki page details"`
}

GetWikiPageResponse is the response for getting a Wiki page.

type GetWikiSubpagesRequest

type GetWikiSubpagesRequest struct {
	Slug        string `json:"slug"                  jsonschema:"Parent page slug (URL path)"`
	IncludeSelf bool   `json:"include_self,omitzero" jsonschema:"Include parent in results"`
	PageSize    int    `json:"page_size,omitzero"    jsonschema:"Results per page (default 100)"`
}

GetWikiSubpagesRequest is the request for listing Wiki subpages.

type GetWikiSubpagesResponse

type GetWikiSubpagesResponse struct {
	Pages []WikiPage `json:"pages,omitzero" jsonschema:"List of subpages"`
}

GetWikiSubpagesResponse is the response for listing Wiki subpages.

type ReportMetrics

type ReportMetrics struct {
	TotalIssues     int            `json:"total_issues,omitzero"      jsonschema:"Total number of issues found for the period"`
	CompletedCount  int            `json:"completed_count,omitzero"   jsonschema:"Number of issues resolved or closed"`
	InProgressCount int            `json:"in_progress_count,omitzero" jsonschema:"Number of issues still open"`
	ByType          map[string]int `json:"by_type,omitzero"           jsonschema:"Count of issues by type (task, bug, epic, etc.)"`
	ByQueue         map[string]int `json:"by_queue,omitzero"          jsonschema:"Count of issues by queue"`
	ByMonth         map[string]int `json:"by_month,omitzero"          jsonschema:"Count of resolved issues by month (YYYY-MM)"`
}

ReportMetrics contains summary statistics.

type ReportRequest

type ReportRequest struct {
	Assignee string `json:"assignee"           jsonschema:"Login of the user to generate report for (required)"`
	DateFrom string `json:"date_from,omitzero" jsonschema:"Start date in YYYY-MM-DD format (e.g. 2025-01-01)"`
	DateTo   string `json:"date_to,omitzero"   jsonschema:"End date in YYYY-MM-DD format (e.g. 2025-12-31)"`
	Queue    string `json:"queue,omitzero"     jsonschema:"Optional queue key to filter issues by specific queue"`
	WikiSlug string `json:"wiki_slug,omitzero" jsonschema:"Optional wiki page slug to include as context for stories/epics"`
}

ReportRequest is the request for generating a retrospective report.

type ReportResponse

type ReportResponse struct {
	Period          string        `json:"period"                   jsonschema:"Report period description"`
	Assignee        string        `json:"assignee"                 jsonschema:"User the report is generated for"`
	CompletedTasks  []ReportTask  `json:"completed_tasks,omitzero" jsonschema:"Issues resolved or closed during the period"`
	InProgressTasks []ReportTask  `json:"in_progress,omitzero"     jsonschema:"Issues still open or in progress"`
	Metrics         ReportMetrics `json:"metrics,omitzero"         jsonschema:"Summary metrics about the work done"`
	WikiContext     *WikiContext  `json:"wiki_context,omitzero"    jsonschema:"Optional wiki page context for stories/epics"`
}

ReportResponse is the structured retrospective report.

type ReportTask

type ReportTask struct {
	Key          string   `json:"key"                    jsonschema:"Issue key (e.g. TREK-123)"`
	Summary      string   `json:"summary,omitzero"       jsonschema:"Issue title"`
	Description  string   `json:"description,omitzero"   jsonschema:"Issue description"`
	Type         string   `json:"type,omitzero"          jsonschema:"Issue type display name"`
	Status       string   `json:"status,omitzero"        jsonschema:"Issue status display name"`
	Queue        string   `json:"queue,omitzero"         jsonschema:"Queue key"`
	QueueName    string   `json:"queue_name,omitzero"    jsonschema:"Human-readable queue name"`
	Tags         []string `json:"tags,omitzero"          jsonschema:"Issue tags"`
	CreatedAt    string   `json:"created_at,omitzero"    jsonschema:"When the issue was created"`
	UpdatedAt    string   `json:"updated_at,omitzero"    jsonschema:"When the issue was last updated"`
	ResolvedAt   string   `json:"resolved_at,omitzero"   jsonschema:"When the issue was resolved, empty if not"`
	Sprint       string   `json:"sprint,omitzero"        jsonschema:"Sprint name if the issue belongs to one"`
	CommentCount int      `json:"comment_count,omitzero" jsonschema:"Number of comments on the issue"`
	LastComments []string `json:"last_comments,omitzero" jsonschema:"Texts of the last few comments for context"`
}

ReportTask is a single task within the report, enriched with comments context.

type SearchIssuesRequest

type SearchIssuesRequest struct {
	Query   string            `` /* 163-byte string literal not displayed */
	Filter  map[string]string `` /* 233-byte string literal not displayed */
	Queue   string            `` /* 126-byte string literal not displayed */
	Keys    []string          `json:"keys,omitzero"     jsonschema:"List of issue keys to fetch (e.g. TREK-1, TREK-2)"`
	Order   string            `json:"order,omitzero"    jsonschema:"Sort direction and field (e.g. +status or -updatedAt), only with filter"`
	Fields  string            `` /* 133-byte string literal not displayed */
	PerPage int               `json:"per_page,omitzero" jsonschema:"Number of issues per page (default: 50, max: 10000)"`
	Page    int               `json:"page,omitzero"     jsonschema:"Page number for standard pagination (default: 1)"`
}

SearchIssuesRequest is the request for searching Tracker issues.

type SearchIssuesResponse

type SearchIssuesResponse struct {
	Issues     []TrackerIssueShort `json:"issues"               jsonschema:"List of issues matching the search criteria"`
	TotalCount int                 `json:"total_count,omitzero" jsonschema:"Total number of issues found"`
	Page       int                 `json:"page,omitzero"        jsonschema:"Current page number"`
	PerPage    int                 `json:"per_page,omitzero"    jsonschema:"Number of issues per page"`
}

SearchIssuesResponse is the response for issue search.

type TrackerComment

type TrackerComment struct {
	Self      string      `json:"self,omitzero"      jsonschema:"API URL of the comment resource"`
	ID        int64       `json:"id"                 jsonschema:"Comment ID"`
	LongID    string      `json:"longId,omitzero"    jsonschema:"String-formatted comment ID"` //nolint:tagliatelle // Tracker API camelCase
	Text      string      `json:"text,omitzero"      jsonschema:"Comment text"`
	CreatedBy TrackerUser `json:"createdBy,omitzero" jsonschema:"User who created the comment"`      //nolint:tagliatelle // Tracker API camelCase
	UpdatedBy TrackerUser `json:"updatedBy,omitzero" jsonschema:"User who last updated the comment"` //nolint:tagliatelle // Tracker API camelCase
	UpdatedAt string      `json:"updatedAt,omitzero" jsonschema:"ISO 8601 last update datetime"`     //nolint:tagliatelle // Tracker API camelCase
	CreatedAt string      `json:"createdAt,omitzero" jsonschema:"ISO 8601 creation datetime"`        //nolint:tagliatelle // Tracker API camelCase
	Version   int         `json:"version,omitzero"   jsonschema:"Comment version, incremented on each edit"`
	Type      string      `json:"type,omitzero"      jsonschema:"Comment type (standard, incoming, outcoming)"`
	Transport string      `json:"transport,omitzero" jsonschema:"Transport type (internal, email)"`
}

TrackerComment represents a comment on an issue.

type TrackerField

type TrackerField struct {
	Self            string                       `json:"self,omitzero"            jsonschema:"API URL of the field resource"`
	ID              string                       `json:"id"                       jsonschema:"Field ID used as filter key"`
	Name            string                       `json:"name"                     jsonschema:"Human-readable field name"`
	Description     string                       `json:"description,omitzero"     jsonschema:"Field description"`
	Version         int                          `json:"version,omitzero"         jsonschema:"Field version, incremented on changes"`
	Schema          TrackerFieldSchema           `json:"schema,omitzero"          jsonschema:"Data type info for the field value"`
	ReadOnly        bool                         `json:"readonly,omitzero"        jsonschema:"Whether the field value cannot be changed"`
	Options         bool                         `json:"options,omitzero"         jsonschema:"If true, values are not restricted to a fixed list"`
	Suggest         bool                         `json:"suggest,omitzero"         jsonschema:"Whether search suggestions are enabled"`
	SuggestProvider *TrackerFieldQueryProvider   `json:"suggestProvider,omitzero" jsonschema:"Suggest provider class info"`  //nolint:tagliatelle // Tracker API camelCase
	OptionsProvider *TrackerFieldOptionsProvider `json:"optionsProvider,omitzero" jsonschema:"Allowed values for the field"` //nolint:tagliatelle // Tracker API camelCase
	QueryProvider   *TrackerFieldQueryProvider   `json:"queryProvider,omitzero"   jsonschema:"Query language provider info"` //nolint:tagliatelle // Tracker API camelCase
	Order           int                          `json:"order,omitzero"           jsonschema:"Display order in the fields list"`
	Category        *TrackerFieldCategory        `json:"category,omitzero"        jsonschema:"Field category"`
}

TrackerField represents a single issue field from the Tracker API.

type TrackerFieldCategory

type TrackerFieldCategory struct {
	Self    string `json:"self,omitzero"    jsonschema:"API URL of the category"`
	ID      string `json:"id,omitzero"      jsonschema:"Category ID"`
	Display string `json:"display,omitzero" jsonschema:"Category display name"`
}

TrackerFieldCategory groups fields into categories.

type TrackerFieldOptionsProvider

type TrackerFieldOptionsProvider struct {
	Type   string   `json:"type,omitzero"   jsonschema:"Options provider type"`
	Values []string `json:"values,omitzero" jsonschema:"Allowed values for the field"`
}

TrackerFieldOptionsProvider describes valid values for a field.

type TrackerFieldQueryProvider

type TrackerFieldQueryProvider struct {
	Type string `json:"type,omitzero" jsonschema:"Query provider type"`
}

TrackerFieldQueryProvider describes the query capability of a field.

type TrackerFieldSchema

type TrackerFieldSchema struct {
	Type     string `json:"type,omitzero"     jsonschema:"Value type: string or array"`
	Items    string `json:"items,omitzero"    jsonschema:"Item type for array fields"`
	Required bool   `json:"required,omitzero" jsonschema:"Whether the field is required"`
}

TrackerFieldSchema describes the data type of a field value.

type TrackerIssue

type TrackerIssue struct {
	TrackerIssueShort

	ID             string        `json:"id,omitzero"                   jsonschema:"Unique issue ID"`
	Version        int           `json:"version,omitzero"              jsonschema:"Issue version (incremented on each edit)"`
	Votes          int           `json:"votes,omitzero"                jsonschema:"Number of votes on the issue"`
	Favorite       bool          `json:"favorite,omitzero"             jsonschema:"Whether the issue is starred by the user"`
	Aliases        []string      `json:"aliases,omitzero"              jsonschema:"Alternative issue keys"`
	PreviousStatus TrackerStatus `json:"previousStatus,omitzero"       jsonschema:"Previous issue status"`           //nolint:tagliatelle // Tracker API camelCase
	UpdatedBy      TrackerUser   `json:"updatedBy,omitzero"            jsonschema:"User who last updated the issue"` //nolint:tagliatelle // Tracker API camelCase
	Followers      []TrackerUser `json:"followers,omitzero"            jsonschema:"Users following the issue"`
	LastCommentAt  string        `json:"lastCommentUpdatedAt,omitzero" jsonschema:"ISO 8601 datetime of last comment"` //nolint:tagliatelle // Tracker API camelCase
}

TrackerIssue is the full issue representation with additional fields.

type TrackerIssueShort

type TrackerIssueShort struct {
	Key         string          `json:"key"                  jsonschema:"Issue key (e.g. TREK-123)"`
	Summary     string          `json:"summary"              jsonschema:"Issue title"`
	Description string          `json:"description,omitzero" jsonschema:"Issue description (may contain HTML)"`
	Type        TrackerStatus   `json:"type,omitzero"        jsonschema:"Issue type (task, bug, epic, etc.)"`
	Priority    TrackerStatus   `json:"priority,omitzero"    jsonschema:"Issue priority"`
	Status      TrackerStatus   `json:"status,omitzero"      jsonschema:"Current issue status"`
	Assignee    *TrackerUser    `json:"assignee,omitzero"    jsonschema:"User assigned to the issue"`
	CreatedBy   TrackerUser     `json:"createdBy,omitzero"   jsonschema:"User who created the issue"` //nolint:tagliatelle // Tracker API camelCase
	Queue       TrackerQueue    `json:"queue"                jsonschema:"Queue the issue belongs to"`
	Sprint      []TrackerSprint `json:"sprint,omitzero"      jsonschema:"Sprints the issue belongs to"`
	Tags        []string        `json:"tags,omitzero"        jsonschema:"Issue tags"`
	CreatedAt   string          `json:"createdAt,omitzero"   jsonschema:"ISO 8601 creation datetime"`    //nolint:tagliatelle // Tracker API camelCase
	UpdatedAt   string          `json:"updatedAt,omitzero"   jsonschema:"ISO 8601 last update datetime"` //nolint:tagliatelle // Tracker API camelCase
	ResolvedAt  string          `json:"resolvedAt,omitzero"  jsonschema:"ISO 8601 resolution datetime"`  //nolint:tagliatelle // Tracker API camelCase
}

TrackerIssueShort is a flat issue representation for search results.

type TrackerLink struct {
	Self      string             `json:"self,omitzero"      jsonschema:"API URL of the link resource"`
	ID        int64              `json:"id,omitzero"        jsonschema:"Link ID"`
	Type      TrackerLinkType    `json:"type,omitzero"      jsonschema:"Link type information"`
	Direction string             `json:"direction,omitzero" jsonschema:"Relation direction"`
	Object    TrackerLinkedIssue `json:"object,omitzero"    jsonschema:"Linked issue information"`
	CreatedBy TrackerUser        `json:"createdBy,omitzero" jsonschema:"User who created the link"`      //nolint:tagliatelle // Tracker API camelCase
	UpdatedBy TrackerUser        `json:"updatedBy,omitzero" jsonschema:"User who last updated the link"` //nolint:tagliatelle // Tracker API camelCase
	CreatedAt string             `json:"createdAt,omitzero" jsonschema:"ISO 8601 creation datetime"`     //nolint:tagliatelle // Tracker API camelCase
	UpdatedAt string             `json:"updatedAt,omitzero" jsonschema:"ISO 8601 last update datetime"`  //nolint:tagliatelle // Tracker API camelCase
	Assignee  *TrackerUser       `json:"assignee,omitzero"  jsonschema:"Assignee of the linked issue"`
	Status    *TrackerStatus     `json:"status,omitzero"    jsonschema:"Status of the linked issue"`
}

TrackerLink represents a link (relation) between Tracker issues.

type TrackerLinkType

type TrackerLinkType struct {
	Self    string `json:"self,omitzero"    jsonschema:"API URL of the link type resource"`
	ID      string `json:"id,omitzero"      jsonschema:"Link type ID"`
	Inward  string `json:"inward,omitzero"  jsonschema:"Inward name of the link type"`
	Outward string `json:"outward,omitzero" jsonschema:"Outward name of the link type"`
}

TrackerLinkType represents the type of a link between issues.

type TrackerLinkedIssue

type TrackerLinkedIssue struct {
	Self    string `json:"self,omitzero"    jsonschema:"API URL of the linked issue"`
	ID      string `json:"id,omitzero"      jsonschema:"Issue ID"`
	Key     string `json:"key,omitzero"     jsonschema:"Issue key (e.g. TREK-9844)"`
	Display string `json:"display,omitzero" jsonschema:"Display name of the issue"`
}

TrackerLinkedIssue represents a linked issue in a Tracker link.

type TrackerQueue

type TrackerQueue struct {
	Self    string `json:"self,omitzero"    jsonschema:"API URL of the queue resource"`
	ID      string `json:"id,omitzero"      jsonschema:"Queue ID"`
	Key     string `json:"key,omitzero"     jsonschema:"Queue key (e.g. TREK, FRONT)"`
	Display string `json:"display,omitzero" jsonschema:"Human-readable queue name"`
}

TrackerQueue represents the queue an issue belongs to.

type TrackerSprint

type TrackerSprint struct {
	Self    string `json:"self,omitzero"    jsonschema:"API URL of the sprint resource"`
	ID      string `json:"id,omitzero"      jsonschema:"Sprint ID"`
	Display string `json:"display,omitzero" jsonschema:"Sprint name"`
}

TrackerSprint represents a sprint.

type TrackerStatus

type TrackerStatus struct {
	Self    string `json:"self,omitzero"    jsonschema:"API URL of the status resource"`
	ID      string `json:"id,omitzero"      jsonschema:"Status ID"`
	Key     string `json:"key,omitzero"     jsonschema:"Status key (e.g. open, resolved, closed)"`
	Display string `json:"display,omitzero" jsonschema:"Human-readable status name"`
}

TrackerStatus represents an issue status/type/priority with key+display.

type TrackerUser

type TrackerUser struct {
	Self        string `json:"self,omitzero"        jsonschema:"API URL of the user resource"`
	ID          string `json:"id,omitzero"          jsonschema:"User ID"`
	Display     string `json:"display,omitzero"     jsonschema:"User display name"`
	PassportUID int64  `json:"passportUid,omitzero" jsonschema:"Passport user ID"`     //nolint:tagliatelle // Tracker API camelCase
	CloudUID    string `json:"cloudUid,omitzero"    jsonschema:"Yandex Cloud user ID"` //nolint:tagliatelle // Tracker API camelCase
	Login       string `json:"login,omitzero"       jsonschema:"User login name"`
}

TrackerUser represents a user in the Tracker API.

type UpdateCommentRequest

type UpdateCommentRequest struct {
	KeyOrID   string `json:"key_or_id"  jsonschema:"Issue key (e.g. TREK-123) or numeric ID (required)"`
	CommentID string `json:"comment_id" jsonschema:"Comment ID to update (required). Can be numeric or longId string."`
	Text      string `json:"text"       jsonschema:"Updated comment text (required)"`
}

UpdateCommentRequest is the request for updating an existing comment.

type UpdateCommentResponse

type UpdateCommentResponse struct {
	Comment TrackerComment `json:"comment" jsonschema:"Updated comment details"`
}

UpdateCommentResponse is the response for updating a comment.

type UpdateIssueRequest

type UpdateIssueRequest struct {
	KeyOrID     string   `json:"key_or_id"            jsonschema:"Issue key (e.g. TREK-123) or numeric ID (required)"`
	Summary     string   `json:"summary,omitzero"     jsonschema:"Updated issue title"`
	Description string   `json:"description,omitzero" jsonschema:"Updated issue description"`
	Type        string   `json:"type,omitzero"        jsonschema:"Updated issue type key (e.g. task, bug, epic, subtask)"`
	Priority    string   `json:"priority,omitzero"    jsonschema:"Updated priority key"`
	Assignee    string   `json:"assignee,omitzero"    jsonschema:"Updated assignee username or login"`
	Parent      string   `json:"parent,omitzero"      jsonschema:"Updated parent issue key"`
	Tags        []string `json:"tags,omitzero"        jsonschema:"Updated issue tags (replaces existing tags)"`
	TagsAdd     []string `json:"tags_add,omitzero"    jsonschema:"Tags to add to the issue"`
	TagsRemove  []string `json:"tags_remove,omitzero" jsonschema:"Tags to remove from the issue"`
	Deadline    string   `json:"deadline,omitzero"    jsonschema:"Updated deadline in YYYY-MM-DD format"`
	Start       string   `json:"start,omitzero"       jsonschema:"Updated start date in YYYY-MM-DD format"`
	End         string   `json:"end,omitzero"         jsonschema:"Updated completion date in YYYY-MM-DD format"`
	Followers   []string `json:"followers,omitzero"   jsonschema:"Updated follower list (replaces existing)"`
	Version     int      `` /* 127-byte string literal not displayed */
}

UpdateIssueRequest is the request for updating an existing Tracker issue.

type UpdateIssueResponse

type UpdateIssueResponse struct {
	Issue TrackerIssue `json:"issue" jsonschema:"Updated issue details"`
}

UpdateIssueResponse is the response for updating an issue.

type WikiContext

type WikiContext struct {
	Title   string `json:"title,omitzero"   jsonschema:"Wiki page title"`
	Content string `json:"content,omitzero" jsonschema:"Wiki page body in wiki markup"`
	Slug    string `json:"slug,omitzero"    jsonschema:"Wiki page slug (URL path)"`
}

WikiContext holds optional wiki page content for story/epic context.

type WikiPage

type WikiPage struct {
	ID        int64           `json:"id"                  jsonschema:"Unique page ID"`
	Slug      string          `json:"slug,omitzero"       jsonschema:"Page slug (URL path)"`
	Title     string          `json:"title,omitzero"      jsonschema:"Page title"`
	Content   string          `json:"content,omitzero"    jsonschema:"Page body in wiki markup"`
	CreatedAt string          `json:"created_at,omitzero" jsonschema:"ISO 8601 creation datetime"`
	UpdatedAt string          `json:"updated_at,omitzero" jsonschema:"Last update datetime"`
	CreatedBy *TrackerUser    `json:"created_by,omitzero" jsonschema:"User who created the page"`
	UpdatedBy *TrackerUser    `json:"updated_by,omitzero" jsonschema:"User who last updated"`
	Parent    *WikiPageParent `json:"parent,omitzero"     jsonschema:"Parent page info (if any)"`
}

WikiPage represents a Yandex Wiki page.

type WikiPageParent

type WikiPageParent struct {
	ID    int64  `json:"id,omitzero"    jsonschema:"Parent page ID"`
	Slug  string `json:"slug,omitzero"  jsonschema:"Parent page slug (URL path)"`
	Title string `json:"title,omitzero" jsonschema:"Parent page title"`
}

WikiPageParent contains identifying information about a parent wiki page.

Jump to

Keyboard shortcuts

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