mirror of
https://github.com/hanzoai/swift-sdk.git
synced 2026-10-30 18:20:19 +00:00
The projection these were generated from predated the compute migration, so they described /v1/visor — which the API serves at zero paths now. No /v1/visor path survives here.
119 lines
7.0 KiB
Swift
119 lines
7.0 KiB
Swift
//
|
|
// IssueView.swift
|
|
//
|
|
// Generated by openapi-generator
|
|
// https://openapi-generator.tech
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public struct IssueView: Sendable, Codable, ParameterConvertible, Hashable {
|
|
|
|
/** Assignee is who holds the work — an IAM username, or the login of the FIRST assignee when a forge issue has several. Absent when nobody holds it, which is exactly the state a claim needs. */
|
|
public var assignee: String?
|
|
/** CreatedAt is when the item was opened, in unix seconds. 0 when the source gave no parseable timestamp. */
|
|
public var createdAt: Int64?
|
|
/** Description is the body, markdown as its author wrote it. Absent when empty. */
|
|
public var description: String?
|
|
/** DueAt is when the work is due, in unix seconds; absent means no due date. A forge row takes it from its MILESTONE's due date, since a forge issue has no deadline of its own. Never before StartAt, and never past 2200-01-01. */
|
|
public var dueAt: Int64?
|
|
/** ExtRef anchors the item to something outside the todo — a mirrored issue (\"github:owner/repo#123\"), a pushed PR branch, or a record on another plane. It is the idempotency key the mirror upsert matches on. Absent when the item has no external origin. */
|
|
public var extRef: String?
|
|
/** ID is the work item's opaque handle, and it is NOT how you address it — ProjectKey plus Number is. Its shape says which source answered: a forge issue's is the forge's own numeric id in decimal, an index row's a minted \"issue_\" id. */
|
|
public var id: String?
|
|
/** Identifier is the human handle, \"<key>#<number>\" — the board and the number on it, joined. ONE spelling whichever source answered, because a list where forge rows read cli#1 and index rows read OPS-3 is two products in one list. */
|
|
public var identifier: String?
|
|
/** Kind is what the item IS: issue, pr or epic. Set once at create and never changed, so a row does not migrate between surfaces. Deliberately not \"task\" — that word is the async plane (contract.go). */
|
|
public var kind: String?
|
|
/** Labels are the item's remaining tags, with the status and priority labels lifted OUT — a column that stayed here would render twice, once as the card's column and once as a chip on the card. Always present; empty is []. */
|
|
public var labels: [String]?
|
|
/** Number is the item's number ON ITS BOARD, from 1 and monotonic there — the forge's own issue number for a forge row, allocated inside the create transaction for an index row so it cannot race. Unique per board, never across the org. */
|
|
public var number: Int64?
|
|
/** Priority is urgent, high, medium, low or none. Also a label on a forge row. Never empty: \"none\" when nothing names one, so callers compare a value rather than test for absence. */
|
|
public var priority: String?
|
|
/** ProjectKey is the board this item is on: the repository name for a forge issue, the index board's key otherwise. With Number it is the item's address in every other route. */
|
|
public var projectKey: String?
|
|
/** Repo is the git repository the item is bound to, so a repository's Issues and PRs tabs are filters over this one table. Absent when the item is not repo-bound. */
|
|
public var repo: String?
|
|
/** Source is which surface OPENED it: team, git, crm, helpdesk, cms or agent. Also set once. It is the ORIGIN, not the subject — source=helpdesk is an engineering issue opened from a support escalation, not a support ticket. */
|
|
public var source: String?
|
|
/** StartAt is when the work starts, in unix seconds; absent means unscheduled. A forge row takes it from when the issue was opened, but only once the issue has a due date — an interval needs both ends. */
|
|
public var startAt: Int64?
|
|
/** Status is the board column: backlog, todo, in_progress, done or canceled, and nothing else. On a forge row it is read off a LABEL, so relabelling in the forge web UI moves the card here and vice versa — and a CLOSED forge issue reads done whatever its labels say. Never empty: \"backlog\" when nothing names a column. */
|
|
public var status: String?
|
|
/** Title is the item's one-line summary. */
|
|
public var title: String?
|
|
/** UpdatedAt is when it last changed, in unix seconds. */
|
|
public var updatedAt: Int64?
|
|
|
|
public init(assignee: String? = nil, createdAt: Int64? = nil, description: String? = nil, dueAt: Int64? = nil, extRef: String? = nil, id: String? = nil, identifier: String? = nil, kind: String? = nil, labels: [String]? = nil, number: Int64? = nil, priority: String? = nil, projectKey: String? = nil, repo: String? = nil, source: String? = nil, startAt: Int64? = nil, status: String? = nil, title: String? = nil, updatedAt: Int64? = nil) {
|
|
self.assignee = assignee
|
|
self.createdAt = createdAt
|
|
self.description = description
|
|
self.dueAt = dueAt
|
|
self.extRef = extRef
|
|
self.id = id
|
|
self.identifier = identifier
|
|
self.kind = kind
|
|
self.labels = labels
|
|
self.number = number
|
|
self.priority = priority
|
|
self.projectKey = projectKey
|
|
self.repo = repo
|
|
self.source = source
|
|
self.startAt = startAt
|
|
self.status = status
|
|
self.title = title
|
|
self.updatedAt = updatedAt
|
|
}
|
|
|
|
public enum CodingKeys: String, CodingKey, CaseIterable {
|
|
case assignee
|
|
case createdAt
|
|
case description
|
|
case dueAt
|
|
case extRef
|
|
case id
|
|
case identifier
|
|
case kind
|
|
case labels
|
|
case number
|
|
case priority
|
|
case projectKey
|
|
case repo
|
|
case source
|
|
case startAt
|
|
case status
|
|
case title
|
|
case updatedAt
|
|
}
|
|
|
|
// Encodable protocol methods
|
|
|
|
public func encode(to encoder: Encoder) throws {
|
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
try container.encodeIfPresent(assignee, forKey: .assignee)
|
|
try container.encodeIfPresent(createdAt, forKey: .createdAt)
|
|
try container.encodeIfPresent(description, forKey: .description)
|
|
try container.encodeIfPresent(dueAt, forKey: .dueAt)
|
|
try container.encodeIfPresent(extRef, forKey: .extRef)
|
|
try container.encodeIfPresent(id, forKey: .id)
|
|
try container.encodeIfPresent(identifier, forKey: .identifier)
|
|
try container.encodeIfPresent(kind, forKey: .kind)
|
|
try container.encodeIfPresent(labels, forKey: .labels)
|
|
try container.encodeIfPresent(number, forKey: .number)
|
|
try container.encodeIfPresent(priority, forKey: .priority)
|
|
try container.encodeIfPresent(projectKey, forKey: .projectKey)
|
|
try container.encodeIfPresent(repo, forKey: .repo)
|
|
try container.encodeIfPresent(source, forKey: .source)
|
|
try container.encodeIfPresent(startAt, forKey: .startAt)
|
|
try container.encodeIfPresent(status, forKey: .status)
|
|
try container.encodeIfPresent(title, forKey: .title)
|
|
try container.encodeIfPresent(updatedAt, forKey: .updatedAt)
|
|
}
|
|
}
|
|
|
|
|
|
@available(iOS 13, tvOS 13, watchOS 6, macOS 10.15, *)
|
|
extension IssueView: Identifiable {}
|