models

package
v1.10.2 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2026 License: MIT Imports: 0 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CustomFieldValue

type CustomFieldValue struct {
	ID       int         `json:"id"`
	Name     string      `json:"name"`
	Value    interface{} `json:"value"`
	Multiple bool        `json:"multiple,omitempty"`
}

CustomFieldValue represents a custom field value on a resource.

type Enumeration

type Enumeration struct {
	ID        int    `json:"id"`
	Name      string `json:"name"`
	IsDefault bool   `json:"is_default"`
	Active    bool   `json:"active"`
}

Enumeration represents a Redmine enumeration (activity, priority, etc.).

type Group

type Group struct {
	ID          int      `json:"id"`
	Name        string   `json:"name"`
	Users       []IDName `json:"users,omitempty"`
	Memberships []IDName `json:"memberships,omitempty"`
}

Group represents a Redmine group.

type GroupCreate

type GroupCreate struct {
	Name    string `json:"name"`
	UserIDs []int  `json:"user_ids,omitempty"`
}

GroupCreate defines fields for creating a group.

type GroupFilter

type GroupFilter struct {
	Limit  int
	Offset int
}

GroupFilter defines parameters for listing groups.

type GroupUpdate

type GroupUpdate struct {
	Name    *string `json:"name,omitempty"`
	UserIDs *[]int  `json:"user_ids,omitempty"`
}

GroupUpdate defines fields for updating a group.

type IDName

type IDName struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}

IDName represents a Redmine resource reference with id and name.

type IDRef

type IDRef struct {
	ID int `json:"id"`
}

IDRef is a simple id-only reference (e.g., parent issue).

type Issue

type Issue struct {
	ID             int                `json:"id"`
	Project        IDName             `json:"project"`
	Tracker        IDName             `json:"tracker"`
	Status         IDName             `json:"status"`
	Priority       IDName             `json:"priority"`
	Author         IDName             `json:"author"`
	AssignedTo     *IDName            `json:"assigned_to,omitempty"`
	Category       *IDName            `json:"category,omitempty"`
	FixedVersion   *IDName            `json:"fixed_version,omitempty"`
	Parent         *IDRef             `json:"parent,omitempty"`
	Subject        string             `json:"subject"`
	Description    string             `json:"description"`
	DoneRatio      int                `json:"done_ratio"`
	CreatedOn      string             `json:"created_on"`
	UpdatedOn      string             `json:"updated_on"`
	StartDate      string             `json:"start_date,omitempty"`
	DueDate        string             `json:"due_date,omitempty"`
	EstimatedHours *float64           `json:"estimated_hours,omitempty"`
	CustomFields   []CustomFieldValue `json:"custom_fields,omitempty"`
	Journals       []Journal          `json:"journals,omitempty"`
	Children       []IDRef            `json:"children,omitempty"`
}

Issue represents a Redmine issue.

type IssueCategory

type IssueCategory struct {
	ID         int     `json:"id"`
	Name       string  `json:"name"`
	Project    IDName  `json:"project"`
	AssignedTo *IDName `json:"assigned_to,omitempty"`
}

IssueCategory represents a Redmine issue category.

type IssueCreate

type IssueCreate struct {
	ProjectID      int     `json:"project_id"`
	TrackerID      int     `json:"tracker_id,omitempty"`
	StatusID       int     `json:"status_id,omitempty"`
	PriorityID     int     `json:"priority_id,omitempty"`
	Subject        string  `json:"subject"`
	Description    string  `json:"description,omitempty"`
	AssignedToID   int     `json:"assigned_to_id,omitempty"`
	ParentIssueID  int     `json:"parent_issue_id,omitempty"`
	CategoryID     int     `json:"category_id,omitempty"`
	FixedVersionID int     `json:"fixed_version_id,omitempty"`
	EstimatedHours float64 `json:"estimated_hours,omitempty"`
	IsPrivate      *bool   `json:"is_private,omitempty"`
}

IssueCreate defines fields for creating a new issue.

type IssueFilter

