@versionone/agility-sdk 1.0.0-alpha.3 → 1.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +135 -0
- package/README.md +9 -3
- package/dist/index.cjs +124 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +144 -23
- package/dist/index.d.ts +144 -23
- package/dist/index.js +122 -10
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.d.cts
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
* aborted the caller's signal ended it
|
|
12
12
|
* commandFailure api/asset answered 200 with failed commands inside (CommandFailureError)
|
|
13
13
|
* protocol the server answered something the SDK cannot read
|
|
14
|
-
* usage a mistake caught before any request (UsageError):
|
|
14
|
+
* usage a mistake caught before any request (UsageError): nothing was sent, so
|
|
15
|
+
* do not blame the server — fix the call (status is 0 here)
|
|
15
16
|
* unknown none of the above
|
|
16
17
|
*/
|
|
17
18
|
type ErrorKind = "auth" | "forbidden" | "notFound" | "invalid" | "transient" | "aborted" | "commandFailure" | "protocol" | "usage" | "unknown";
|
|
@@ -4302,7 +4303,7 @@ interface Violation {
|
|
|
4302
4303
|
rule: string;
|
|
4303
4304
|
/** "Story.Scope" when the violation names an attribute; null otherwise. */
|
|
4304
4305
|
attribute: AttributeTokenRef | null;
|
|
4305
|
-
/** The loc-2 tag naming what was violated, when the message carries one. */
|
|
4306
|
+
/** The loc-2 tag naming what was violated (`AttributeDefinition'Scope'Story`), when the message carries one; null for the token spelling. */
|
|
4306
4307
|
tag: string | null;
|
|
4307
4308
|
}
|
|
4308
4309
|
/** The violation a failure message describes, or null when it is not one. */
|
|
@@ -4311,6 +4312,8 @@ declare function parseViolation(message: string): Violation | null;
|
|
|
4311
4312
|
declare function failuresOf<Row extends Asset = Asset>(response: AssetApiResponse<Row>): CommandFailureDetail[];
|
|
4312
4313
|
/** What a batch did, in the model's terms: the services read this, never the envelope. */
|
|
4313
4314
|
interface Outcome<Row extends Asset = Asset> {
|
|
4315
|
+
/** The server's id for the request: what to quote when asking about a batch. Null for an outcome merged from several sends. */
|
|
4316
|
+
requestId: string | null;
|
|
4314
4317
|
created: Oid[];
|
|
4315
4318
|
modified: Oid[];
|
|
4316
4319
|
operated: Oid[];
|
|
@@ -4319,7 +4322,12 @@ interface Outcome<Row extends Asset = Asset> {
|
|
|
4319
4322
|
queryResults: (Row[] | null)[];
|
|
4320
4323
|
durationSeconds: number | null;
|
|
4321
4324
|
}
|
|
4322
|
-
/**
|
|
4325
|
+
/**
|
|
4326
|
+
* The outcome of a (translated) response: OIDs momentless, failures
|
|
4327
|
+
* normalised. Every field has a default, so a partial envelope (a test fake
|
|
4328
|
+
* that sends only queryResult) still yields a complete Outcome; consumers'
|
|
4329
|
+
* fakes rely on that, and the unit tests keep it so.
|
|
4330
|
+
*/
|
|
4323
4331
|
declare function outcomeOf<Row extends Asset = Asset>(response: AssetApiResponse<Row>): Outcome<Row>;
|
|
4324
4332
|
/** An outcome with nothing in it, to merge several sends into. */
|
|
4325
4333
|
declare const emptyOutcome: <Row extends Asset = Asset>() => Outcome<Row>;
|
|
@@ -4773,6 +4781,40 @@ declare function reversible(transport: Transport, receipt: Pick<Receipt, "revers
|
|
|
4773
4781
|
reactivated: Oid[];
|
|
4774
4782
|
}>;
|
|
4775
4783
|
|
|
4784
|
+
/**
|
|
4785
|
+
* The fields service: what a form for an asset type in a scope needs to
|
|
4786
|
+
* know, from three sources the API keeps apart —
|
|
4787
|
+
* - meta.v1 (through the schema): which attributes are REQUIRED to
|
|
4788
|
+
* create one (IsRequired and writable: Name and Scope on a Story);
|
|
4789
|
+
* - api/visibleFields: which attributes the product SHOWS for the type
|
|
4790
|
+
* in that scope, custom fields included once configured;
|
|
4791
|
+
* - the scope's Scheme: its IMPORTANT fields (Scheme.ImportantFields, a
|
|
4792
|
+
* list of attribute tokens) and whether they are enforced at close
|
|
4793
|
+
* (Scheme.IsRequiredAtClose).
|
|
4794
|
+
* One call, one answer, every list spelled as bare attribute names.
|
|
4795
|
+
*/
|
|
4796
|
+
|
|
4797
|
+
interface FieldsOf {
|
|
4798
|
+
type: AssetTypeToken;
|
|
4799
|
+
scope: Oid;
|
|
4800
|
+
/** The scope's Scheme; null when the scope has none. */
|
|
4801
|
+
scheme: Oid | null;
|
|
4802
|
+
/** Attributes the server requires on a create (meta: IsRequired, writable). */
|
|
4803
|
+
required: string[];
|
|
4804
|
+
/** Attributes the product shows for the type in this scope (api/visibleFields). */
|
|
4805
|
+
visible: string[];
|
|
4806
|
+
/** The scheme's important fields that belong to this type (or an ancestor); [] when the scheme names none. */
|
|
4807
|
+
important: string[];
|
|
4808
|
+
/** Whether the scheme enforces its important fields when an asset is closed. */
|
|
4809
|
+
requiredAtClose: boolean;
|
|
4810
|
+
}
|
|
4811
|
+
/**
|
|
4812
|
+
* An important-field token as the scheme spells it ("Story.Owners", or a
|
|
4813
|
+
* bare "Owners") reduced to the attribute name when it belongs to one of
|
|
4814
|
+
* the types given; null otherwise.
|
|
4815
|
+
*/
|
|
4816
|
+
declare function importantName(token: string, types: readonly AssetTypeToken[]): string | null;
|
|
4817
|
+
|
|
4776
4818
|
/**
|
|
4777
4819
|
* The guard: an api/asset batch sent as a compare-and-set, so a change only
|
|
4778
4820
|
* lands on an asset nobody else has changed since it was read. Ported from
|
|
@@ -5012,6 +5054,33 @@ interface ReadResult<Row extends Asset = Asset> {
|
|
|
5012
5054
|
declare const list: <Row extends Asset = Asset>(transport: Transport, type: string, params: ReadParams) => Promise<ReadResult<Row>>;
|
|
5013
5055
|
/** One asset by OID. */
|
|
5014
5056
|
declare function get<Row extends Asset = Asset>(transport: Transport, oid: Oid, select?: string[]): Promise<Row>;
|
|
5057
|
+
/**
|
|
5058
|
+
* What an operation answered with: the asset the server returned, as an
|
|
5059
|
+
* OID token — for Copy the copy, for anything else the operated asset —
|
|
5060
|
+
* and the moment the server stamped on it.
|
|
5061
|
+
*/
|
|
5062
|
+
interface OperationResult {
|
|
5063
|
+
oid: Oid;
|
|
5064
|
+
moment: string | null;
|
|
5065
|
+
}
|
|
5066
|
+
/**
|
|
5067
|
+
* Run an operation (Copy, Inactivate, …) through rest-1, for its result.
|
|
5068
|
+
* api/asset's `execute` performs the same operations but reports only the
|
|
5069
|
+
* operated asset, so a Copy's new OID is unobservable there; rest-1 answers
|
|
5070
|
+
* it. Not idempotent: never retried.
|
|
5071
|
+
*/
|
|
5072
|
+
declare function operate(transport: Transport, oid: Oid, op: string): Promise<OperationResult>;
|
|
5073
|
+
/** A new asset's template as the model carries it: the attributes the initializer set, no `_oid`. */
|
|
5074
|
+
type Template<Row extends Asset = Asset> = Partial<Omit<Row, "_oid">>;
|
|
5075
|
+
/**
|
|
5076
|
+
* The template for a new asset of `type` in a context (a Scope, a parent
|
|
5077
|
+
* asset): what the server's initializer would fill in — defaults nothing
|
|
5078
|
+
* else exposes. Idempotent, like any GET. Without a context the template
|
|
5079
|
+
* is empty, and an unknown context is echoed back, not refused.
|
|
5080
|
+
*/
|
|
5081
|
+
declare function template<Row extends Asset = Asset>(transport: Transport, type: string, options?: {
|
|
5082
|
+
ctx?: Oid;
|
|
5083
|
+
}): Promise<Template<Row>>;
|
|
5015
5084
|
/** A bounded history read: one row per moment, _oid carrying the moment. */
|
|
5016
5085
|
declare const history: <Row extends Asset = Asset>(transport: Transport, target: string, params: ReadParams) => Promise<ReadResult<Row>>;
|
|
5017
5086
|
|
|
@@ -5019,18 +5088,22 @@ type rest1_AssetDocument = AssetDocument;
|
|
|
5019
5088
|
type rest1_AssetRefDocument = AssetRefDocument;
|
|
5020
5089
|
type rest1_AssetsDocument = AssetsDocument;
|
|
5021
5090
|
type rest1_AttributeDocument = AttributeDocument;
|
|
5091
|
+
type rest1_OperationResult = OperationResult;
|
|
5022
5092
|
type rest1_ReadParams = ReadParams;
|
|
5023
5093
|
type rest1_ReadResult<Row extends Asset = Asset> = ReadResult<Row>;
|
|
5024
5094
|
type rest1_RelationDocument = RelationDocument;
|
|
5095
|
+
type rest1_Template<Row extends Asset = Asset> = Template<Row>;
|
|
5025
5096
|
declare const rest1_fromAssetDocument: typeof fromAssetDocument;
|
|
5026
5097
|
declare const rest1_get: typeof get;
|
|
5027
5098
|
declare const rest1_history: typeof history;
|
|
5028
5099
|
declare const rest1_list: typeof list;
|
|
5029
5100
|
declare const rest1_momentless: typeof momentless;
|
|
5101
|
+
declare const rest1_operate: typeof operate;
|
|
5102
|
+
declare const rest1_template: typeof template;
|
|
5030
5103
|
declare const rest1_toQuery: typeof toQuery;
|
|
5031
5104
|
declare namespace rest1 {
|
|
5032
|
-
export { rest1_fromAssetDocument as fromAssetDocument, rest1_get as get, rest1_history as history, rest1_list as list, rest1_momentless as momentless, rest1_toQuery as toQuery };
|
|
5033
|
-
export type { rest1_AssetDocument as AssetDocument, rest1_AssetRefDocument as AssetRefDocument, rest1_AssetsDocument as AssetsDocument, rest1_AttributeDocument as AttributeDocument, rest1_ReadParams as ReadParams, rest1_ReadResult as ReadResult, rest1_RelationDocument as RelationDocument };
|
|
5105
|
+
export { rest1_fromAssetDocument as fromAssetDocument, rest1_get as get, rest1_history as history, rest1_list as list, rest1_momentless as momentless, rest1_operate as operate, rest1_template as template, rest1_toQuery as toQuery };
|
|
5106
|
+
export type { rest1_AssetDocument as AssetDocument, rest1_AssetRefDocument as AssetRefDocument, rest1_AssetsDocument as AssetsDocument, rest1_AttributeDocument as AttributeDocument, rest1_OperationResult as OperationResult, rest1_ReadParams as ReadParams, rest1_ReadResult as ReadResult, rest1_RelationDocument as RelationDocument, rest1_Template as Template };
|
|
5034
5107
|
}
|
|
5035
5108
|
|
|
5036
5109
|
interface ClientOptions {
|
|
@@ -5076,12 +5149,15 @@ type Me = Pick<Member, "_oid" | "Name" | "Username" | "Nickname" | "Email">;
|
|
|
5076
5149
|
* every write answers in the model's terms (an Outcome, never an envelope).
|
|
5077
5150
|
*
|
|
5078
5151
|
* Reads: `query`, `queries`, `get`, `queryPage`, `pages`, `all`, `me`. A
|
|
5079
|
-
* query body is the same everywhere; the client picks the endpoint
|
|
5080
|
-
*
|
|
5081
|
-
* be
|
|
5082
|
-
*
|
|
5083
|
-
*
|
|
5084
|
-
*
|
|
5152
|
+
* query body is the same everywhere; the client picks the endpoint.
|
|
5153
|
+
* query.v1 answers rows alone — the lightest response, and read-only by
|
|
5154
|
+
* construction, so a request can be resent like a GET — but its shape has
|
|
5155
|
+
* nowhere to put a total; api/asset reports one (`needTotal`) beside the
|
|
5156
|
+
* rows, which is why `queryPage` goes there and `query` does not. rest-1
|
|
5157
|
+
* sits behind `data` for what neither does: deleted assets, history, a
|
|
5158
|
+
* new asset's template, an operation's result. Writes: `assets.send`,
|
|
5159
|
+
* `assets.sendGuarded`, `batch.run`, `copy`. Services: `resolve`,
|
|
5160
|
+
* `fields`, `attachments`, `embeddedImages`, `schema`, `localize`, `urls`.
|
|
5085
5161
|
*/
|
|
5086
5162
|
declare class AgilityApiClient {
|
|
5087
5163
|
readonly transport: Transport;
|
|
@@ -5097,9 +5173,12 @@ declare class AgilityApiClient {
|
|
|
5097
5173
|
withSignal(signal: AbortSignal): AgilityApiClient;
|
|
5098
5174
|
/**
|
|
5099
5175
|
* One query, its rows, translated. Sent to query.v1: it cannot write, so
|
|
5100
|
-
* the request is
|
|
5101
|
-
*
|
|
5102
|
-
*
|
|
5176
|
+
* the request is marked idempotent and the transport may resend it after
|
|
5177
|
+
* a network failure or a 5xx — when `retries` is set above its default
|
|
5178
|
+
* of 0. A page is required; a query the server refuses throws an
|
|
5179
|
+
* ApiError (kind "invalid", code QUERY_REJECTED; `message` holds the
|
|
5180
|
+
* server's sentences, `details` its whole error document), never an
|
|
5181
|
+
* empty result.
|
|
5103
5182
|
*/
|
|
5104
5183
|
query<const F extends From, const Q extends QueryBody<F>>(q: Q & QueryBody<F>): Promise<RowOf<Q>[]>;
|
|
5105
5184
|
query<Row extends Asset = Asset>(q: QueryBody): Promise<Row[]>;
|
|
@@ -5147,16 +5226,39 @@ declare class AgilityApiClient {
|
|
|
5147
5226
|
*/
|
|
5148
5227
|
localize(tags: readonly string[], options?: LocalizeOptions): Promise<Localizations>;
|
|
5149
5228
|
/**
|
|
5150
|
-
* rest-1.v1, for what
|
|
5151
|
-
* true`), one asset by OID without a page,
|
|
5152
|
-
* moment)
|
|
5229
|
+
* rest-1.v1, for what the other endpoints cannot do: deleted assets
|
|
5230
|
+
* (`deleted: true`), one asset by OID without a page, history (one row
|
|
5231
|
+
* per moment), a new asset's template (`template`: what the type's
|
|
5232
|
+
* initializer fills in for a context — a Timebox's next name and dates,
|
|
5233
|
+
* a Story's carry-over from a Request), and an operation's result
|
|
5234
|
+
* (`operate`: api/asset performs a Copy but never says what it made;
|
|
5235
|
+
* rest-1 answers the new OID). Parameters are spelled as a query's
|
|
5236
|
+
* (`select`, `filter`).
|
|
5153
5237
|
*/
|
|
5154
5238
|
readonly data: {
|
|
5155
5239
|
list: <Row extends Asset = Asset>(type: string, params: ReadParams) => Promise<ReadResult<Row>>;
|
|
5156
5240
|
get: <Row extends Asset = Asset>(oid: string, select?: string[]) => Promise<Row>;
|
|
5157
5241
|
history: <Row extends Asset = Asset>(target: string, params: ReadParams) => Promise<ReadResult<Row>>;
|
|
5242
|
+
template: <F extends From>(type: F, options?: {
|
|
5243
|
+
ctx?: Oid;
|
|
5244
|
+
}) => Promise<Partial<Omit<TypeOf<F>, "_oid">>>;
|
|
5245
|
+
operate: (oid: Oid, op: string) => Promise<OperationResult>;
|
|
5246
|
+
};
|
|
5247
|
+
/** Copy an asset (the server's Copy operation) and answer the copy's OID: the one thing api/asset's `execute: "Copy"` does not say. */
|
|
5248
|
+
copy(oid: Oid): Promise<Oid>;
|
|
5249
|
+
/**
|
|
5250
|
+
* What a form needs for an asset type in a scope: the attributes the
|
|
5251
|
+
* server requires to create one (meta), the ones the product shows there
|
|
5252
|
+
* (api/visibleFields, custom fields included once configured), and the
|
|
5253
|
+
* scope's scheme's important fields and whether they are enforced at
|
|
5254
|
+
* close. `visible` alone answers for several types and scopes at once.
|
|
5255
|
+
*/
|
|
5256
|
+
readonly fields: {
|
|
5257
|
+
describe: (type: From, scope: Oid) => Promise<FieldsOf>;
|
|
5258
|
+
visible: (types: readonly From[], scopes: readonly Oid[]) => Promise<Record<string, string[]>>;
|
|
5259
|
+
visibleByAsset: (oid: Oid) => Promise<string[]>;
|
|
5158
5260
|
};
|
|
5159
|
-
/** @deprecated since 1.0.0-alpha.3: `client.query` / `client.queries`
|
|
5261
|
+
/** @deprecated since 1.0.0-alpha.3: use `client.query` / `client.queries` (the same endpoint, query.v1; only the name moved). Removed in 1.0.0. */
|
|
5160
5262
|
readonly queryV1: {
|
|
5161
5263
|
query: <Row extends Asset = Asset>(q: QueryBody) => Promise<Row[]>;
|
|
5162
5264
|
queries: <Row extends Asset = Asset>(qs: QueryBody[]) => Promise<Row[][]>;
|
|
@@ -5181,7 +5283,7 @@ declare class AgilityApiClient {
|
|
|
5181
5283
|
* cover.
|
|
5182
5284
|
*/
|
|
5183
5285
|
sendGuarded: <Row extends Asset = Asset>(commands: Command[], options?: Pick<SendOptions, "throwOnFailure">) => Promise<GuardedResult<Row>>;
|
|
5184
|
-
/** @deprecated since 1.0.0-alpha.3: use `client.query` (or `client.queryPage`
|
|
5286
|
+
/** @deprecated since 1.0.0-alpha.3: use `client.query` (rows, through query.v1) or `client.queryPage` (rows and a total, through api/asset as this does). Removed in 1.0.0. */
|
|
5185
5287
|
query: <Row extends Asset = Asset>(q: QueryBody) => Promise<Row[]>;
|
|
5186
5288
|
/** @deprecated since 1.0.0-alpha.3: use `client.queries`. Removed in 1.0.0. */
|
|
5187
5289
|
queries: <Row extends Asset = Asset>(qs: QueryBody[]) => Promise<Row[][]>;
|
|
@@ -5265,8 +5367,13 @@ declare class AgilityApiClient {
|
|
|
5265
5367
|
};
|
|
5266
5368
|
/** Where a browser opens things on this instance: an asset's page, an attachment's bytes, an embedded image. */
|
|
5267
5369
|
readonly urls: {
|
|
5268
|
-
/**
|
|
5269
|
-
|
|
5370
|
+
/**
|
|
5371
|
+
* The asset's page, from an OID token or an asset Number (S-01001,
|
|
5372
|
+
* what a person typed and what a message shows): assetdetail.v1
|
|
5373
|
+
* resolves either and redirects to the type's own detail page; a signed-
|
|
5374
|
+
* out reader lands there after logging in. Anything else is a UsageError.
|
|
5375
|
+
*/
|
|
5376
|
+
asset: (ref: Oid | string) => string;
|
|
5270
5377
|
attachment: (id: string | number) => string;
|
|
5271
5378
|
embeddedImage: (id: string | number) => string;
|
|
5272
5379
|
};
|
|
@@ -5369,5 +5476,19 @@ declare namespace queryV1 {
|
|
|
5369
5476
|
};
|
|
5370
5477
|
}
|
|
5371
5478
|
|
|
5372
|
-
|
|
5373
|
-
|
|
5479
|
+
/** The attributes shown for each type in the scopes given: a map from type token to sorted attribute names. */
|
|
5480
|
+
declare function visibleFields(transport: Transport, types: readonly AssetTypeToken[], scopes: readonly Oid[]): Promise<Record<AssetTypeToken, string[]>>;
|
|
5481
|
+
/** The attributes shown for one asset, in its own Scope. */
|
|
5482
|
+
declare function visibleFieldsByAsset(transport: Transport, oid: Oid): Promise<string[]>;
|
|
5483
|
+
|
|
5484
|
+
declare const fields_visibleFields: typeof visibleFields;
|
|
5485
|
+
declare const fields_visibleFieldsByAsset: typeof visibleFieldsByAsset;
|
|
5486
|
+
declare namespace fields {
|
|
5487
|
+
export {
|
|
5488
|
+
fields_visibleFields as visibleFields,
|
|
5489
|
+
fields_visibleFieldsByAsset as visibleFieldsByAsset,
|
|
5490
|
+
};
|
|
5491
|
+
}
|
|
5492
|
+
|
|
5493
|
+
export { ASSET_STATE_CODES, AgilityApiClient, ApiError, AttachmentUploadError, BatchRecordError, BatchSendError, CommandFailureError, INLINE_LIMIT, INVERSE, NUMBER_ROOTS, CHUNK as RESOLVE_CHUNK, Schema, TypeCache, UNGUARDABLE_TYPES, UnguardableError, UsageError, WrappedError, assetApi, assetStateOf, attachment, createFetchTransport, describe as describeBatch, fields, guard, importantName, isAssetNumber, isOidToken, kindOf, loc2, meta, momentless, namesOf, parseOid, parseViolation, queryV1, resolveNumbers, resolveRef, rest1, reverseOf, reversible, runBatch, select, sendGuarded, snapshot, stampsOf, toOid, touchedBy, typeOfOid, unguardable };
|
|
5494
|
+
export type { Access, Actual, Allocation, Application, Asset, AssetApiResponse, AssetChangedEventDefinition, AssetCreatedEventDefinition, AssetDocument, AssetNumberAttributeDefinition, AssetStateValue, AssetType, AssetTypeMap, AssetTypeName, AssetTypeToken, AssetsDocument, Attachment, AddOptions as AttachmentAddOptions, AttachmentCategory, AttachmentInfo, AttributeAddedEventDefinition, AttributeChangedEventDefinition, AttributeDefinition, AttributeLookup, AttributeRemovedEventDefinition, AttributeTokenRef, AttributeType, AttributeValue, BaseAsset, BatchOptions, Budget, BuildProject, BuildRun, BuildSource, BuildStatus, Bundle, BusinessRule, Bytes, CalendarEvent, CalendarEventCategory, Capacity, ChangeSet, ClassOfService, ClientConfig, ClientOptions, Command, CommandBody, CommandFailureDetail, CommandValue, Community, Concept, ConcreteAssetTypeName, Conversation, CreateBody, CreateType, CredentialsAttributeDefinition, CustomAttributes, CustomList, DateString, DefaultRule, Defect, DefectResolution, DefectType, Delivery, DeliveryCategory, Described, EmbeddedImage$1 as EmbeddedImage, Environment, Epic, EpicCategory, EpicPriority, EpicStatus, ErrorKind, ExecuteBody, ExecuteSecurityCheckAttributeDefinition, Expression, ExpressionImage, ExpressionSpace, ExternalAction, ExternalActionInvocation, FetchTransportConfig, FieldsOf, From, Goal, GoalCategory, GoalPriority, Grant, GuardedResult, HierarchyRelationDefinition, Idea, IdeaCategory, IdeaChangeSet, IdeaComment, IdeaForum, IdeaStatus, IdeaUser, IdeasUserCache, Image, Issue, IssueCategory, IssuePriority, IssueResolution, IssueStatus, KeyResult, KeyResultCommitment, KeyResultUnit, Label, Link, LinkCategory, List, Localizations, LocalizeOptions, ManyToManyRelationDefinition, Me, Member, MemberLabel, Message, MessageReceipt, Metamodel, Milestone, MilestoneCategory, MultivalueAttributeDefinition, NameLookupFailure, Named, NoteCategory, Oid, OidParts, Okr, OkrObjective, OkrSession, OneToManyRelationDefinition, OperationExecutedEventDefinition, OperationResult, Outcome, Page, PagesOptions, PasswordAttributeDefinition, Phase, PlanningLevel, PlanningRoom, PrimaryWorkitem, PrincipalAttributeDefinition, Publication, QueryBody, ReadOptions, ReadParams, ReadResult, Receipt, Ref, RegressionPlan, RegressionSuite, RegressionTest, RegressionTestStatus, Release, Request, RequestBody, RequestCategory, RequestOptions, RequestPriority, RequestResolution, RequestStatus, Resolution, ResolvedAsset, ResponseType, Retrospective, RetrospectivePrompt, RetrospectiveTopic, Reverse, Roadmap, Role, Room, RowContext, RowOf, RowsOf, SavedView, Schedule, Scheme, Scope, ScopeLabel, ScopeStatus, SelectKey, SelectPath, SelectValue, Selected, SendOptions, SimpleAttributeDefinition, State, Status, Story, StoryCategory, StorySource, StoryStatus, StrategicTheme, StrategicThemeLevel, Subscription, SubscriptionTerm, SyntheticAttributeDefinition, Task, TaskCategory, TaskSource, TaskStatus, Team, TeamRoom, TeamWorkflow, Template, Test, TestCategory, TestRun, TestSet, TestStatus, TestSuite, Theme, ThemeCategory, ThemeLabel, ThemeSource, ThemeStatus, Timebox, Timesheet, Topic, Transport, TriggerType, TypeOf, UnauthorizedContext, UnauthorizedDecision, Unguardable, UpdateBody, UpdateSecurityCheckAttributeDefinition, ValueStream, VersionLabel, Violation, Workflow, WorkflowTransition, Workitem, WorkitemPriority, WorkitemRisk };
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
* aborted the caller's signal ended it
|
|
12
12
|
* commandFailure api/asset answered 200 with failed commands inside (CommandFailureError)
|
|
13
13
|
* protocol the server answered something the SDK cannot read
|
|
14
|
-
* usage a mistake caught before any request (UsageError):
|
|
14
|
+
* usage a mistake caught before any request (UsageError): nothing was sent, so
|
|
15
|
+
* do not blame the server — fix the call (status is 0 here)
|
|
15
16
|
* unknown none of the above
|
|
16
17
|
*/
|
|
17
18
|
type ErrorKind = "auth" | "forbidden" | "notFound" | "invalid" | "transient" | "aborted" | "commandFailure" | "protocol" | "usage" | "unknown";
|
|
@@ -4302,7 +4303,7 @@ interface Violation {
|
|
|
4302
4303
|
rule: string;
|
|
4303
4304
|
/** "Story.Scope" when the violation names an attribute; null otherwise. */
|
|
4304
4305
|
attribute: AttributeTokenRef | null;
|
|
4305
|
-
/** The loc-2 tag naming what was violated, when the message carries one. */
|
|
4306
|
+
/** The loc-2 tag naming what was violated (`AttributeDefinition'Scope'Story`), when the message carries one; null for the token spelling. */
|
|
4306
4307
|
tag: string | null;
|
|
4307
4308
|
}
|
|
4308
4309
|
/** The violation a failure message describes, or null when it is not one. */
|
|
@@ -4311,6 +4312,8 @@ declare function parseViolation(message: string): Violation | null;
|
|
|
4311
4312
|
declare function failuresOf<Row extends Asset = Asset>(response: AssetApiResponse<Row>): CommandFailureDetail[];
|
|
4312
4313
|
/** What a batch did, in the model's terms: the services read this, never the envelope. */
|
|
4313
4314
|
interface Outcome<Row extends Asset = Asset> {
|
|
4315
|
+
/** The server's id for the request: what to quote when asking about a batch. Null for an outcome merged from several sends. */
|
|
4316
|
+
requestId: string | null;
|
|
4314
4317
|
created: Oid[];
|
|
4315
4318
|
modified: Oid[];
|
|
4316
4319
|
operated: Oid[];
|
|
@@ -4319,7 +4322,12 @@ interface Outcome<Row extends Asset = Asset> {
|
|
|
4319
4322
|
queryResults: (Row[] | null)[];
|
|
4320
4323
|
durationSeconds: number | null;
|
|
4321
4324
|
}
|
|
4322
|
-
/**
|
|
4325
|
+
/**
|
|
4326
|
+
* The outcome of a (translated) response: OIDs momentless, failures
|
|
4327
|
+
* normalised. Every field has a default, so a partial envelope (a test fake
|
|
4328
|
+
* that sends only queryResult) still yields a complete Outcome; consumers'
|
|
4329
|
+
* fakes rely on that, and the unit tests keep it so.
|
|
4330
|
+
*/
|
|
4323
4331
|
declare function outcomeOf<Row extends Asset = Asset>(response: AssetApiResponse<Row>): Outcome<Row>;
|
|
4324
4332
|
/** An outcome with nothing in it, to merge several sends into. */
|
|
4325
4333
|
declare const emptyOutcome: <Row extends Asset = Asset>() => Outcome<Row>;
|
|
@@ -4773,6 +4781,40 @@ declare function reversible(transport: Transport, receipt: Pick<Receipt, "revers
|
|
|
4773
4781
|
reactivated: Oid[];
|
|
4774
4782
|
}>;
|
|
4775
4783
|
|
|
4784
|
+
/**
|
|
4785
|
+
* The fields service: what a form for an asset type in a scope needs to
|
|
4786
|
+
* know, from three sources the API keeps apart —
|
|
4787
|
+
* - meta.v1 (through the schema): which attributes are REQUIRED to
|
|
4788
|
+
* create one (IsRequired and writable: Name and Scope on a Story);
|
|
4789
|
+
* - api/visibleFields: which attributes the product SHOWS for the type
|
|
4790
|
+
* in that scope, custom fields included once configured;
|
|
4791
|
+
* - the scope's Scheme: its IMPORTANT fields (Scheme.ImportantFields, a
|
|
4792
|
+
* list of attribute tokens) and whether they are enforced at close
|
|
4793
|
+
* (Scheme.IsRequiredAtClose).
|
|
4794
|
+
* One call, one answer, every list spelled as bare attribute names.
|
|
4795
|
+
*/
|
|
4796
|
+
|
|
4797
|
+
interface FieldsOf {
|
|
4798
|
+
type: AssetTypeToken;
|
|
4799
|
+
scope: Oid;
|
|
4800
|
+
/** The scope's Scheme; null when the scope has none. */
|
|
4801
|
+
scheme: Oid | null;
|
|
4802
|
+
/** Attributes the server requires on a create (meta: IsRequired, writable). */
|
|
4803
|
+
required: string[];
|
|
4804
|
+
/** Attributes the product shows for the type in this scope (api/visibleFields). */
|
|
4805
|
+
visible: string[];
|
|
4806
|
+
/** The scheme's important fields that belong to this type (or an ancestor); [] when the scheme names none. */
|
|
4807
|
+
important: string[];
|
|
4808
|
+
/** Whether the scheme enforces its important fields when an asset is closed. */
|
|
4809
|
+
requiredAtClose: boolean;
|
|
4810
|
+
}
|
|
4811
|
+
/**
|
|
4812
|
+
* An important-field token as the scheme spells it ("Story.Owners", or a
|
|
4813
|
+
* bare "Owners") reduced to the attribute name when it belongs to one of
|
|
4814
|
+
* the types given; null otherwise.
|
|
4815
|
+
*/
|
|
4816
|
+
declare function importantName(token: string, types: readonly AssetTypeToken[]): string | null;
|
|
4817
|
+
|
|
4776
4818
|
/**
|
|
4777
4819
|
* The guard: an api/asset batch sent as a compare-and-set, so a change only
|
|
4778
4820
|
* lands on an asset nobody else has changed since it was read. Ported from
|
|
@@ -5012,6 +5054,33 @@ interface ReadResult<Row extends Asset = Asset> {
|
|
|
5012
5054
|
declare const list: <Row extends Asset = Asset>(transport: Transport, type: string, params: ReadParams) => Promise<ReadResult<Row>>;
|
|
5013
5055
|
/** One asset by OID. */
|
|
5014
5056
|
declare function get<Row extends Asset = Asset>(transport: Transport, oid: Oid, select?: string[]): Promise<Row>;
|
|
5057
|
+
/**
|
|
5058
|
+
* What an operation answered with: the asset the server returned, as an
|
|
5059
|
+
* OID token — for Copy the copy, for anything else the operated asset —
|
|
5060
|
+
* and the moment the server stamped on it.
|
|
5061
|
+
*/
|
|
5062
|
+
interface OperationResult {
|
|
5063
|
+
oid: Oid;
|
|
5064
|
+
moment: string | null;
|
|
5065
|
+
}
|
|
5066
|
+
/**
|
|
5067
|
+
* Run an operation (Copy, Inactivate, …) through rest-1, for its result.
|
|
5068
|
+
* api/asset's `execute` performs the same operations but reports only the
|
|
5069
|
+
* operated asset, so a Copy's new OID is unobservable there; rest-1 answers
|
|
5070
|
+
* it. Not idempotent: never retried.
|
|
5071
|
+
*/
|
|
5072
|
+
declare function operate(transport: Transport, oid: Oid, op: string): Promise<OperationResult>;
|
|
5073
|
+
/** A new asset's template as the model carries it: the attributes the initializer set, no `_oid`. */
|
|
5074
|
+
type Template<Row extends Asset = Asset> = Partial<Omit<Row, "_oid">>;
|
|
5075
|
+
/**
|
|
5076
|
+
* The template for a new asset of `type` in a context (a Scope, a parent
|
|
5077
|
+
* asset): what the server's initializer would fill in — defaults nothing
|
|
5078
|
+
* else exposes. Idempotent, like any GET. Without a context the template
|
|
5079
|
+
* is empty, and an unknown context is echoed back, not refused.
|
|
5080
|
+
*/
|
|
5081
|
+
declare function template<Row extends Asset = Asset>(transport: Transport, type: string, options?: {
|
|
5082
|
+
ctx?: Oid;
|
|
5083
|
+
}): Promise<Template<Row>>;
|
|
5015
5084
|
/** A bounded history read: one row per moment, _oid carrying the moment. */
|
|
5016
5085
|
declare const history: <Row extends Asset = Asset>(transport: Transport, target: string, params: ReadParams) => Promise<ReadResult<Row>>;
|
|
5017
5086
|
|
|
@@ -5019,18 +5088,22 @@ type rest1_AssetDocument = AssetDocument;
|
|
|
5019
5088
|
type rest1_AssetRefDocument = AssetRefDocument;
|
|
5020
5089
|
type rest1_AssetsDocument = AssetsDocument;
|
|
5021
5090
|
type rest1_AttributeDocument = AttributeDocument;
|
|
5091
|
+
type rest1_OperationResult = OperationResult;
|
|
5022
5092
|
type rest1_ReadParams = ReadParams;
|
|
5023
5093
|
type rest1_ReadResult<Row extends Asset = Asset> = ReadResult<Row>;
|
|
5024
5094
|
type rest1_RelationDocument = RelationDocument;
|
|
5095
|
+
type rest1_Template<Row extends Asset = Asset> = Template<Row>;
|
|
5025
5096
|
declare const rest1_fromAssetDocument: typeof fromAssetDocument;
|
|
5026
5097
|
declare const rest1_get: typeof get;
|
|
5027
5098
|
declare const rest1_history: typeof history;
|
|
5028
5099
|
declare const rest1_list: typeof list;
|
|
5029
5100
|
declare const rest1_momentless: typeof momentless;
|
|
5101
|
+
declare const rest1_operate: typeof operate;
|
|
5102
|
+
declare const rest1_template: typeof template;
|
|
5030
5103
|
declare const rest1_toQuery: typeof toQuery;
|
|
5031
5104
|
declare namespace rest1 {
|
|
5032
|
-
export { rest1_fromAssetDocument as fromAssetDocument, rest1_get as get, rest1_history as history, rest1_list as list, rest1_momentless as momentless, rest1_toQuery as toQuery };
|
|
5033
|
-
export type { rest1_AssetDocument as AssetDocument, rest1_AssetRefDocument as AssetRefDocument, rest1_AssetsDocument as AssetsDocument, rest1_AttributeDocument as AttributeDocument, rest1_ReadParams as ReadParams, rest1_ReadResult as ReadResult, rest1_RelationDocument as RelationDocument };
|
|
5105
|
+
export { rest1_fromAssetDocument as fromAssetDocument, rest1_get as get, rest1_history as history, rest1_list as list, rest1_momentless as momentless, rest1_operate as operate, rest1_template as template, rest1_toQuery as toQuery };
|
|
5106
|
+
export type { rest1_AssetDocument as AssetDocument, rest1_AssetRefDocument as AssetRefDocument, rest1_AssetsDocument as AssetsDocument, rest1_AttributeDocument as AttributeDocument, rest1_OperationResult as OperationResult, rest1_ReadParams as ReadParams, rest1_ReadResult as ReadResult, rest1_RelationDocument as RelationDocument, rest1_Template as Template };
|
|
5034
5107
|
}
|
|
5035
5108
|
|
|
5036
5109
|
interface ClientOptions {
|
|
@@ -5076,12 +5149,15 @@ type Me = Pick<Member, "_oid" | "Name" | "Username" | "Nickname" | "Email">;
|
|
|
5076
5149
|
* every write answers in the model's terms (an Outcome, never an envelope).
|
|
5077
5150
|
*
|
|
5078
5151
|
* Reads: `query`, `queries`, `get`, `queryPage`, `pages`, `all`, `me`. A
|
|
5079
|
-
* query body is the same everywhere; the client picks the endpoint
|
|
5080
|
-
*
|
|
5081
|
-
* be
|
|
5082
|
-
*
|
|
5083
|
-
*
|
|
5084
|
-
*
|
|
5152
|
+
* query body is the same everywhere; the client picks the endpoint.
|
|
5153
|
+
* query.v1 answers rows alone — the lightest response, and read-only by
|
|
5154
|
+
* construction, so a request can be resent like a GET — but its shape has
|
|
5155
|
+
* nowhere to put a total; api/asset reports one (`needTotal`) beside the
|
|
5156
|
+
* rows, which is why `queryPage` goes there and `query` does not. rest-1
|
|
5157
|
+
* sits behind `data` for what neither does: deleted assets, history, a
|
|
5158
|
+
* new asset's template, an operation's result. Writes: `assets.send`,
|
|
5159
|
+
* `assets.sendGuarded`, `batch.run`, `copy`. Services: `resolve`,
|
|
5160
|
+
* `fields`, `attachments`, `embeddedImages`, `schema`, `localize`, `urls`.
|
|
5085
5161
|
*/
|
|
5086
5162
|
declare class AgilityApiClient {
|
|
5087
5163
|
readonly transport: Transport;
|
|
@@ -5097,9 +5173,12 @@ declare class AgilityApiClient {
|
|
|
5097
5173
|
withSignal(signal: AbortSignal): AgilityApiClient;
|
|
5098
5174
|
/**
|
|
5099
5175
|
* One query, its rows, translated. Sent to query.v1: it cannot write, so
|
|
5100
|
-
* the request is
|
|
5101
|
-
*
|
|
5102
|
-
*
|
|
5176
|
+
* the request is marked idempotent and the transport may resend it after
|
|
5177
|
+
* a network failure or a 5xx — when `retries` is set above its default
|
|
5178
|
+
* of 0. A page is required; a query the server refuses throws an
|
|
5179
|
+
* ApiError (kind "invalid", code QUERY_REJECTED; `message` holds the
|
|
5180
|
+
* server's sentences, `details` its whole error document), never an
|
|
5181
|
+
* empty result.
|
|
5103
5182
|
*/
|
|
5104
5183
|
query<const F extends From, const Q extends QueryBody<F>>(q: Q & QueryBody<F>): Promise<RowOf<Q>[]>;
|
|
5105
5184
|
query<Row extends Asset = Asset>(q: QueryBody): Promise<Row[]>;
|
|
@@ -5147,16 +5226,39 @@ declare class AgilityApiClient {
|
|
|
5147
5226
|
*/
|
|
5148
5227
|
localize(tags: readonly string[], options?: LocalizeOptions): Promise<Localizations>;
|
|
5149
5228
|
/**
|
|
5150
|
-
* rest-1.v1, for what
|
|
5151
|
-
* true`), one asset by OID without a page,
|
|
5152
|
-
* moment)
|
|
5229
|
+
* rest-1.v1, for what the other endpoints cannot do: deleted assets
|
|
5230
|
+
* (`deleted: true`), one asset by OID without a page, history (one row
|
|
5231
|
+
* per moment), a new asset's template (`template`: what the type's
|
|
5232
|
+
* initializer fills in for a context — a Timebox's next name and dates,
|
|
5233
|
+
* a Story's carry-over from a Request), and an operation's result
|
|
5234
|
+
* (`operate`: api/asset performs a Copy but never says what it made;
|
|
5235
|
+
* rest-1 answers the new OID). Parameters are spelled as a query's
|
|
5236
|
+
* (`select`, `filter`).
|
|
5153
5237
|
*/
|
|
5154
5238
|
readonly data: {
|
|
5155
5239
|
list: <Row extends Asset = Asset>(type: string, params: ReadParams) => Promise<ReadResult<Row>>;
|
|
5156
5240
|
get: <Row extends Asset = Asset>(oid: string, select?: string[]) => Promise<Row>;
|
|
5157
5241
|
history: <Row extends Asset = Asset>(target: string, params: ReadParams) => Promise<ReadResult<Row>>;
|
|
5242
|
+
template: <F extends From>(type: F, options?: {
|
|
5243
|
+
ctx?: Oid;
|
|
5244
|
+
}) => Promise<Partial<Omit<TypeOf<F>, "_oid">>>;
|
|
5245
|
+
operate: (oid: Oid, op: string) => Promise<OperationResult>;
|
|
5246
|
+
};
|
|
5247
|
+
/** Copy an asset (the server's Copy operation) and answer the copy's OID: the one thing api/asset's `execute: "Copy"` does not say. */
|
|
5248
|
+
copy(oid: Oid): Promise<Oid>;
|
|
5249
|
+
/**
|
|
5250
|
+
* What a form needs for an asset type in a scope: the attributes the
|
|
5251
|
+
* server requires to create one (meta), the ones the product shows there
|
|
5252
|
+
* (api/visibleFields, custom fields included once configured), and the
|
|
5253
|
+
* scope's scheme's important fields and whether they are enforced at
|
|
5254
|
+
* close. `visible` alone answers for several types and scopes at once.
|
|
5255
|
+
*/
|
|
5256
|
+
readonly fields: {
|
|
5257
|
+
describe: (type: From, scope: Oid) => Promise<FieldsOf>;
|
|
5258
|
+
visible: (types: readonly From[], scopes: readonly Oid[]) => Promise<Record<string, string[]>>;
|
|
5259
|
+
visibleByAsset: (oid: Oid) => Promise<string[]>;
|
|
5158
5260
|
};
|
|
5159
|
-
/** @deprecated since 1.0.0-alpha.3: `client.query` / `client.queries`
|
|
5261
|
+
/** @deprecated since 1.0.0-alpha.3: use `client.query` / `client.queries` (the same endpoint, query.v1; only the name moved). Removed in 1.0.0. */
|
|
5160
5262
|
readonly queryV1: {
|
|
5161
5263
|
query: <Row extends Asset = Asset>(q: QueryBody) => Promise<Row[]>;
|
|
5162
5264
|
queries: <Row extends Asset = Asset>(qs: QueryBody[]) => Promise<Row[][]>;
|
|
@@ -5181,7 +5283,7 @@ declare class AgilityApiClient {
|
|
|
5181
5283
|
* cover.
|
|
5182
5284
|
*/
|
|
5183
5285
|
sendGuarded: <Row extends Asset = Asset>(commands: Command[], options?: Pick<SendOptions, "throwOnFailure">) => Promise<GuardedResult<Row>>;
|
|
5184
|
-
/** @deprecated since 1.0.0-alpha.3: use `client.query` (or `client.queryPage`
|
|
5286
|
+
/** @deprecated since 1.0.0-alpha.3: use `client.query` (rows, through query.v1) or `client.queryPage` (rows and a total, through api/asset as this does). Removed in 1.0.0. */
|
|
5185
5287
|
query: <Row extends Asset = Asset>(q: QueryBody) => Promise<Row[]>;
|
|
5186
5288
|
/** @deprecated since 1.0.0-alpha.3: use `client.queries`. Removed in 1.0.0. */
|
|
5187
5289
|
queries: <Row extends Asset = Asset>(qs: QueryBody[]) => Promise<Row[][]>;
|
|
@@ -5265,8 +5367,13 @@ declare class AgilityApiClient {
|
|
|
5265
5367
|
};
|
|
5266
5368
|
/** Where a browser opens things on this instance: an asset's page, an attachment's bytes, an embedded image. */
|
|
5267
5369
|
readonly urls: {
|
|
5268
|
-
/**
|
|
5269
|
-
|
|
5370
|
+
/**
|
|
5371
|
+
* The asset's page, from an OID token or an asset Number (S-01001,
|
|
5372
|
+
* what a person typed and what a message shows): assetdetail.v1
|
|
5373
|
+
* resolves either and redirects to the type's own detail page; a signed-
|
|
5374
|
+
* out reader lands there after logging in. Anything else is a UsageError.
|
|
5375
|
+
*/
|
|
5376
|
+
asset: (ref: Oid | string) => string;
|
|
5270
5377
|
attachment: (id: string | number) => string;
|
|
5271
5378
|
embeddedImage: (id: string | number) => string;
|
|
5272
5379
|
};
|
|
@@ -5369,5 +5476,19 @@ declare namespace queryV1 {
|
|
|
5369
5476
|
};
|
|
5370
5477
|
}
|
|
5371
5478
|
|
|
5372
|
-
|
|
5373
|
-
|
|
5479
|
+
/** The attributes shown for each type in the scopes given: a map from type token to sorted attribute names. */
|
|
5480
|
+
declare function visibleFields(transport: Transport, types: readonly AssetTypeToken[], scopes: readonly Oid[]): Promise<Record<AssetTypeToken, string[]>>;
|
|
5481
|
+
/** The attributes shown for one asset, in its own Scope. */
|
|
5482
|
+
declare function visibleFieldsByAsset(transport: Transport, oid: Oid): Promise<string[]>;
|
|
5483
|
+
|
|
5484
|
+
declare const fields_visibleFields: typeof visibleFields;
|
|
5485
|
+
declare const fields_visibleFieldsByAsset: typeof visibleFieldsByAsset;
|
|
5486
|
+
declare namespace fields {
|
|
5487
|
+
export {
|
|
5488
|
+
fields_visibleFields as visibleFields,
|
|
5489
|
+
fields_visibleFieldsByAsset as visibleFieldsByAsset,
|
|
5490
|
+
};
|
|
5491
|
+
}
|
|
5492
|
+
|
|
5493
|
+
export { ASSET_STATE_CODES, AgilityApiClient, ApiError, AttachmentUploadError, BatchRecordError, BatchSendError, CommandFailureError, INLINE_LIMIT, INVERSE, NUMBER_ROOTS, CHUNK as RESOLVE_CHUNK, Schema, TypeCache, UNGUARDABLE_TYPES, UnguardableError, UsageError, WrappedError, assetApi, assetStateOf, attachment, createFetchTransport, describe as describeBatch, fields, guard, importantName, isAssetNumber, isOidToken, kindOf, loc2, meta, momentless, namesOf, parseOid, parseViolation, queryV1, resolveNumbers, resolveRef, rest1, reverseOf, reversible, runBatch, select, sendGuarded, snapshot, stampsOf, toOid, touchedBy, typeOfOid, unguardable };
|
|
5494
|
+
export type { Access, Actual, Allocation, Application, Asset, AssetApiResponse, AssetChangedEventDefinition, AssetCreatedEventDefinition, AssetDocument, AssetNumberAttributeDefinition, AssetStateValue, AssetType, AssetTypeMap, AssetTypeName, AssetTypeToken, AssetsDocument, Attachment, AddOptions as AttachmentAddOptions, AttachmentCategory, AttachmentInfo, AttributeAddedEventDefinition, AttributeChangedEventDefinition, AttributeDefinition, AttributeLookup, AttributeRemovedEventDefinition, AttributeTokenRef, AttributeType, AttributeValue, BaseAsset, BatchOptions, Budget, BuildProject, BuildRun, BuildSource, BuildStatus, Bundle, BusinessRule, Bytes, CalendarEvent, CalendarEventCategory, Capacity, ChangeSet, ClassOfService, ClientConfig, ClientOptions, Command, CommandBody, CommandFailureDetail, CommandValue, Community, Concept, ConcreteAssetTypeName, Conversation, CreateBody, CreateType, CredentialsAttributeDefinition, CustomAttributes, CustomList, DateString, DefaultRule, Defect, DefectResolution, DefectType, Delivery, DeliveryCategory, Described, EmbeddedImage$1 as EmbeddedImage, Environment, Epic, EpicCategory, EpicPriority, EpicStatus, ErrorKind, ExecuteBody, ExecuteSecurityCheckAttributeDefinition, Expression, ExpressionImage, ExpressionSpace, ExternalAction, ExternalActionInvocation, FetchTransportConfig, FieldsOf, From, Goal, GoalCategory, GoalPriority, Grant, GuardedResult, HierarchyRelationDefinition, Idea, IdeaCategory, IdeaChangeSet, IdeaComment, IdeaForum, IdeaStatus, IdeaUser, IdeasUserCache, Image, Issue, IssueCategory, IssuePriority, IssueResolution, IssueStatus, KeyResult, KeyResultCommitment, KeyResultUnit, Label, Link, LinkCategory, List, Localizations, LocalizeOptions, ManyToManyRelationDefinition, Me, Member, MemberLabel, Message, MessageReceipt, Metamodel, Milestone, MilestoneCategory, MultivalueAttributeDefinition, NameLookupFailure, Named, NoteCategory, Oid, OidParts, Okr, OkrObjective, OkrSession, OneToManyRelationDefinition, OperationExecutedEventDefinition, OperationResult, Outcome, Page, PagesOptions, PasswordAttributeDefinition, Phase, PlanningLevel, PlanningRoom, PrimaryWorkitem, PrincipalAttributeDefinition, Publication, QueryBody, ReadOptions, ReadParams, ReadResult, Receipt, Ref, RegressionPlan, RegressionSuite, RegressionTest, RegressionTestStatus, Release, Request, RequestBody, RequestCategory, RequestOptions, RequestPriority, RequestResolution, RequestStatus, Resolution, ResolvedAsset, ResponseType, Retrospective, RetrospectivePrompt, RetrospectiveTopic, Reverse, Roadmap, Role, Room, RowContext, RowOf, RowsOf, SavedView, Schedule, Scheme, Scope, ScopeLabel, ScopeStatus, SelectKey, SelectPath, SelectValue, Selected, SendOptions, SimpleAttributeDefinition, State, Status, Story, StoryCategory, StorySource, StoryStatus, StrategicTheme, StrategicThemeLevel, Subscription, SubscriptionTerm, SyntheticAttributeDefinition, Task, TaskCategory, TaskSource, TaskStatus, Team, TeamRoom, TeamWorkflow, Template, Test, TestCategory, TestRun, TestSet, TestStatus, TestSuite, Theme, ThemeCategory, ThemeLabel, ThemeSource, ThemeStatus, Timebox, Timesheet, Topic, Transport, TriggerType, TypeOf, UnauthorizedContext, UnauthorizedDecision, Unguardable, UpdateBody, UpdateSecurityCheckAttributeDefinition, ValueStream, VersionLabel, Violation, Workflow, WorkflowTransition, Workitem, WorkitemPriority, WorkitemRisk };
|