feat: custom fields per project
Text, number, date or option-list fields defined in the project settings (archived, never removed; their type is fixed once saved). Tickets hold them, edited in the side panel, listed under the title and filtered by option in the list view; also over GraphQL, REST (?field=ID:value) and MCP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -279,6 +279,9 @@ input CreateIssueInput {
|
||||
"""An area id"""
|
||||
area: String
|
||||
assigneeId: ID
|
||||
|
||||
"""Only the fields to change"""
|
||||
customFields: [CustomFieldValueInput!]
|
||||
description: String
|
||||
dueDate: String
|
||||
|
||||
@@ -352,6 +355,47 @@ type CumulativeFlow {
|
||||
series: [FlowSeries!]!
|
||||
}
|
||||
|
||||
"""A field the project adds to its tickets; its type never changes"""
|
||||
type CustomFieldDefinition {
|
||||
archived: Boolean!
|
||||
id: String!
|
||||
name: String!
|
||||
|
||||
"""The choices of a SELECT field"""
|
||||
options: [String!]!
|
||||
type: CustomFieldType!
|
||||
}
|
||||
|
||||
input CustomFieldDefinitionInput {
|
||||
archived: Boolean! = false
|
||||
id: String!
|
||||
name: String!
|
||||
|
||||
"""The choices of a SELECT field"""
|
||||
options: [String!]! = []
|
||||
type: CustomFieldType!
|
||||
}
|
||||
|
||||
"""What a custom field holds (DATE: YYYY-MM-DD)"""
|
||||
enum CustomFieldType {
|
||||
DATE
|
||||
NUMBER
|
||||
SELECT
|
||||
TEXT
|
||||
}
|
||||
|
||||
"""A ticket's value of a field"""
|
||||
type CustomFieldValue {
|
||||
fieldId: String!
|
||||
value: String!
|
||||
}
|
||||
|
||||
"""A custom field's value; null or '' clears it"""
|
||||
input CustomFieldValueInput {
|
||||
fieldId: String!
|
||||
value: String
|
||||
}
|
||||
|
||||
"""A commit, branch or pull request that mentions the ticket"""
|
||||
type DevLink {
|
||||
at: String!
|
||||
@@ -443,6 +487,9 @@ type Issue {
|
||||
commentCount: Int!
|
||||
comments(limit: Int! = 50, offset: Int! = 0): CommentPage!
|
||||
createdAt: String!
|
||||
|
||||
"""Values of the project's custom fields (only those set)"""
|
||||
customFields: [CustomFieldValue!]!
|
||||
description: String
|
||||
|
||||
"""Commits, branches and pull requests that mention it"""
|
||||
@@ -516,6 +563,9 @@ input IssueFilterInput {
|
||||
assigneeId: ID
|
||||
categories: [StatusCategory!]
|
||||
|
||||
"""Only tickets holding these custom values"""
|
||||
customFields: [CustomFieldValueInput!]
|
||||
|
||||
"""Due on or after this day (YYYY-MM-DD)"""
|
||||
dueFrom: String
|
||||
|
||||
@@ -961,9 +1011,12 @@ enum ProjectRole {
|
||||
VIEWER
|
||||
}
|
||||
|
||||
"""Statuses (board order), transitions, ticket types and areas"""
|
||||
"""
|
||||
Statuses (board order), transitions, ticket types, areas and custom fields
|
||||
"""
|
||||
type ProjectSettings {
|
||||
areas: [AreaOption!]!
|
||||
customFields: [CustomFieldDefinition!]!
|
||||
issueTypes: [IssueTypeOption!]!
|
||||
statuses: [WorkflowStatus!]!
|
||||
transitions: [StatusTransitions!]!
|
||||
@@ -974,6 +1027,9 @@ The whole configuration (replaces the previous one). Statuses go in board order.
|
||||
"""
|
||||
input ProjectSettingsInput {
|
||||
areas: [AreaOptionInput!]!
|
||||
|
||||
"""Absent: unchanged. Fields cannot be removed: archive them."""
|
||||
customFields: [CustomFieldDefinitionInput!]
|
||||
issueTypes: [IssueTypeOptionInput!]!
|
||||
statuses: [WorkflowStatusInput!]!
|
||||
transitions: [StatusTransitionsInput!]!
|
||||
@@ -1327,6 +1383,9 @@ input UpdateChecklistItemInput {
|
||||
input UpdateIssueInput {
|
||||
"""An area id"""
|
||||
area: String
|
||||
|
||||
"""Only the fields to change"""
|
||||
customFields: [CustomFieldValueInput!]
|
||||
description: String
|
||||
dueDate: String
|
||||
|
||||
|
||||
Reference in New Issue
Block a user