type IssueFilter struct {
	ProjectID      string
	TrackerID      int
	StatusID       string // "open", "closed", "*", or numeric ID
	AssignedToID   string // numeric ID or "me"
	FixedVersionID int
	Sort           string // e.g., "updated_on:desc"
	Limit          int
	Offset         int
}

IssueFilter defines parameters for listing issues.

type IssueStatus

type IssueStatus struct {
	ID       int    `json:"id"`
	Name     string `json:"name"`
	IsClosed bool   `json:"is_closed"`
}

IssueStatus represents a Redmine issue status.

type IssueUpdate

type IssueUpdate struct {
	TrackerID      *int     `json:"tracker_id,omitempty"`
	StatusID       *int     `json:"status_id,omitempty"`
	PriorityID     *int     `json:"priority_id,omitempty"`
	Subject        *string  `json:"subject,omitempty"`
	Description    *string  `json:"description,omitempty"`
	AssignedToID   *int     `json:"assigned_to_id,omitempty"`
	DoneRatio      *int     `json:"done_ratio,omitempty"`
	Notes          *string  `json:"notes,omitempty"`
	DueDate        *string  `json:"due_date,omitempty"`
	ParentIssueID  *int     `json:"parent_issue_id,omitempty"`
	CategoryID     *int     `json:"category_id,omitempty"`
	FixedVersionID *int     `json:"fixed_version_id,omitempty"`
	EstimatedHours *float64 `json:"estimated_hours,omitempty"`
	IsPrivate      *bool    `json:"is_private,omitempty"`
}

IssueUpdate defines fields for updating an issue. Nil fields are not sent.

type Journal

type Journal struct {
	ID        int             `json:"id"`
	User      IDName          `json:"user"`
	Notes     string          `json:"notes"`
	CreatedOn string          `json:"created_on"`
	Details   []JournalDetail `json:"details,omitempty"`
}

Journal represents an issue history entry.

type JournalDetail

type JournalDetail struct {
	Property string `json:"property"`
	Name     string `json:"name"`
	OldValue string `json:"old_value"`
	NewValue string `json:"new_value"`
}

JournalDetail represents a single change in a journal entry.

type Membership

type Membership struct {
	ID      int      `json:"id"`
	Project IDName   `json:"project"`
	User    *IDName  `json:"user,omitempty"`
	Group   *IDName  `json:"group,omitempty"`
	Roles   []IDName `json:"roles"`
}

Membership represents a project membership.

type Project

type Project struct {
	ID          int      `json:"id"`
	Name        string   `json:"name"`
	Identifier  string   `json:"identifier"`
	Description string   `json:"description"`
	Status      int      `json:"status"`
	IsPublic    bool     `json:"is_public"`
	Parent      *IDName  `json:"parent,omitempty"`
	CreatedOn   string   `json:"created_on"`
	UpdatedOn   string   `json:"updated_on"`
	Trackers    []IDName `json:"trackers,omitempty"`
}

Project represents a Redmine project.

type ProjectCreate

type ProjectCreate struct {
	Name           string `json:"name"`
	Identifier     string `json:"identifier"`
	Description    string `json:"description,omitempty"`
	IsPublic       *bool  `json:"is_public,omitempty"`
	ParentID       int    `json:"parent_id,omitempty"`
	InheritMembers bool   `json:"inherit_members,omitempty"`
}

ProjectCreate defines fields for creating a project.

type ProjectUpdate

type ProjectUpdate struct {
	Name        *string `json:"name,omitempty"`
	Description *string `json:"description,omitempty"`
	IsPublic    *bool   `json:"is_public,omitempty"`
}

ProjectUpdate defines fields for updating a project.

type SearchResponse

type SearchResponse struct {
	Results    []SearchResult `json:"results"`
	TotalCount int            `json:"total_count"`
	Offset     int            `json:"offset"`
	Limit      int            `json:"limit"`
}

SearchResponse represents the full response from the Redmine search API.

type SearchResult

type SearchResult struct {
	ID          int    `json:"id"`
	Title       string `json:"title"`
	Type        string `json:"type"`
	URL         string `json:"url"`
	Description string `json:"description"`
	DateTime    string `json:"datetime"`
}

SearchResult represents a single result from the Redmine search API.

type TimeEntry

type TimeEntry struct {
	ID        int     `json:"id"`
	Project   IDName  `json:"project"`
	Issue     *IDRef  `json:"issue,omitempty"`
	User      IDName  `json:"user"`
	Activity  IDName  `json:"activity"`
	Hours     float64 `json:"hours"`
	Comments  string  `json:"comments"`
	SpentOn   string  `json:"spent_on"`
	CreatedOn string  `json:"created_on"`
	UpdatedOn string  `json:"updated_on"`
}

TimeEntry represents a Redmine time entry.

type TimeEntryCreate

type TimeEntryCreate struct {
	IssueID    int     `json:"issue_id,omitempty"`
	ProjectID  string  `json:"project_id,omitempty"`
	Hours      float64 `json:"hours"`
	ActivityID int     `json:"activity_id,omitempty"`
	SpentOn    string  `json:"spent_on,omitempty"`
	Comments   string  `json:"comments,omitempty"`
}

TimeEntryCreate defines fields for creating a time entry.

type TimeEntryFilter

type TimeEntryFilter struct {
	ProjectID  string
	UserID     string
	IssueID    int
	From       string
	To         string
	ActivityID int
	Limit      int
	Offset     int
}

TimeEntryFilter defines parameters for listing time entries.

type TimeEntryUpdate

type TimeEntryUpdate struct {
	Hours      *float64 `json:"hours,omitempty"`
	ActivityID *int     `json:"activity_id,omitempty"`
	SpentOn    *string  `json:"spent_on,omitempty"`
	Comments   *string  `json:"comments,omitempty"`
}

TimeEntryUpdate defines fields for updating a time entry.

type Tracker

type Tracker struct {
	ID          int    `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description"`
}

Tracker represents a Redmine tracker (e.g., Bug, Feature, Support).

type User

type User struct {
	ID          int      `json:"id"`
	Login       string   `json:"login"`
	Admin       bool     `json:"admin"`
	FirstName   string   `json:"firstname"`
	LastName    string   `json:"lastname"`
	Mail        string   `json:"mail"`
	CreatedOn   string   `json:"created_on"`
	UpdatedOn   string   `json:"updated_on,omitempty"`
	LastLoginOn string   `json:"last_login_on,omitempty"`
	Status      int      `json:"status"`
	Memberships []IDName `json:"memberships,omitempty"`
}

User represents a Redmine user.

type UserCreate

type UserCreate struct {
	Login     string `json:"login"`
	Password  string `json:"password"`
	FirstName string `json:"firstname"`
	LastName  string `json:"lastname"`
	Mail      string `json:"mail"`
	Admin     bool   `json:"admin,omitempty"`
}

UserCreate defines fields for creating a user.

type UserFilter

type UserFilter struct {
	Status  string // "active", "registered", "locked"
	Name    string // filter by name
	GroupID int
	Limit   int
	Offset  int
}

UserFilter defines parameters for listing users.

type UserUpdate

type UserUpdate struct {
	FirstName *string `json:"firstname,omitempty"`
	LastName  *string `json:"lastname,omitempty"`
	Mail      *string `json:"mail,omitempty"`
	Admin     *bool   `json:"admin,omitempty"`
	Status    *int    `json:"status,omitempty"`
}

UserUpdate defines fields for updating a user.

type Version

type Version struct {
	ID          int    `json:"id"`
	Project     IDName `json:"project"`
	Name        string `json:"name"`
	Description string `json:"description"`
	Status      string `json:"status"` // "open", "locked", "closed"
	DueDate     string `json:"due_date,omitempty"`
	Sharing     string `json:"sharing"`
	CreatedOn   string `json:"created_on"`
	UpdatedOn   string `json:"updated_on"`
}

Version represents a Redmine project version (milestone).

Jump to

Keyboard shortcuts

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