@openengio/cli 0.33.0 → 0.36.0

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.
@@ -79,6 +79,12 @@ var FIX_REQUEST = { option: "Correct the request and send it again." };
79
79
  var ASK_ADMINISTRATOR = { option: "Ask an administrator of the organisation to make the change or to grant the permission." };
80
80
  var SIGN_IN_AGAIN = { option: "Sign in again." };
81
81
  var RULE_ENTRIES = {
82
+ "upstream-changed": entry("The upstream content changed since the link was reviewed; no link was cleared.", {
83
+ option: "Read the link status, review the upstream content and clear against its new version.",
84
+ read: "readLinkStatus"
85
+ }),
86
+ "upstream-not-readable": entry("The upstream object or an object in its review chain cannot be read; no link was cleared.", { option: "Ask for read access to the upstream review chain before clearing the link." }),
87
+ "too-many-links": entry("The review chain or aggregate exceeds 100 contributing objects or links.", { option: "Reduce the chain or the contributing links before reading or clearing again." }),
82
88
  "unsupported-content": entry("The file's content or name is not an admitted attachment format.", FIX_REQUEST),
83
89
  "too-large": entry("The attachment exceeds the per-file byte limit.", FIX_REQUEST),
84
90
  "not-an-attachment-property": entry("The object's stored type version does not declare this property as an attachment.", FIX_REQUEST),
@@ -364,7 +370,7 @@ var ROUTE_DOCS = Object.freeze({
364
370
  stageAttachment: doc("Stages attachment bytes for the selected project and ref without writing an engineering row. Admits user, service, client and run-apply tokens.", [...ATTACHMENT_SCOPED, "unsupported-content", "too-large"]),
365
371
  readAttachment: doc("Downloads the attachment held by an object's property at its stored type version. Admits user, service, client, run-explore and run-apply tokens.", [...ATTACHMENT_SCOPED, "organisation-not-ready", "branch-needs-schema-update", "not-an-attachment-property", "no-attachment", "attachment-unavailable"]),
366
372
  readObject: doc("Reads one object at a branch or baseline.", REF_READ),
367
- queryObjects: doc(`Runs a filtered, ordered, paged query over the objects of a branch or baseline, or pages the union, intersection or difference of two plain object-set descriptions on that ref. ${QUERY_PROJECT_SCOPE}`, [
373
+ queryObjects: doc(`Runs a filtered, ordered, paged query over the objects of a branch or baseline, or pages the union, intersection or difference of two plain object-set descriptions on that ref. A top-level type filter {kind:"type",op:"in",values:["part","system"]} selects any of 1 to 100 published type keys and may be combined with a text filter; continuation binds to the entire selection. ${QUERY_PROJECT_SCOPE}`, [
368
374
  ...REF_READ,
369
375
  "malformed-query",
370
376
  "over-bound",
@@ -389,6 +395,21 @@ var ROUTE_DOCS = Object.freeze({
389
395
  startImportRun: doc("Starts a run that imports the connection's source into its mirror project, and answers the run once its row has committed.", [...SCOPED, "import-running", "connection-revoked", "types-not-approved"]),
390
396
  listImportRuns: doc("Lists the runs of a connection, newest first, or the one run named.", SCOPED),
391
397
  closeImportRun: doc("Ends a running run: the connection's service identity as succeeded or failed, or the person who started it as failed.", [...SCOPED, "run-not-running"]),
398
+ createHostedApp: doc("Creates a hosted app in a project under a key the project has not used.", [...WRITE]),
399
+ publishHostedVersion: doc("Publishes the request body, at most 4 MiB, as the next version of the hosted app the name header keys.", [...WRITE]),
400
+ readHostedBundle: doc("Reads the bundle of the caller's own open launch record.", [...SCOPED]),
401
+ listHostedApps: doc("Lists the hosted apps of a project the caller reads.", [...SCOPED]),
402
+ listHostedVersions: doc("Lists the versions of a hosted app, newest first.", [...SCOPED]),
403
+ revokeHostedApp: doc("Revokes a hosted app, which ends every launch of it at the next call.", [...WRITE]),
404
+ revokeHostedVersion: doc("Revokes one version of a hosted app.", [...WRITE]),
405
+ openHostedApp: doc("Opens the newest live version of the app keyed by appKey in the selected project, derives its runtime and records the caller's launch.", [...WRITE]),
406
+ endHostedLaunch: doc("Ends the caller's own open launch record.", [...WRITE]),
407
+ mintHostedAppToken: doc("Mints the short-lived token a hosted app presents, from a user token and the caller's own open launch record.", [...SCOPED]),
408
+ setHostedOneWallSwitch: doc("Turns the organisation's one-wall switch on or off. Turning it off withdraws every one-wall permission.", [...WRITE]),
409
+ readHostedOneWallSwitch: doc("Reads the organisation's one-wall switch.", [...SCOPED]),
410
+ grantHostedOneWall: doc("Grants one app the one-wall permission while the organisation's switch is on.", [...WRITE]),
411
+ withdrawHostedOneWall: doc("Withdraws one app's one-wall permission.", [...WRITE]),
412
+ listHostedOneWallGrants: doc("Lists the organisation's one-wall permissions.", [...SCOPED]),
392
413
  previewDelete: doc("Previews deleting an object: the links the delete would remove, or the refusal it would meet. Changes nothing.", [...OBJECT_WRITE, "plan-closed"]),
393
414
  recover: doc("Finds what an interrupted mutation did and finishes its record.", REF_READ),
394
415
  executeVerb: doc("Runs a verb on an object and records its result.", [...OBJECT_WRITE, "plan-closed"]),
@@ -405,7 +426,7 @@ var ROUTE_DOCS = Object.freeze({
405
426
  readMergeConflicts: doc("Reads conflicts for the source branch named in input.name, always comparing it with main. For each field, base is the common value before either side changed it, ours is main, and theirs is the source branch. If the merge targeted another branch, this read still compares with main and does not report that merge's conflicts.", REF_READ),
406
427
  disposeRef: doc("Disposes a branch that is no longer wanted: a writer of the branch when no proposal on it is pending, otherwise a merger of the project.", [...WRITE, "concurrent-change", "lock-unavailable"]),
407
428
  listProjects: doc("Lists every project the caller may read in the organisation the session is attached to, with its namespace.", SIGNED_IN),
408
- listRefs: doc("Lists the branches of a project, each with its head: readable with a hash, withheld when the caller may not read the branch, or unread past the first 50 branches.", [...SCOPED, "organisation-not-ready"]),
429
+ listRefs: doc("Lists the branches of a project, each with its head: readable with a hash, withheld when the caller may not read the branch, or unread past the first 50 branches. Each row also carries a schema state as a convenience hint; the branch-needs-schema-update refusal on use remains the guard.", [...SCOPED, "organisation-not-ready"]),
409
430
  readCatalogue: doc("Reads the published catalogue of a project's namespace.", SCOPED),
410
431
  readPendingProposal: doc("Reads the proposal waiting for review on a branch, if any.", SCOPED),
411
432
  submitProposal: doc("Submits a branch for review.", [...REF_READ, "proposal-open", "no-commits"]),
@@ -464,9 +485,13 @@ var ROUTE_DOCS = Object.freeze({
464
485
  readProposal: doc("Reads one proposal.", SCOPED),
465
486
  refuseProposal: doc("Refuses a proposal and returns its branch to its author.", [...SCOPED, "proposal-not-pending"]),
466
487
  readBranchDiff: doc("Reads the objects and edges a proposal's branch changes against its target.", REF_READ),
488
+ readLinkStatus: doc("Reads an object's tracked links at a stable head: review (cleared, suspect, unreviewed, not-visible or too-many-links), clearing attribution, link bounds and aggregate bounds with units and coverage. Only a readable upstream supplies its opaque upstreamVersion, the precondition for clearing.", [...REF_READ, "head-moved"]),
489
+ clearLinks: doc("Clears 1 to 100 links atomically on the named ref. Send each linkId with the upstreamVersion from readLinkStatus as a precondition; upstream-changed requires a fresh read and review. Records the clearer and time without changing bounds. Admits user, run-apply, client and service; run-explore and run-types are refused at admission. An unknown outcome must be recovered by correlation before retrying.", [...OBJECT_WRITE, "upstream-changed", "upstream-not-readable", "too-many-links"]),
490
+ readChangeImpact: doc("Reads review, link bounds and aggregate bounds state changes against the branch's merge base, plus downstream reach to depth three and hidden counts. Both ref and base are required. Includes added and removed states and pins both heads; over-bound and head-moved refuse the entire read without a partial answer.", [...REF_READ, "over-bound", "head-moved"]),
467
491
  diffBranches: doc("Reads the objects and edges one branch or baseline changes against another.", REF_READ),
468
492
  readBranchHistory: doc("Reads a branch's history of commits.", [...SCOPED, "invalid-continuation", "stale-continuation", "malformed-history-request"]),
469
493
  listAudit: doc("Lists the audit records of a project.", [...SCOPED, "invalid-continuation"]),
494
+ listOrganisationAudit: doc("Lists the organisation-level actions the caller may read.", [...SCOPED, "invalid-continuation"]),
470
495
  readRefHead: doc("Reads the head of a branch or baseline.", REF_READ),
471
496
  inspectBranchOperation: doc("Reads the state of a branch operation the caller started.", SCOPED),
472
497
  abandonBranch: doc("Refuses branch abandonment because this operation is not available in this release.", [
@@ -543,6 +568,13 @@ var BINARY_REQUESTS = {
543
568
  "selectorEncoding": "json",
544
569
  "nameHeader": "x-oe2-attachment-name",
545
570
  "nameEncoding": "rfc8187"
571
+ },
572
+ publishHostedVersion: {
573
+ "contentType": "application/octet-stream",
574
+ "selectorHeader": "x-oe2-selector",
575
+ "selectorEncoding": "json",
576
+ "nameHeader": "x-oe2-attachment-name",
577
+ "nameEncoding": "rfc8187"
546
578
  }
547
579
  };
548
580
  var BINARY_REQUEST_INPUTS = deepFreeze(BINARY_REQUESTS);
@@ -594,9 +626,9 @@ var SCHEMAS = {
594
626
  "additionalProperties": false
595
627
  },
596
628
  readObject: { "type": "object", "properties": { "objectId": { "type": "string" } }, "required": ["objectId"], "additionalProperties": false },
597
- queryObjects: { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "objects" }, "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } } }, "required": ["edgeTypeKey", "direction", "targetTypeKey"], "additionalProperties": false } }, "sort": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "property", "direction"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "direction"], "additionalProperties": false }] }, "limit": { "type": "number" }, "continuation": { "oneOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["kind", "typeKey", "limit", "continuation"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "set" }, "op": { "enum": ["union", "intersection", "difference"] }, "left": { "type": "object", "properties": { "kind": { "const": "objects" }, "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } } }, "required": ["edgeTypeKey", "direction", "targetTypeKey"], "additionalProperties": false } }, "sort": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "property", "direction"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "direction"], "additionalProperties": false }] } }, "required": ["kind", "typeKey"], "additionalProperties": false }, "right": { "type": "object", "properties": { "kind": { "const": "objects" }, "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } } }, "required": ["edgeTypeKey", "direction", "targetTypeKey"], "additionalProperties": false } }, "sort": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "property", "direction"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "direction"], "additionalProperties": false }] } }, "required": ["kind", "typeKey"], "additionalProperties": false }, "limit": { "type": "number" }, "continuation": { "oneOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["kind", "op", "left", "right", "limit", "continuation"], "additionalProperties": false }] },
598
- queryRows: { "type": "object", "properties": { "kind": { "const": "graph-query" }, "start": { "type": "object", "properties": { "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } } }, "required": ["typeKey"], "additionalProperties": false }, "path": { "type": "array", "items": { "type": "object", "properties": { "alias": { "type": "string" }, "edgeTypeKeys": { "oneOf": [{ "const": "any" }, { "type": "array", "items": { "type": "string" } }] }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKeys": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } }, "repeat": { "type": "object", "properties": { "depth": { "type": "number" } }, "required": ["depth"], "additionalProperties": false } }, "required": ["alias", "edgeTypeKeys", "direction"], "additionalProperties": false } }, "answer": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "rows" }, "columns": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "enum": ["identity", "typeKey"] }, "alias": { "type": "string" } }, "required": ["kind", "alias"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "alias": { "type": "string" }, "property": { "type": "string" } }, "required": ["kind", "alias", "property"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "alias": { "type": "string" }, "field": { "enum": ["identity", "typeKey"] } }, "required": ["kind", "alias", "field"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge-property" }, "alias": { "type": "string" }, "property": { "type": "string" } }, "required": ["kind", "alias", "property"], "additionalProperties": false }] } }, "order": { "type": "object", "properties": { "alias": { "type": "string" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["alias", "property", "direction"], "additionalProperties": false }, "limit": { "type": "number" }, "continuation": { "oneOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["kind", "columns", "limit", "continuation"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "groups" }, "keys": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "enum": ["identity", "typeKey"] }, "alias": { "type": "string" } }, "required": ["kind", "alias"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "alias": { "type": "string" }, "property": { "type": "string" } }, "required": ["kind", "alias", "property"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "parent" }, "alias": { "type": "string" }, "edgeTypeKeys": { "type": "array", "items": { "type": "string" } }, "parents": { "type": "array", "items": { "type": "object", "properties": { "objectId": { "type": "string" }, "projectId": { "type": "string" } }, "required": ["objectId", "projectId"], "additionalProperties": false } } }, "required": ["kind", "alias", "edgeTypeKeys"], "additionalProperties": false }] } }, "measures": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "count" }, "over": { "type": "array", "items": { "type": "string" } }, "ends": { "enum": ["visible", "all"] } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "countDistinct" }, "alias": { "type": "string" }, "over": { "type": "array", "items": { "type": "string" } }, "ends": { "enum": ["visible", "all"] } }, "required": ["kind", "alias"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "sum" }, "alias": { "type": "string" }, "property": { "type": "string" }, "over": { "type": "array", "items": { "type": "string" } }, "multiplicity": { "enum": ["per-path", "distinct"] }, "ends": { "enum": ["visible", "all"] } }, "required": ["kind", "alias", "property"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "enum": ["min", "max"] }, "alias": { "type": "string" }, "property": { "type": "string" }, "over": { "type": "array", "items": { "type": "string" } }, "ends": { "enum": ["visible", "all"] } }, "required": ["kind", "alias", "property"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "weightedSum" }, "alias": { "type": "string" }, "property": { "type": "string" }, "weight": { "type": "string" }, "over": { "type": "array", "items": { "type": "string" } }, "multiplicity": { "enum": ["per-path", "distinct"] }, "ends": { "enum": ["visible", "all"] } }, "required": ["kind", "alias", "weight", "over", "multiplicity", "ends"], "additionalProperties": false }] } }, "having": { "type": "array", "items": { "type": "object", "properties": { "measure": { "type": "number" }, "op": { "enum": ["=", ">", ">=", "<", "<="] }, "value": { "type": "number" } }, "required": ["measure", "op", "value"], "additionalProperties": false } }, "order": { "type": "object", "properties": { "by": { "enum": ["key", "measure"] }, "index": { "type": "number" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["by", "index", "direction"], "additionalProperties": false }, "limit": { "type": "number" } }, "required": ["kind", "keys", "measures"], "additionalProperties": false }] } }, "required": ["kind", "start", "answer"], "additionalProperties": false },
599
- aggregateObjects: { "type": "object", "properties": { "kind": { "const": "aggregate" }, "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } } }, "required": ["edgeTypeKey", "direction", "targetTypeKey"], "additionalProperties": false } }, "operation": { "enum": ["count", "min", "max", "sum", "average"] }, "property": { "type": "string" }, "groupBy": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "type" } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" } }, "required": ["kind", "property"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "parent" }, "edgeTypeKeys": { "type": "array", "items": { "type": "string" } }, "multiplicity": { "enum": ["per-path", "distinct"] }, "ends": { "enum": ["visible", "all"] }, "parents": { "type": "array", "items": { "type": "object", "properties": { "objectId": { "type": "string" }, "projectId": { "type": "string" } }, "required": ["objectId", "projectId"], "additionalProperties": false } } }, "required": ["kind", "edgeTypeKeys", "multiplicity", "ends"], "additionalProperties": false }] } }, "required": ["kind", "typeKey", "operation"], "additionalProperties": false },
629
+ queryObjects: { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "objects" }, "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } } }, "required": ["edgeTypeKey", "direction", "targetTypeKey"], "additionalProperties": false } }, "sort": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "property", "direction"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "direction"], "additionalProperties": false }] }, "limit": { "type": "number" }, "continuation": { "oneOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["kind", "typeKey", "limit", "continuation"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "set" }, "op": { "enum": ["union", "intersection", "difference"] }, "left": { "type": "object", "properties": { "kind": { "const": "objects" }, "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } } }, "required": ["edgeTypeKey", "direction", "targetTypeKey"], "additionalProperties": false } }, "sort": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "property", "direction"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "direction"], "additionalProperties": false }] } }, "required": ["kind", "typeKey"], "additionalProperties": false }, "right": { "type": "object", "properties": { "kind": { "const": "objects" }, "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } } }, "required": ["edgeTypeKey", "direction", "targetTypeKey"], "additionalProperties": false } }, "sort": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "property", "direction"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "direction"], "additionalProperties": false }] } }, "required": ["kind", "typeKey"], "additionalProperties": false }, "limit": { "type": "number" }, "continuation": { "oneOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["kind", "op", "left", "right", "limit", "continuation"], "additionalProperties": false }] },
630
+ queryRows: { "type": "object", "properties": { "kind": { "const": "graph-query" }, "start": { "type": "object", "properties": { "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } } }, "required": ["typeKey"], "additionalProperties": false }, "path": { "type": "array", "items": { "type": "object", "properties": { "alias": { "type": "string" }, "edgeTypeKeys": { "oneOf": [{ "const": "any" }, { "type": "array", "items": { "type": "string" } }] }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKeys": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } }, "repeat": { "type": "object", "properties": { "depth": { "type": "number" } }, "required": ["depth"], "additionalProperties": false } }, "required": ["alias", "edgeTypeKeys", "direction"], "additionalProperties": false } }, "answer": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "rows" }, "columns": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "enum": ["identity", "typeKey"] }, "alias": { "type": "string" } }, "required": ["kind", "alias"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "alias": { "type": "string" }, "property": { "type": "string" } }, "required": ["kind", "alias", "property"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "alias": { "type": "string" }, "field": { "enum": ["identity", "typeKey"] } }, "required": ["kind", "alias", "field"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge-property" }, "alias": { "type": "string" }, "property": { "type": "string" } }, "required": ["kind", "alias", "property"], "additionalProperties": false }] } }, "order": { "type": "object", "properties": { "alias": { "type": "string" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["alias", "property", "direction"], "additionalProperties": false }, "limit": { "type": "number" }, "continuation": { "oneOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["kind", "columns", "limit", "continuation"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "groups" }, "keys": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "enum": ["identity", "typeKey"] }, "alias": { "type": "string" } }, "required": ["kind", "alias"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "alias": { "type": "string" }, "property": { "type": "string" } }, "required": ["kind", "alias", "property"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "parent" }, "alias": { "type": "string" }, "edgeTypeKeys": { "type": "array", "items": { "type": "string" } }, "parents": { "type": "array", "items": { "type": "object", "properties": { "objectId": { "type": "string" }, "projectId": { "type": "string" } }, "required": ["objectId", "projectId"], "additionalProperties": false } } }, "required": ["kind", "alias", "edgeTypeKeys"], "additionalProperties": false }] } }, "measures": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "count" }, "over": { "type": "array", "items": { "type": "string" } }, "ends": { "enum": ["visible", "all"] } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "countDistinct" }, "alias": { "type": "string" }, "over": { "type": "array", "items": { "type": "string" } }, "ends": { "enum": ["visible", "all"] } }, "required": ["kind", "alias"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "sum" }, "alias": { "type": "string" }, "property": { "type": "string" }, "over": { "type": "array", "items": { "type": "string" } }, "multiplicity": { "enum": ["per-path", "distinct"] }, "ends": { "enum": ["visible", "all"] } }, "required": ["kind", "alias", "property"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "enum": ["min", "max"] }, "alias": { "type": "string" }, "property": { "type": "string" }, "over": { "type": "array", "items": { "type": "string" } }, "ends": { "enum": ["visible", "all"] } }, "required": ["kind", "alias", "property"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "weightedSum" }, "alias": { "type": "string" }, "property": { "type": "string" }, "weight": { "type": "string" }, "over": { "type": "array", "items": { "type": "string" } }, "multiplicity": { "enum": ["per-path", "distinct"] }, "ends": { "enum": ["visible", "all"] } }, "required": ["kind", "alias", "weight", "over", "multiplicity", "ends"], "additionalProperties": false }] } }, "having": { "type": "array", "items": { "type": "object", "properties": { "measure": { "type": "number" }, "op": { "enum": ["=", ">", ">=", "<", "<="] }, "value": { "type": "number" } }, "required": ["measure", "op", "value"], "additionalProperties": false } }, "order": { "type": "object", "properties": { "by": { "enum": ["key", "measure"] }, "index": { "type": "number" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["by", "index", "direction"], "additionalProperties": false }, "limit": { "type": "number" } }, "required": ["kind", "keys", "measures"], "additionalProperties": false }] } }, "required": ["kind", "start", "answer"], "additionalProperties": false },
631
+ aggregateObjects: { "type": "object", "properties": { "kind": { "const": "aggregate" }, "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } } }, "required": ["edgeTypeKey", "direction", "targetTypeKey"], "additionalProperties": false } }, "operation": { "enum": ["count", "min", "max", "sum", "average"] }, "property": { "type": "string" }, "groupBy": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "type" } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" } }, "required": ["kind", "property"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "parent" }, "edgeTypeKeys": { "type": "array", "items": { "type": "string" } }, "multiplicity": { "enum": ["per-path", "distinct"] }, "ends": { "enum": ["visible", "all"] }, "parents": { "type": "array", "items": { "type": "object", "properties": { "objectId": { "type": "string" }, "projectId": { "type": "string" } }, "required": ["objectId", "projectId"], "additionalProperties": false } } }, "required": ["kind", "edgeTypeKeys", "multiplicity", "ends"], "additionalProperties": false }] } }, "required": ["kind", "typeKey", "operation"], "additionalProperties": false },
600
632
  discoverVerbs: { "type": "object", "properties": { "objectId": { "type": "string" } }, "required": ["objectId"], "additionalProperties": false },
601
633
  readHistory: { "type": "object", "properties": { "objectId": { "type": "string" }, "limit": { "type": "number" }, "continuation": { "oneOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["objectId", "limit", "continuation"], "additionalProperties": false },
602
634
  mutate: { "type": "object", "properties": { "correlation": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "mint" } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "sent" }, "correlationId": { "type": "string" } }, "required": ["kind", "correlationId"], "additionalProperties": false }] }, "operation": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "create-object" }, "typeKey": { "type": "string" }, "typeVersion": { "type": "number" }, "properties": { "type": "object", "additionalProperties": {} } }, "required": ["kind", "typeKey", "typeVersion", "properties"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "update-object" }, "objectId": { "type": "string" }, "typeVersion": { "type": "number" }, "changes": { "type": "object", "additionalProperties": { "type": "object", "properties": { "from": { "oneOf": [{ "type": "object", "properties": { "absent": { "const": true } }, "required": ["absent"], "additionalProperties": false }, { "type": "object", "properties": { "value": {} }, "required": ["value"], "additionalProperties": false }] }, "to": { "oneOf": [{ "type": "object", "properties": { "absent": { "const": true } }, "required": ["absent"], "additionalProperties": false }, { "type": "object", "properties": { "value": {} }, "required": ["value"], "additionalProperties": false }] } }, "required": ["from", "to"], "additionalProperties": false } } }, "required": ["kind", "objectId", "typeVersion", "changes"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "delete-object" }, "objectId": { "type": "string" } }, "required": ["kind", "objectId"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "create-edge" }, "typeKey": { "type": "string" }, "typeVersion": { "type": "number" }, "sourceObjectId": { "type": "string" }, "targetObjectId": { "type": "string" }, "properties": { "type": "object", "additionalProperties": {} } }, "required": ["kind", "typeKey", "typeVersion", "sourceObjectId", "targetObjectId", "properties"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "update-edge" }, "edgeId": { "type": "string" }, "typeVersion": { "type": "number" }, "changes": { "type": "object", "additionalProperties": { "type": "object", "properties": { "from": { "oneOf": [{ "type": "object", "properties": { "absent": { "const": true } }, "required": ["absent"], "additionalProperties": false }, { "type": "object", "properties": { "value": {} }, "required": ["value"], "additionalProperties": false }] }, "to": { "oneOf": [{ "type": "object", "properties": { "absent": { "const": true } }, "required": ["absent"], "additionalProperties": false }, { "type": "object", "properties": { "value": {} }, "required": ["value"], "additionalProperties": false }] } }, "required": ["from", "to"], "additionalProperties": false } } }, "required": ["kind", "edgeId", "typeVersion", "changes"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "delete-edge" }, "edgeId": { "type": "string" } }, "required": ["kind", "edgeId"], "additionalProperties": false }] } }, "required": ["correlation", "operation"], "additionalProperties": false },
@@ -640,16 +672,20 @@ var SCHEMAS = {
640
672
  reissuePlatformInvitation: { "type": "object", "properties": { "invitationId": { "type": "string" } }, "required": ["invitationId"], "additionalProperties": false },
641
673
  readWebOrigin: { "type": "object", "properties": {}, "required": [], "additionalProperties": false },
642
674
  readCallerCapabilities: { "type": "object", "properties": {}, "required": [], "additionalProperties": false },
643
- queryGraph: { "type": "object", "properties": { "kind": { "const": "graph" }, "start": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "objects" }, "objects": { "type": "array", "items": { "type": "object", "properties": { "objectId": { "type": "string" }, "projectId": { "type": "string" } }, "required": ["objectId", "projectId"], "additionalProperties": false } } }, "required": ["kind", "objects"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "set" }, "set": { "type": "object", "properties": { "kind": { "const": "objects" }, "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } } }, "required": ["edgeTypeKey", "direction", "targetTypeKey"], "additionalProperties": false } }, "sort": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "property", "direction"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "direction"], "additionalProperties": false }] } }, "required": ["kind", "typeKey"], "additionalProperties": false } }, "required": ["kind", "set"], "additionalProperties": false }] }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKeys": { "type": "array", "items": { "type": "string" } }, "direction": { "enum": ["outgoing", "incoming"] }, "depth": { "type": "number" }, "targetTypeKeys": { "type": "array", "items": { "type": "string" } } }, "required": ["depth"], "additionalProperties": false } }, "closeOver": { "type": "array", "items": { "type": "string" } }, "keep": { "enum": ["all", "last"] }, "objectLimit": { "type": "number" }, "hopLimit": { "type": "number" }, "continuation": { "oneOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["kind", "start", "steps"], "additionalProperties": false },
675
+ queryGraph: { "type": "object", "properties": { "kind": { "const": "graph" }, "start": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "objects" }, "objects": { "type": "array", "items": { "type": "object", "properties": { "objectId": { "type": "string" }, "projectId": { "type": "string" } }, "required": ["objectId", "projectId"], "additionalProperties": false } } }, "required": ["kind", "objects"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "set" }, "set": { "type": "object", "properties": { "kind": { "const": "objects" }, "typeKey": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "projects": { "type": "array", "items": { "type": "string" } }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "targetTypeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "or" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "=" }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": [">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "edge" }, "edgeTypeKey": { "type": "string" }, "direction": { "enum": ["outgoing", "incoming", "to-children", "to-parent"] }, "has": { "type": "boolean" } }, "required": ["kind", "edgeTypeKey", "direction", "has"], "additionalProperties": false }] } } }, "required": ["kind", "filters"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "type": "string" }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "type" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "op", "values"], "additionalProperties": false }] } } }, "required": ["edgeTypeKey", "direction", "targetTypeKey"], "additionalProperties": false } }, "sort": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "property", "direction"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "direction"], "additionalProperties": false }] } }, "required": ["kind", "typeKey"], "additionalProperties": false } }, "required": ["kind", "set"], "additionalProperties": false }] }, "steps": { "type": "array", "items": { "type": "object", "properties": { "edgeTypeKeys": { "type": "array", "items": { "type": "string" } }, "direction": { "enum": ["outgoing", "incoming"] }, "depth": { "type": "number" }, "targetTypeKeys": { "type": "array", "items": { "type": "string" } } }, "required": ["depth"], "additionalProperties": false } }, "closeOver": { "type": "array", "items": { "type": "string" } }, "keep": { "enum": ["all", "last"] }, "objectLimit": { "type": "number" }, "hopLimit": { "type": "number" }, "continuation": { "oneOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["kind", "start", "steps"], "additionalProperties": false },
644
676
  readStructure: { "type": "object", "properties": { "typeKey": { "type": "string" }, "structure": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "declared" } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "relationship" }, "edgeTypeKey": { "type": "string" } }, "required": ["kind", "edgeTypeKey"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "view" }, "viewKey": { "type": "string" } }, "required": ["kind", "viewKey"], "additionalProperties": false }] }, "anchor": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "forest" } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "subtree" }, "object": { "type": "object", "properties": { "objectId": { "type": "string" }, "projectId": { "type": "string" } }, "required": ["objectId", "projectId"], "additionalProperties": false } }, "required": ["kind", "object"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "ancestors" }, "object": { "type": "object", "properties": { "objectId": { "type": "string" }, "projectId": { "type": "string" } }, "required": ["objectId", "projectId"], "additionalProperties": false } }, "required": ["kind", "object"], "additionalProperties": false }] }, "maxDepth": { "type": "number" }, "occurrenceLimit": { "type": "number" } }, "required": ["typeKey", "structure", "anchor"], "additionalProperties": false },
645
677
  findPaths: { "type": "object", "properties": { "from": { "type": "object", "properties": { "objectId": { "type": "string" }, "projectId": { "type": "string" } }, "required": ["objectId", "projectId"], "additionalProperties": false }, "to": { "type": "object", "properties": { "objectId": { "type": "string" }, "projectId": { "type": "string" } }, "required": ["objectId", "projectId"], "additionalProperties": false }, "edgeTypeKeys": { "type": "array", "items": { "type": "string" } }, "direction": { "enum": ["outgoing", "incoming"] }, "maxLength": { "type": "number" }, "maxPaths": { "type": "number" } }, "required": ["from", "to", "maxLength"], "additionalProperties": false },
646
678
  listProposals: { "type": "object", "properties": { "state": { "enum": ["pending", "merged", "refused", "discarded", "all"] }, "cursor": { "type": "string" } }, "required": ["state"], "additionalProperties": false },
647
679
  readProposal: { "type": "object", "properties": { "proposalId": { "type": "string" } }, "required": ["proposalId"], "additionalProperties": false },
648
680
  refuseProposal: { "type": "object", "properties": { "proposalId": { "type": "string" }, "reason": { "type": "string" } }, "required": ["proposalId", "reason"], "additionalProperties": false },
649
681
  readBranchDiff: { "type": "object", "properties": { "proposalId": { "type": "string" }, "cursor": { "type": "string" } }, "required": ["proposalId"], "additionalProperties": false },
682
+ readLinkStatus: { "type": "object", "properties": { "objectId": { "type": "string" } }, "required": ["objectId"], "additionalProperties": false },
683
+ clearLinks: { "type": "object", "properties": { "correlation": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "mint" } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "sent" }, "correlationId": { "type": "string" } }, "required": ["kind", "correlationId"], "additionalProperties": false }] }, "ref": { "type": "string" }, "entries": { "type": "array", "items": { "type": "object", "properties": { "linkId": { "type": "string" }, "upstreamVersion": { "type": "string" } }, "required": ["linkId", "upstreamVersion"], "additionalProperties": false }, "minItems": 1, "maxItems": 100 } }, "required": ["correlation", "ref", "entries"], "additionalProperties": false },
684
+ readChangeImpact: { "type": "object", "properties": { "ref": { "type": "string" }, "base": { "type": "string" } }, "required": ["ref", "base"], "additionalProperties": false },
650
685
  diffBranches: { "type": "object", "properties": { "ref": { "type": "string" }, "base": { "type": "string" }, "cursor": { "type": "string" } }, "required": ["ref", "base"], "additionalProperties": false },
651
686
  readBranchHistory: { "type": "object", "properties": { "name": { "type": "string" }, "cursor": { "type": "string" } }, "required": ["name"], "additionalProperties": false },
652
687
  listAudit: { "type": "object", "properties": { "limit": { "type": "number" }, "cursor": { "type": "string" } }, "required": ["limit"], "additionalProperties": false },
688
+ listOrganisationAudit: { "type": "object", "properties": { "limit": { "type": "number" }, "verbPrefix": { "type": "string" }, "cursor": { "type": "string" } }, "required": ["limit", "verbPrefix"], "additionalProperties": false },
653
689
  readRefHead: { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"], "additionalProperties": false },
654
690
  inspectBranchOperation: { "type": "object", "properties": { "correlationId": { "type": "string" } }, "required": ["correlationId"], "additionalProperties": false },
655
691
  abandonBranch: { "type": "object", "properties": { "correlation": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "mint" } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "sent" }, "correlationId": { "type": "string" } }, "required": ["kind", "correlationId"], "additionalProperties": false }] }, "name": { "type": "string" }, "atHash": { "type": "string" } }, "required": ["correlation", "name", "atHash"], "additionalProperties": false },
@@ -683,7 +719,7 @@ var SCHEMAS = {
683
719
  readCurrentChangeSet: { "type": "object", "properties": {}, "required": [], "additionalProperties": false },
684
720
  readChangeSet: { "type": "object", "properties": { "changeSetId": { "type": "string" } }, "required": ["changeSetId"], "additionalProperties": false },
685
721
  readChangeSetState: { "type": "object", "properties": { "changeSetId": { "type": "string" } }, "required": ["changeSetId"], "additionalProperties": false },
686
- reviseChangeSet: { "type": "object", "properties": { "changeSetId": { "type": "string" }, "expectedRevision": { "type": "string" }, "changes": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "object", "properties": { "typeCategory": { "const": "object" }, "typeKey": { "type": "string" }, "version": { "type": "number" }, "displayName": { "type": "string" }, "description": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "schemaLanguageVersion": { "type": "string" }, "propertyDefinitions": { "type": "object", "additionalProperties": {} }, "requiredPropertyKeys": { "type": "array", "items": { "type": "string" } }, "presentationBindings": { "type": "object", "properties": { "views": { "type": "object", "properties": { "object": { "type": "object", "properties": { "root": { "type": "string" }, "elements": { "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string" }, "props": { "type": "object", "additionalProperties": {} }, "children": { "type": "array", "items": { "type": "string" } }, "repeat": { "type": "object", "properties": { "statePath": { "type": "string" }, "key": { "type": "string" } }, "required": ["statePath"], "additionalProperties": false }, "on": { "type": "object", "properties": { "press": { "oneOf": [{ "type": "object", "properties": { "action": { "const": "set-properties" }, "params": { "type": "object", "properties": { "properties": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "null" }, { "type": "object", "properties": { "$state": { "type": "string" } }, "required": ["$state"], "additionalProperties": false }] } } }, "required": ["properties"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }, { "type": "object", "properties": { "action": { "const": "run-verb" }, "params": { "type": "object", "properties": { "verb": { "type": "string" } }, "required": ["verb"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }] } }, "required": ["press"], "additionalProperties": false } }, "required": ["type", "props", "children"], "additionalProperties": false } } }, "required": ["root", "elements"], "additionalProperties": false }, "app": { "type": "object", "properties": { "root": { "type": "string" }, "elements": { "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string" }, "props": { "type": "object", "additionalProperties": {} }, "children": { "type": "array", "items": { "type": "string" } }, "repeat": { "type": "object", "properties": { "statePath": { "type": "string" }, "key": { "type": "string" } }, "required": ["statePath"], "additionalProperties": false }, "on": { "type": "object", "properties": { "press": { "oneOf": [{ "type": "object", "properties": { "action": { "const": "set-properties" }, "params": { "type": "object", "properties": { "properties": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "null" }, { "type": "object", "properties": { "$state": { "type": "string" } }, "required": ["$state"], "additionalProperties": false }] } } }, "required": ["properties"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }, { "type": "object", "properties": { "action": { "const": "run-verb" }, "params": { "type": "object", "properties": { "verb": { "type": "string" } }, "required": ["verb"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }] } }, "required": ["press"], "additionalProperties": false } }, "required": ["type", "props", "children"], "additionalProperties": false } } }, "required": ["root", "elements"], "additionalProperties": false }, "card": { "type": "object", "properties": { "root": { "type": "string" }, "elements": { "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string" }, "props": { "type": "object", "additionalProperties": {} }, "children": { "type": "array", "items": { "type": "string" } }, "repeat": { "type": "object", "properties": { "statePath": { "type": "string" }, "key": { "type": "string" } }, "required": ["statePath"], "additionalProperties": false }, "on": { "type": "object", "properties": { "press": { "oneOf": [{ "type": "object", "properties": { "action": { "const": "set-properties" }, "params": { "type": "object", "properties": { "properties": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "null" }, { "type": "object", "properties": { "$state": { "type": "string" } }, "required": ["$state"], "additionalProperties": false }] } } }, "required": ["properties"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }, { "type": "object", "properties": { "action": { "const": "run-verb" }, "params": { "type": "object", "properties": { "verb": { "type": "string" } }, "required": ["verb"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }] } }, "required": ["press"], "additionalProperties": false } }, "required": ["type", "props", "children"], "additionalProperties": false } } }, "required": ["root", "elements"], "additionalProperties": false } }, "required": [], "additionalProperties": false }, "title": { "type": "string" }, "summary": { "type": "string" }, "icon": { "type": "string" }, "typeIcon": { "type": "string" }, "propertyLabels": { "type": "object", "additionalProperties": { "type": "string" } }, "propertyOrder": { "type": "array", "items": { "type": "string" } }, "rail": { "type": "object", "properties": { "group": { "type": "string" }, "order": { "type": "number" } }, "required": ["group", "order"], "additionalProperties": false } }, "required": [], "additionalProperties": false }, "structureDeclaration": { "type": "object", "properties": { "relationships": { "type": "array", "items": { "type": "string" } }, "views": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "label": { "type": "string" }, "steps": { "type": "array", "items": { "type": "string" } }, "decoration": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "label": { "type": "string" } }, "required": ["key", "label"], "additionalProperties": false } } }, "required": ["key", "label", "steps"], "additionalProperties": false } } }, "required": [], "additionalProperties": false }, "subscriptionRoles": { "type": "object", "properties": { "owner": { "type": "object", "properties": { "max": { "type": "number" } }, "required": [], "additionalProperties": false }, "approver": { "type": "object", "properties": { "max": { "type": "number" } }, "required": [], "additionalProperties": false }, "watcher": { "type": "object", "properties": { "max": { "type": "number" } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } }, "required": ["typeCategory", "typeKey", "version", "displayName", "description", "schemaLanguageVersion", "propertyDefinitions", "requiredPropertyKeys"], "additionalProperties": false }, { "type": "object", "properties": { "typeCategory": { "const": "edge" }, "typeKey": { "type": "string" }, "version": { "type": "number" }, "displayName": { "type": "string" }, "sourceObjectType": { "type": "string" }, "targetObjectType": { "type": "string" }, "kind": { "enum": ["structural", "traceability"] }, "subjectEnd": { "enum": ["source", "target"] }, "parentEnd": { "oneOf": [{ "const": "source" }, { "const": "target" }, { "type": "null" }] }, "sourceLabel": { "type": "string" }, "targetLabel": { "type": "string" }, "schemaLanguageVersion": { "type": "string" }, "propertyDefinitions": { "type": "object", "additionalProperties": {} }, "requiredPropertyKeys": { "type": "array", "items": { "type": "string" } }, "readRule": { "enum": ["both-endpoints", "either-endpoint"] }, "writeRule": { "enum": ["both-endpoints", "either-endpoint"] } }, "required": ["typeCategory", "typeKey", "version", "displayName", "sourceObjectType", "targetObjectType", "kind", "subjectEnd", "parentEnd", "sourceLabel", "targetLabel", "schemaLanguageVersion", "propertyDefinitions", "requiredPropertyKeys", "readRule", "writeRule"], "additionalProperties": false }, { "type": "object", "properties": { "typeCategory": { "const": "verb" }, "typeKey": { "type": "string" }, "version": { "type": "number" }, "displayName": { "type": "string" }, "description": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "allowedSubjectTypes": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "none" } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "types" }, "types": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "types"], "additionalProperties": false }] }, "inputSchema": {}, "resultSchema": {}, "handlerKey": { "type": "string" }, "template": { "type": "object", "properties": { "query": { "type": "object", "properties": { "typeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": ["=", ">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }] }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } }, "sort": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "property", "direction"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "direction"], "additionalProperties": false }] }, "limit": { "type": "number" } }, "required": ["typeKey", "limit"], "additionalProperties": false }, "operations": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "create-object" }, "typeKey": { "type": "string" }, "properties": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] } } }, "required": ["kind", "typeKey", "properties"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "update-object" }, "typeKey": { "type": "string" }, "target": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] }, "changes": { "type": "object", "additionalProperties": { "type": "object", "properties": { "from": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "absent" } }, "required": ["slot"], "additionalProperties": false }] }, "to": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "absent" } }, "required": ["slot"], "additionalProperties": false }] } }, "required": ["from", "to"], "additionalProperties": false } } }, "required": ["kind", "typeKey", "target", "changes"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "delete-object" }, "typeKey": { "type": "string" }, "target": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] } }, "required": ["kind", "typeKey", "target"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "create-edge" }, "typeKey": { "type": "string" }, "source": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] }, "target": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] }, "properties": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] } } }, "required": ["kind", "typeKey", "source", "target", "properties"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "delete-edge" }, "typeKey": { "type": "string" }, "target": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] } }, "required": ["kind", "typeKey", "target"], "additionalProperties": false }] } } }, "required": ["operations"], "additionalProperties": false }, "schemaLanguageVersion": { "type": "string" } }, "required": ["typeCategory", "typeKey", "version", "displayName", "description", "allowedSubjectTypes", "inputSchema", "resultSchema", "schemaLanguageVersion"], "additionalProperties": false }] } }, "railGroups": { "type": "array", "items": { "type": "string" } } }, "required": ["changeSetId", "expectedRevision", "changes"], "additionalProperties": false },
722
+ reviseChangeSet: { "type": "object", "properties": { "changeSetId": { "type": "string" }, "expectedRevision": { "type": "string" }, "changes": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "object", "properties": { "typeCategory": { "const": "object" }, "typeKey": { "type": "string" }, "version": { "type": "number" }, "displayName": { "type": "string" }, "description": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "schemaLanguageVersion": { "type": "string" }, "propertyDefinitions": { "type": "object", "additionalProperties": {} }, "requiredPropertyKeys": { "type": "array", "items": { "type": "string" } }, "presentationBindings": { "type": "object", "properties": { "views": { "type": "object", "properties": { "object": { "type": "object", "properties": { "root": { "type": "string" }, "elements": { "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string" }, "props": { "type": "object", "additionalProperties": {} }, "children": { "type": "array", "items": { "type": "string" } }, "repeat": { "type": "object", "properties": { "statePath": { "type": "string" }, "key": { "type": "string" } }, "required": ["statePath"], "additionalProperties": false }, "on": { "type": "object", "properties": { "press": { "oneOf": [{ "type": "object", "properties": { "action": { "const": "set-properties" }, "params": { "type": "object", "properties": { "properties": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "null" }, { "type": "object", "properties": { "$state": { "type": "string" } }, "required": ["$state"], "additionalProperties": false }] } } }, "required": ["properties"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }, { "type": "object", "properties": { "action": { "const": "run-verb" }, "params": { "type": "object", "properties": { "verb": { "type": "string" } }, "required": ["verb"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }] } }, "required": ["press"], "additionalProperties": false } }, "required": ["type", "props", "children"], "additionalProperties": false } } }, "required": ["root", "elements"], "additionalProperties": false }, "app": { "type": "object", "properties": { "root": { "type": "string" }, "elements": { "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string" }, "props": { "type": "object", "additionalProperties": {} }, "children": { "type": "array", "items": { "type": "string" } }, "repeat": { "type": "object", "properties": { "statePath": { "type": "string" }, "key": { "type": "string" } }, "required": ["statePath"], "additionalProperties": false }, "on": { "type": "object", "properties": { "press": { "oneOf": [{ "type": "object", "properties": { "action": { "const": "set-properties" }, "params": { "type": "object", "properties": { "properties": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "null" }, { "type": "object", "properties": { "$state": { "type": "string" } }, "required": ["$state"], "additionalProperties": false }] } } }, "required": ["properties"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }, { "type": "object", "properties": { "action": { "const": "run-verb" }, "params": { "type": "object", "properties": { "verb": { "type": "string" } }, "required": ["verb"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }] } }, "required": ["press"], "additionalProperties": false } }, "required": ["type", "props", "children"], "additionalProperties": false } } }, "required": ["root", "elements"], "additionalProperties": false }, "card": { "type": "object", "properties": { "root": { "type": "string" }, "elements": { "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string" }, "props": { "type": "object", "additionalProperties": {} }, "children": { "type": "array", "items": { "type": "string" } }, "repeat": { "type": "object", "properties": { "statePath": { "type": "string" }, "key": { "type": "string" } }, "required": ["statePath"], "additionalProperties": false }, "on": { "type": "object", "properties": { "press": { "oneOf": [{ "type": "object", "properties": { "action": { "const": "set-properties" }, "params": { "type": "object", "properties": { "properties": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "null" }, { "type": "object", "properties": { "$state": { "type": "string" } }, "required": ["$state"], "additionalProperties": false }] } } }, "required": ["properties"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }, { "type": "object", "properties": { "action": { "const": "run-verb" }, "params": { "type": "object", "properties": { "verb": { "type": "string" } }, "required": ["verb"], "additionalProperties": false } }, "required": ["action", "params"], "additionalProperties": false }] } }, "required": ["press"], "additionalProperties": false } }, "required": ["type", "props", "children"], "additionalProperties": false } } }, "required": ["root", "elements"], "additionalProperties": false } }, "required": [], "additionalProperties": false }, "title": { "type": "string" }, "summary": { "type": "string" }, "icon": { "type": "string" }, "typeIcon": { "type": "string" }, "propertyLabels": { "type": "object", "additionalProperties": { "type": "string" } }, "propertyOrder": { "type": "array", "items": { "type": "string" } }, "rail": { "type": "object", "properties": { "group": { "type": "string" }, "order": { "type": "number" } }, "required": ["group", "order"], "additionalProperties": false } }, "required": [], "additionalProperties": false }, "structureDeclaration": { "type": "object", "properties": { "relationships": { "type": "array", "items": { "type": "string" } }, "views": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "label": { "type": "string" }, "steps": { "type": "array", "items": { "type": "string" } }, "decoration": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "label": { "type": "string" } }, "required": ["key", "label"], "additionalProperties": false } } }, "required": ["key", "label", "steps"], "additionalProperties": false } } }, "required": [], "additionalProperties": false }, "subscriptionRoles": { "type": "object", "properties": { "owner": { "type": "object", "properties": { "max": { "type": "number" } }, "required": [], "additionalProperties": false }, "approver": { "type": "object", "properties": { "max": { "type": "number" } }, "required": [], "additionalProperties": false }, "watcher": { "type": "object", "properties": { "max": { "type": "number" } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } }, "required": ["typeCategory", "typeKey", "version", "displayName", "description", "schemaLanguageVersion", "propertyDefinitions", "requiredPropertyKeys"], "additionalProperties": false }, { "type": "object", "properties": { "typeCategory": { "const": "edge" }, "typeKey": { "type": "string" }, "version": { "type": "number" }, "displayName": { "type": "string" }, "sourceObjectType": { "type": "string" }, "targetObjectType": { "type": "string" }, "kind": { "enum": ["structural", "traceability"] }, "subjectEnd": { "enum": ["source", "target"] }, "parentEnd": { "oneOf": [{ "const": "source" }, { "const": "target" }, { "type": "null" }] }, "sourceLabel": { "type": "string" }, "targetLabel": { "type": "string" }, "schemaLanguageVersion": { "type": "string" }, "propertyDefinitions": { "type": "object", "additionalProperties": {} }, "requiredPropertyKeys": { "type": "array", "items": { "type": "string" } }, "readRule": { "enum": ["both-endpoints", "either-endpoint"] }, "writeRule": { "enum": ["both-endpoints", "either-endpoint"] }, "review": { "type": "object", "properties": { "upstream": { "enum": ["source", "target"] }, "significant": { "type": "array", "items": { "type": "string" } }, "newLinks": { "enum": ["cleared", "unreviewed"] }, "propagation": { "enum": ["direct", "chain"] }, "chainDepth": { "type": "number" } }, "required": ["upstream"], "additionalProperties": false } }, "required": ["typeCategory", "typeKey", "version", "displayName", "sourceObjectType", "targetObjectType", "kind", "subjectEnd", "parentEnd", "sourceLabel", "targetLabel", "schemaLanguageVersion", "propertyDefinitions", "requiredPropertyKeys", "readRule", "writeRule"], "additionalProperties": false }, { "type": "object", "properties": { "typeCategory": { "const": "verb" }, "typeKey": { "type": "string" }, "version": { "type": "number" }, "displayName": { "type": "string" }, "description": { "oneOf": [{ "type": "string" }, { "type": "null" }] }, "allowedSubjectTypes": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "none" } }, "required": ["kind"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "types" }, "types": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "types"], "additionalProperties": false }] }, "inputSchema": {}, "resultSchema": {}, "handlerKey": { "type": "string" }, "template": { "type": "object", "properties": { "query": { "type": "object", "properties": { "typeKey": { "type": "string" }, "filters": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "enum": ["=", ">", ">=", "<", "<="] }, "value": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }] } }, "required": ["kind", "property", "op", "value"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "op": { "const": "in" }, "values": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }] } } }, "required": ["kind", "property", "op", "values"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "text" }, "term": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }] }, "properties": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "term"], "additionalProperties": false }] } }, "sort": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "property" }, "property": { "type": "string" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "property", "direction"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "identity" }, "direction": { "enum": ["asc", "desc"] } }, "required": ["kind", "direction"], "additionalProperties": false }] }, "limit": { "type": "number" } }, "required": ["typeKey", "limit"], "additionalProperties": false }, "operations": { "type": "array", "items": { "oneOf": [{ "type": "object", "properties": { "kind": { "const": "create-object" }, "typeKey": { "type": "string" }, "properties": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] } } }, "required": ["kind", "typeKey", "properties"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "update-object" }, "typeKey": { "type": "string" }, "target": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] }, "changes": { "type": "object", "additionalProperties": { "type": "object", "properties": { "from": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "absent" } }, "required": ["slot"], "additionalProperties": false }] }, "to": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "absent" } }, "required": ["slot"], "additionalProperties": false }] } }, "required": ["from", "to"], "additionalProperties": false } } }, "required": ["kind", "typeKey", "target", "changes"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "delete-object" }, "typeKey": { "type": "string" }, "target": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] } }, "required": ["kind", "typeKey", "target"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "create-edge" }, "typeKey": { "type": "string" }, "source": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] }, "target": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] }, "properties": { "type": "object", "additionalProperties": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "literal" }, "value": {} }, "required": ["slot", "value"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" }, "property": { "type": "string" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] } } }, "required": ["kind", "typeKey", "source", "target", "properties"], "additionalProperties": false }, { "type": "object", "properties": { "kind": { "const": "delete-edge" }, "typeKey": { "type": "string" }, "target": { "oneOf": [{ "type": "object", "properties": { "slot": { "const": "input" }, "key": { "type": "string" } }, "required": ["slot", "key"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "subject" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "item" } }, "required": ["slot"], "additionalProperties": false }, { "type": "object", "properties": { "slot": { "const": "step" }, "index": { "type": "number" } }, "required": ["slot", "index"], "additionalProperties": false }] } }, "required": ["kind", "typeKey", "target"], "additionalProperties": false }] } } }, "required": ["operations"], "additionalProperties": false }, "schemaLanguageVersion": { "type": "string" } }, "required": ["typeCategory", "typeKey", "version", "displayName", "description", "allowedSubjectTypes", "inputSchema", "resultSchema", "schemaLanguageVersion"], "additionalProperties": false }] } }, "railGroups": { "type": "array", "items": { "type": "string" } } }, "required": ["changeSetId", "expectedRevision", "changes"], "additionalProperties": false },
687
723
  validateChangeSet: { "type": "object", "properties": { "changeSetId": { "type": "string" }, "revision": { "type": "string" } }, "required": ["changeSetId", "revision"], "additionalProperties": false },
688
724
  discardChangeSet: { "type": "object", "properties": { "changeSetId": { "type": "string" } }, "required": ["changeSetId"], "additionalProperties": false },
689
725
  acceptChangeSet: { "type": "object", "properties": { "changeSetId": { "type": "string" }, "revision": { "type": "string" }, "correlationId": { "type": "string" } }, "required": ["changeSetId", "revision"], "additionalProperties": false },
@@ -710,7 +746,21 @@ var SCHEMAS = {
710
746
  revokeConnection: { "type": "object", "properties": {}, "required": [], "additionalProperties": false },
711
747
  startImportRun: { "type": "object", "properties": {}, "required": [], "additionalProperties": false },
712
748
  listImportRuns: { "type": "object", "properties": { "runId": { "type": "string" } }, "required": [], "additionalProperties": false },
713
- closeImportRun: { "oneOf": [{ "type": "object", "properties": { "runId": { "type": "string" }, "outcome": { "const": "succeeded" }, "commits": { "type": "array", "items": { "type": "string" } }, "complete": { "type": "boolean" }, "sourceCheckpoint": { "oneOf": [{ "type": "number" }, { "type": "null" }] }, "counts": { "type": "object", "properties": { "created": { "type": "number" }, "updated": { "type": "number" }, "unchanged": { "type": "number" }, "withdrawn": { "type": "number" }, "carried": { "type": "number" }, "overwritten": { "type": "number" } }, "required": ["created", "updated", "unchanged", "withdrawn", "carried", "overwritten"], "additionalProperties": false } }, "required": ["runId", "outcome", "commits", "complete", "sourceCheckpoint", "counts"], "additionalProperties": false }, { "type": "object", "properties": { "runId": { "type": "string" }, "outcome": { "const": "failed" }, "failure": { "enum": ["auth", "timeout", "size", "shape", "upstream-error", "unreachable", "allowance-spent", "duplicate-identifier", "dangling-reference", "undeclared-type", "credential-unreadable", "connection-revoked", "abandoned", "apply-refused", "apply-conflict", "apply-unknown", "duplicate-upstream", "types-not-approved", "internal", "mirror-row-unreadable"] } }, "required": ["runId", "outcome", "failure"], "additionalProperties": false }] }
749
+ closeImportRun: { "oneOf": [{ "type": "object", "properties": { "runId": { "type": "string" }, "outcome": { "const": "succeeded" }, "commits": { "type": "array", "items": { "type": "string" } }, "complete": { "type": "boolean" }, "sourceCheckpoint": { "oneOf": [{ "type": "number" }, { "type": "null" }] }, "counts": { "type": "object", "properties": { "created": { "type": "number" }, "updated": { "type": "number" }, "unchanged": { "type": "number" }, "withdrawn": { "type": "number" }, "carried": { "type": "number" }, "overwritten": { "type": "number" } }, "required": ["created", "updated", "unchanged", "withdrawn", "carried", "overwritten"], "additionalProperties": false } }, "required": ["runId", "outcome", "commits", "complete", "sourceCheckpoint", "counts"], "additionalProperties": false }, { "type": "object", "properties": { "runId": { "type": "string" }, "outcome": { "const": "failed" }, "failure": { "enum": ["auth", "timeout", "size", "shape", "upstream-error", "unreachable", "allowance-spent", "duplicate-identifier", "dangling-reference", "undeclared-type", "credential-unreadable", "connection-revoked", "abandoned", "apply-refused", "apply-conflict", "apply-unknown", "duplicate-upstream", "types-not-approved", "internal", "mirror-row-unreadable"] } }, "required": ["runId", "outcome", "failure"], "additionalProperties": false }] },
750
+ createHostedApp: { "type": "object", "properties": { "key": { "type": "string" } }, "required": ["key"], "additionalProperties": false },
751
+ readHostedBundle: { "type": "object", "properties": { "launchId": { "type": "string" } }, "required": ["launchId"], "additionalProperties": false },
752
+ listHostedApps: { "type": "object", "properties": {}, "required": [], "additionalProperties": false },
753
+ listHostedVersions: { "type": "object", "properties": { "appId": { "type": "string" } }, "required": ["appId"], "additionalProperties": false },
754
+ revokeHostedApp: { "type": "object", "properties": { "appId": { "type": "string" } }, "required": ["appId"], "additionalProperties": false },
755
+ revokeHostedVersion: { "type": "object", "properties": { "versionId": { "type": "string" } }, "required": ["versionId"], "additionalProperties": false },
756
+ openHostedApp: { "type": "object", "properties": { "appKey": { "type": "string" } }, "required": ["appKey"], "additionalProperties": false },
757
+ endHostedLaunch: { "type": "object", "properties": { "launchId": { "type": "string" } }, "required": ["launchId"], "additionalProperties": false },
758
+ mintHostedAppToken: { "type": "object", "properties": { "launchId": { "type": "string" } }, "required": ["launchId"], "additionalProperties": false },
759
+ setHostedOneWallSwitch: { "type": "object", "properties": { "allowed": { "type": "boolean" } }, "required": ["allowed"], "additionalProperties": false },
760
+ readHostedOneWallSwitch: { "type": "object", "properties": {}, "required": [], "additionalProperties": false },
761
+ grantHostedOneWall: { "type": "object", "properties": { "appId": { "type": "string" } }, "required": ["appId"], "additionalProperties": false },
762
+ withdrawHostedOneWall: { "type": "object", "properties": { "appId": { "type": "string" } }, "required": ["appId"], "additionalProperties": false },
763
+ listHostedOneWallGrants: { "type": "object", "properties": {}, "required": [], "additionalProperties": false }
714
764
  };
715
765
  var ROUTE_INPUT_SCHEMAS = deepFreeze(SCHEMAS);
716
766
  var SELECTORS = {
@@ -801,9 +851,13 @@ var EXAMPLES = {
801
851
  readProposal: { "proposalId": "<proposalId>" },
802
852
  refuseProposal: { "proposalId": "<proposalId>", "reason": "<reason>" },
803
853
  readBranchDiff: { "proposalId": "<proposalId>" },
854
+ readLinkStatus: { "objectId": "<objectId>" },
855
+ clearLinks: { "correlation": { "kind": "mint" }, "ref": "main", "entries": [{ "linkId": "<linkId>", "upstreamVersion": "<upstreamVersion>" }] },
856
+ readChangeImpact: { "ref": "project/branch", "base": "main" },
804
857
  diffBranches: { "ref": "<ref>", "base": "<base>" },
805
858
  readBranchHistory: { "name": "<name>" },
806
859
  listAudit: { "limit": 1 },
860
+ listOrganisationAudit: { "limit": 1, "verbPrefix": "<verbPrefix>" },
807
861
  readRefHead: { "name": "<name>" },
808
862
  inspectBranchOperation: { "correlationId": "<correlationId>" },
809
863
  abandonBranch: { "correlation": { "kind": "mint" }, "name": "<name>", "atHash": "<atHash>" },
@@ -864,17 +918,31 @@ var EXAMPLES = {
864
918
  revokeConnection: {},
865
919
  startImportRun: {},
866
920
  listImportRuns: {},
867
- closeImportRun: { "runId": "<runId>", "outcome": "succeeded", "commits": [], "complete": false, "sourceCheckpoint": null, "counts": { "created": 1, "updated": 1, "unchanged": 1, "withdrawn": 1, "carried": 1, "overwritten": 1 } }
921
+ closeImportRun: { "runId": "<runId>", "outcome": "succeeded", "commits": [], "complete": false, "sourceCheckpoint": null, "counts": { "created": 1, "updated": 1, "unchanged": 1, "withdrawn": 1, "carried": 1, "overwritten": 1 } },
922
+ createHostedApp: { "key": "<key>" },
923
+ readHostedBundle: { "launchId": "<launchId>" },
924
+ listHostedApps: {},
925
+ listHostedVersions: { "appId": "<appId>" },
926
+ revokeHostedApp: { "appId": "<appId>" },
927
+ revokeHostedVersion: { "versionId": "<versionId>" },
928
+ openHostedApp: { "appKey": "<appKey>" },
929
+ endHostedLaunch: { "launchId": "<launchId>" },
930
+ mintHostedAppToken: { "launchId": "<launchId>" },
931
+ setHostedOneWallSwitch: { "allowed": false },
932
+ readHostedOneWallSwitch: {},
933
+ grantHostedOneWall: { "appId": "<appId>" },
934
+ withdrawHostedOneWall: { "appId": "<appId>" },
935
+ listHostedOneWallGrants: {}
868
936
  };
869
937
  var ROUTE_INPUT_EXAMPLES = deepFreeze(EXAMPLES);
870
938
 
871
939
  // packages/api-contract/dist/routes.js
872
- var PROTOCOL_VERSION = 33;
940
+ var PROTOCOL_VERSION = 36;
873
941
  var VERSION_HEADER = "oe2-protocol-version";
874
942
  var TOKEN_HEADER = "authorization";
875
943
  var IDEMPOTENCY_HEADER = "oe2-idempotency-key";
876
944
  var STREAMED_ROUTE_NAMES = Object.freeze(["sendMessageStreamed", "answerPlanStreamed"]);
877
- var BINARY_REQUEST_ROUTE_NAMES = Object.freeze(["stageAttachment"]);
945
+ var BINARY_REQUEST_ROUTE_NAMES = Object.freeze(["stageAttachment", "publishHostedVersion"]);
878
946
  var BINARY_RESPONSE_ROUTE_NAMES = Object.freeze(["readAttachment"]);
879
947
  function isBinaryRequestRoute(name) {
880
948
  return BINARY_REQUEST_ROUTE_NAMES.some((binary) => binary === name);
@@ -900,11 +968,11 @@ function route(entry2) {
900
968
  return Object.freeze({ ...entry2, doc: documented });
901
969
  }
902
970
  var ROUTES = Object.freeze({
903
- createObjectSet: route({ name: "createObjectSet", method: "POST", path: "/object-sets", group: "write", selector: "object", subject: "project", idempotent: true, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "objects.createObjectSet" }),
904
- listObjectSets: route({ name: "listObjectSets", method: "POST", path: "/object-sets/list", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "objects.listObjectSets" }),
905
- readObjectSet: route({ name: "readObjectSet", method: "POST", path: "/object-sets/read", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "objects.readObjectSet" }),
906
- updateObjectSet: route({ name: "updateObjectSet", method: "POST", path: "/object-sets/update", group: "write", selector: "object", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "objects.updateObjectSet" }),
907
- deleteObjectSet: route({ name: "deleteObjectSet", method: "POST", path: "/object-sets/delete", group: "write", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "objects.deleteObjectSet" }),
971
+ createObjectSet: route({ name: "createObjectSet", method: "POST", path: "/object-sets", group: "write", selector: "object", subject: "project", idempotent: true, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.createObjectSet" }),
972
+ listObjectSets: route({ name: "listObjectSets", method: "POST", path: "/object-sets/list", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.listObjectSets" }),
973
+ readObjectSet: route({ name: "readObjectSet", method: "POST", path: "/object-sets/read", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.readObjectSet" }),
974
+ updateObjectSet: route({ name: "updateObjectSet", method: "POST", path: "/object-sets/update", group: "write", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.updateObjectSet" }),
975
+ deleteObjectSet: route({ name: "deleteObjectSet", method: "POST", path: "/object-sets/delete", group: "write", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.deleteObjectSet" }),
908
976
  health: route({ name: "health", method: "GET", path: "/health", group: "platform", selector: "none", subject: "platform", idempotent: false, admission: NO_ACCESS_TOKEN, versioned: false, module: "sdk-core", capability: "core.health" }),
909
977
  signInStart: route({ name: "signInStart", method: "GET", path: "/auth/sign-in", group: "platform", selector: "none", subject: "platform", idempotent: false, admission: NO_ACCESS_TOKEN, versioned: false, module: "sdk-core", capability: "core.signInStart" }),
910
978
  signInCallback: route({ name: "signInCallback", method: "GET", path: "/auth/callback", group: "platform", selector: "none", subject: "platform", idempotent: false, admission: NO_ACCESS_TOKEN, versioned: false, module: "sdk-core", capability: "core.signInCallback" }),
@@ -949,8 +1017,8 @@ var ROUTES = Object.freeze({
949
1017
  module: "objects-sdk",
950
1018
  capability: "objects.read"
951
1019
  }),
952
- readObject: route({ name: "readObject", method: "POST", path: "/objects/read", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "objects.read" }),
953
- queryObjects: route({ name: "queryObjects", method: "POST", path: "/objects/query", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client"), versioned: true, module: "objects-sdk", capability: "objects.query" }),
1020
+ readObject: route({ name: "readObject", method: "POST", path: "/objects/read", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.read" }),
1021
+ queryObjects: route({ name: "queryObjects", method: "POST", path: "/objects/query", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.query" }),
954
1022
  queryRows: route({
955
1023
  name: "queryRows",
956
1024
  method: "POST",
@@ -959,27 +1027,27 @@ var ROUTES = Object.freeze({
959
1027
  selector: "object",
960
1028
  subject: "project",
961
1029
  idempotent: false,
962
- admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client"),
1030
+ admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client", "hosted-app"),
963
1031
  versioned: true,
964
1032
  module: "objects-sdk",
965
1033
  capability: "objects.query"
966
1034
  }),
967
- aggregateObjects: route({ name: "aggregateObjects", method: "POST", path: "/objects/aggregate", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "client"), versioned: true, module: "objects-sdk", capability: "objects.aggregate" }),
968
- discoverVerbs: route({ name: "discoverVerbs", method: "POST", path: "/objects/verbs", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "objects.read" }),
969
- readHistory: route({ name: "readHistory", method: "POST", path: "/objects/history", group: "history", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "objects.history" }),
970
- mutate: route({ name: "mutate", method: "POST", path: "/mutations", group: "write", selector: "object", subject: "project", idempotent: true, admission: admitting("user", "service", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "objects.write" }),
971
- mutateBatch: route({ name: "mutateBatch", method: "POST", path: "/mutations/batch", group: "write", selector: "object", subject: "project", idempotent: true, admission: admitting("user", "service", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "objects.write" }),
972
- previewDelete: route({ name: "previewDelete", method: "POST", path: "/objects/delete-preview", group: "write", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "objects.write" }),
973
- recover: route({ name: "recover", method: "POST", path: "/recoveries", group: "write", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "client"), versioned: true, module: "objects-sdk", capability: "objects.recovery" }),
974
- executeVerb: route({ name: "executeVerb", method: "POST", path: "/verb-executions", group: "verb", selector: "object", subject: "project", idempotent: true, admission: admitting("user", "service", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "objects.verb" }),
1035
+ aggregateObjects: route({ name: "aggregateObjects", method: "POST", path: "/objects/aggregate", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.aggregate" }),
1036
+ discoverVerbs: route({ name: "discoverVerbs", method: "POST", path: "/objects/verbs", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.read" }),
1037
+ readHistory: route({ name: "readHistory", method: "POST", path: "/objects/history", group: "history", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.history" }),
1038
+ mutate: route({ name: "mutate", method: "POST", path: "/mutations", group: "write", selector: "object", subject: "project", idempotent: true, admission: admitting("user", "service", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.write" }),
1039
+ mutateBatch: route({ name: "mutateBatch", method: "POST", path: "/mutations/batch", group: "write", selector: "object", subject: "project", idempotent: true, admission: admitting("user", "service", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.write" }),
1040
+ previewDelete: route({ name: "previewDelete", method: "POST", path: "/objects/delete-preview", group: "write", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.write" }),
1041
+ recover: route({ name: "recover", method: "POST", path: "/recoveries", group: "write", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.recovery" }),
1042
+ executeVerb: route({ name: "executeVerb", method: "POST", path: "/verb-executions", group: "verb", selector: "object", subject: "project", idempotent: true, admission: admitting("user", "service", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.verb" }),
975
1043
  createBranch: route({ name: "createBranch", method: "POST", path: "/branches", group: "branch", selector: "project", subject: "project", idempotent: true, admission: admitting("user", "service", "run-explore", "run-apply", "client"), versioned: true, module: "branches-sdk", capability: "branches.create" }),
976
1044
  merge: route({ name: "merge", method: "POST", path: "/merges", group: "branch", selector: "project", subject: "project", idempotent: true, admission: admitting("user", "service", "client"), versioned: true, module: "branches-sdk", capability: "branches.merge" }),
977
- readMergeConflicts: route({ name: "readMergeConflicts", method: "POST", path: "/branches/conflicts", group: "branch", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "client"), versioned: true, module: "branches-sdk", capability: "branches.conflicts" }),
1045
+ readMergeConflicts: route({ name: "readMergeConflicts", method: "POST", path: "/branches/conflicts", group: "branch", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "client", "hosted-app"), versioned: true, module: "branches-sdk", capability: "branches.conflicts" }),
978
1046
  disposeRef: route({ name: "disposeRef", method: "POST", path: "/branch-disposals", group: "branch", selector: "project", subject: "project", idempotent: true, admission: admitting("user", "service", "client"), versioned: true, module: "branches-sdk", capability: "branches.disposal" }),
979
- listProjects: route({ name: "listProjects", method: "POST", path: "/projects", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "service", "client"), versioned: true, module: "objects-sdk", capability: "objects.projects" }),
980
- listRefs: route({ name: "listRefs", method: "POST", path: "/projects/refs", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "branches.list" }),
981
- readCatalogue: route({ name: "readCatalogue", method: "POST", path: "/projects/catalogue", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client"), versioned: true, module: "objects-sdk", capability: "objects.catalogue" }),
982
- readPendingProposal: route({ name: "readPendingProposal", method: "POST", path: "/proposals/pending", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "client"), versioned: true, module: "branches-sdk", capability: "branches.pendingProposal" }),
1047
+ listProjects: route({ name: "listProjects", method: "POST", path: "/projects", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "service", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.projects" }),
1048
+ listRefs: route({ name: "listRefs", method: "POST", path: "/projects/refs", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "branches.list" }),
1049
+ readCatalogue: route({ name: "readCatalogue", method: "POST", path: "/projects/catalogue", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.catalogue" }),
1050
+ readPendingProposal: route({ name: "readPendingProposal", method: "POST", path: "/proposals/pending", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "client", "hosted-app"), versioned: true, module: "branches-sdk", capability: "branches.pendingProposal" }),
983
1051
  submitProposal: route({ name: "submitProposal", method: "POST", path: "/proposals", group: "branch", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "client"), versioned: true, module: "branches-sdk", capability: "branches.proposalSubmit" }),
984
1052
  createServiceIdentity: route({ name: "createServiceIdentity", method: "POST", path: "/service-identities", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.serviceIdentity" }),
985
1053
  revokeServiceIdentity: route({ name: "revokeServiceIdentity", method: "POST", path: "/service-identities/revocation", group: "administration", selector: "none", subject: "service-identity", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.serviceIdentityRevocation" }),
@@ -991,10 +1059,10 @@ var ROUTES = Object.freeze({
991
1059
  setModelId: route({ name: "setModelId", method: "POST", path: "/model-configuration/model", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.modelId" }),
992
1060
  readModelConfigurationStatus: route({ name: "readModelConfigurationStatus", method: "POST", path: "/model-configuration/status", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.modelConfigurationStatus" }),
993
1061
  readAccount: route({ name: "readAccount", method: "POST", path: "/account", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.account" }),
994
- readDisplayNames: route({ name: "readDisplayNames", method: "POST", path: "/principals/names", group: "read", selector: "none", subject: "display-names", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.displayNames" }),
995
- listMembers: route({ name: "listMembers", method: "POST", path: "/projects/members", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.members" }),
1062
+ readDisplayNames: route({ name: "readDisplayNames", method: "POST", path: "/principals/names", group: "read", selector: "none", subject: "display-names", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "admin-sdk", capability: "admin.displayNames" }),
1063
+ listMembers: route({ name: "listMembers", method: "POST", path: "/projects/members", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "admin-sdk", capability: "admin.members" }),
996
1064
  changeMembershipRole: route({ name: "changeMembershipRole", method: "POST", path: "/membership-roles", group: "administration", selector: "none", subject: "membership-scope", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.membershipRole" }),
997
- listOrganisationMembers: route({ name: "listOrganisationMembers", method: "POST", path: "/organisation/members", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.organisationMembers" }),
1065
+ listOrganisationMembers: route({ name: "listOrganisationMembers", method: "POST", path: "/organisation/members", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "admin-sdk", capability: "admin.organisationMembers" }),
998
1066
  listServiceIdentities: route({ name: "listServiceIdentities", method: "POST", path: "/organisation/service-identities", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.serviceIdentities" }),
999
1067
  createInvitation: route({ name: "createInvitation", method: "POST", path: "/invitations", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.invitation" }),
1000
1068
  listInvitations: route({ name: "listInvitations", method: "POST", path: "/invitations/list", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.invitationList" }),
@@ -1007,18 +1075,58 @@ var ROUTES = Object.freeze({
1007
1075
  revokePlatformInvitation: route({ name: "revokePlatformInvitation", method: "POST", path: "/platform-invitation-revocations", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.platformInvitationRevocation" }),
1008
1076
  reissuePlatformInvitation: route({ name: "reissuePlatformInvitation", method: "POST", path: "/platform-invitation-reissues", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.platformInvitationReissue" }),
1009
1077
  readWebOrigin: route({ name: "readWebOrigin", method: "POST", path: "/web-origin/read", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "service"), versioned: true, module: "admin-sdk", capability: "admin.webOrigin" }),
1010
- readCallerCapabilities: route({ name: "readCallerCapabilities", method: "POST", path: "/caller-capabilities/read", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.callerCapabilities" }),
1011
- queryGraph: route({ name: "queryGraph", method: "POST", path: "/objects/graph", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "objects.traverse" }),
1012
- readStructure: route({ name: "readStructure", method: "POST", path: "/objects/structure", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "objects.traverse" }),
1013
- findPaths: route({ name: "findPaths", method: "POST", path: "/objects/paths", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client"), versioned: true, module: "objects-sdk", capability: "objects.traverse" }),
1014
- listProposals: route({ name: "listProposals", method: "POST", path: "/proposals/list", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "client"), versioned: true, module: "branches-sdk", capability: "branches.proposalList" }),
1015
- readProposal: route({ name: "readProposal", method: "POST", path: "/proposals/read", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "client"), versioned: true, module: "branches-sdk", capability: "branches.proposalRead" }),
1078
+ readCallerCapabilities: route({ name: "readCallerCapabilities", method: "POST", path: "/caller-capabilities/read", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "admin-sdk", capability: "admin.callerCapabilities" }),
1079
+ queryGraph: route({ name: "queryGraph", method: "POST", path: "/objects/graph", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.traverse" }),
1080
+ readStructure: route({ name: "readStructure", method: "POST", path: "/objects/structure", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.traverse" }),
1081
+ findPaths: route({ name: "findPaths", method: "POST", path: "/objects/paths", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.traverse" }),
1082
+ listProposals: route({ name: "listProposals", method: "POST", path: "/proposals/list", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "client", "hosted-app"), versioned: true, module: "branches-sdk", capability: "branches.proposalList" }),
1083
+ readProposal: route({ name: "readProposal", method: "POST", path: "/proposals/read", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "client", "hosted-app"), versioned: true, module: "branches-sdk", capability: "branches.proposalRead" }),
1016
1084
  refuseProposal: route({ name: "refuseProposal", method: "POST", path: "/proposal-refusals", group: "branch", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "client"), versioned: true, module: "branches-sdk", capability: "branches.proposalRefusal" }),
1017
- readBranchDiff: route({ name: "readBranchDiff", method: "POST", path: "/branches/diff", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "client"), versioned: true, module: "branches-sdk", capability: "branches.proposalDiff" }),
1018
- diffBranches: route({ name: "diffBranches", method: "POST", path: "/branches/difference", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client"), versioned: true, module: "branches-sdk", capability: "branches.diff" }),
1019
- readBranchHistory: route({ name: "readBranchHistory", method: "POST", path: "/branches/history", group: "history", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client"), versioned: true, module: "branches-sdk", capability: "branches.history" }),
1085
+ readBranchDiff: route({ name: "readBranchDiff", method: "POST", path: "/branches/diff", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "client", "hosted-app"), versioned: true, module: "branches-sdk", capability: "branches.proposalDiff" }),
1086
+ readLinkStatus: route({
1087
+ name: "readLinkStatus",
1088
+ method: "POST",
1089
+ path: "/links/status",
1090
+ group: "read",
1091
+ selector: "object",
1092
+ subject: "project",
1093
+ idempotent: false,
1094
+ admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"),
1095
+ versioned: true,
1096
+ module: "objects-sdk",
1097
+ capability: "links.status"
1098
+ }),
1099
+ clearLinks: route({
1100
+ name: "clearLinks",
1101
+ method: "POST",
1102
+ path: "/link-clearings",
1103
+ group: "write",
1104
+ selector: "project",
1105
+ subject: "project",
1106
+ idempotent: true,
1107
+ admission: admitting("user", "run-apply", "client", "service"),
1108
+ versioned: true,
1109
+ module: "objects-sdk",
1110
+ capability: "links.clear"
1111
+ }),
1112
+ readChangeImpact: route({
1113
+ name: "readChangeImpact",
1114
+ method: "POST",
1115
+ path: "/branches/impact",
1116
+ group: "read",
1117
+ selector: "project",
1118
+ subject: "project",
1119
+ idempotent: false,
1120
+ admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"),
1121
+ versioned: true,
1122
+ module: "branches-sdk",
1123
+ capability: "branches.impact"
1124
+ }),
1125
+ diffBranches: route({ name: "diffBranches", method: "POST", path: "/branches/difference", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"), versioned: true, module: "branches-sdk", capability: "branches.diff" }),
1126
+ readBranchHistory: route({ name: "readBranchHistory", method: "POST", path: "/branches/history", group: "history", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "client", "hosted-app"), versioned: true, module: "branches-sdk", capability: "branches.history" }),
1020
1127
  listAudit: route({ name: "listAudit", method: "POST", path: "/audit", group: "history", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "run-explore", "run-apply", "run-types"), versioned: true, module: "admin-sdk", capability: "admin.audit" }),
1021
- readRefHead: route({ name: "readRefHead", method: "POST", path: "/branches/head", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client"), versioned: true, module: "branches-sdk", capability: "branches.head" }),
1128
+ listOrganisationAudit: route({ name: "listOrganisationAudit", method: "POST", path: "/organisation-audit", group: "history", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.organisationAudit" }),
1129
+ readRefHead: route({ name: "readRefHead", method: "POST", path: "/branches/head", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client", "hosted-app"), versioned: true, module: "branches-sdk", capability: "branches.head" }),
1022
1130
  inspectBranchOperation: route({ name: "inspectBranchOperation", method: "POST", path: "/branch-inspections", group: "branch", selector: "project", subject: "project", idempotent: false, admission: admitting("user", "service", "client"), versioned: true, module: "branches-sdk", capability: "branches.inspection" }),
1023
1131
  abandonBranch: route({ name: "abandonBranch", method: "POST", path: "/branch-abandonments", group: "branch", selector: "project", subject: "project", idempotent: true, admission: admitting("user", "service", "client"), versioned: true, module: "branches-sdk", capability: "branches.abandonment" }),
1024
1132
  addRefRule: route({ name: "addRefRule", method: "POST", path: "/ref-rules", group: "administration", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.ref-rules" }),
@@ -1055,21 +1163,21 @@ var ROUTES = Object.freeze({
1055
1163
  validateChangeSet: route({ name: "validateChangeSet", method: "POST", path: "/change-sets/validation", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "run-types"), versioned: true, module: "ontology-sdk", capability: "ontology.draft" }),
1056
1164
  discardChangeSet: route({ name: "discardChangeSet", method: "POST", path: "/change-set-discards", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "ontology-sdk", capability: "ontology.publish" }),
1057
1165
  acceptChangeSet: route({ name: "acceptChangeSet", method: "POST", path: "/change-set-acceptances", group: "administration", selector: "none", subject: "none", idempotent: true, admission: admitting("user"), versioned: true, module: "ontology-sdk", capability: "ontology.publish" }),
1058
- readApp: route({ name: "readApp", method: "POST", path: "/apps/read", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client"), versioned: true, module: "objects-sdk", capability: "objects.catalogue" }),
1166
+ readApp: route({ name: "readApp", method: "POST", path: "/apps/read", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.catalogue" }),
1059
1167
  openAppDraft: route({ name: "openAppDraft", method: "POST", path: "/app-drafts", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "run-types"), versioned: true, module: "ontology-sdk", capability: "ontology.draft" }),
1060
1168
  readAppDraft: route({ name: "readAppDraft", method: "POST", path: "/app-drafts/read", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "run-types"), versioned: true, module: "ontology-sdk", capability: "ontology.draft" }),
1061
1169
  reviseAppDraft: route({ name: "reviseAppDraft", method: "POST", path: "/app-drafts/revisions", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "run-types"), versioned: true, module: "ontology-sdk", capability: "ontology.draft" }),
1062
1170
  acceptAppDraft: route({ name: "acceptAppDraft", method: "POST", path: "/app-draft-acceptances", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "ontology-sdk", capability: "ontology.publish" }),
1063
- listApps: route({ name: "listApps", method: "POST", path: "/apps", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client"), versioned: true, module: "objects-sdk", capability: "objects.catalogue" }),
1171
+ listApps: route({ name: "listApps", method: "POST", path: "/apps", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "service", "run-explore", "run-apply", "run-types", "client", "hosted-app"), versioned: true, module: "objects-sdk", capability: "objects.catalogue" }),
1064
1172
  validateAppDraft: route({ name: "validateAppDraft", method: "POST", path: "/app-drafts/validation", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user", "run-types"), versioned: true, module: "ontology-sdk", capability: "ontology.draft" }),
1065
1173
  discardAppDraft: route({ name: "discardAppDraft", method: "POST", path: "/app-draft-discards", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "ontology-sdk", capability: "ontology.publish" }),
1066
- searchPeople: route({ name: "searchPeople", method: "POST", path: "/people/search", group: "read", selector: "none", subject: "display-names", idempotent: false, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "people.search" }),
1067
- searchObjectReaders: route({ name: "searchObjectReaders", method: "POST", path: "/objects/readers", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "people.objectReaders" }),
1068
- listSubscribers: route({ name: "listSubscribers", method: "POST", path: "/objects/subscribers", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "discussion.subscribers" }),
1069
- addSubscriber: route({ name: "addSubscriber", method: "POST", path: "/objects/subscribers/add", group: "write", selector: "object", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "discussion.subscriberChange" }),
1070
- removeSubscriber: route({ name: "removeSubscriber", method: "POST", path: "/objects/subscribers/remove", group: "write", selector: "object", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "discussion.subscriberChange" }),
1071
- listComments: route({ name: "listComments", method: "POST", path: "/objects/comments", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "discussion.comments" }),
1072
- addComment: route({ name: "addComment", method: "POST", path: "/objects/comments/add", group: "write", selector: "object", subject: "project", idempotent: true, admission: admitting("user"), versioned: true, module: "objects-sdk", capability: "discussion.commentWrite" }),
1174
+ searchPeople: route({ name: "searchPeople", method: "POST", path: "/people/search", group: "read", selector: "none", subject: "display-names", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "people.search" }),
1175
+ searchObjectReaders: route({ name: "searchObjectReaders", method: "POST", path: "/objects/readers", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "people.objectReaders" }),
1176
+ listSubscribers: route({ name: "listSubscribers", method: "POST", path: "/objects/subscribers", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "discussion.subscribers" }),
1177
+ addSubscriber: route({ name: "addSubscriber", method: "POST", path: "/objects/subscribers/add", group: "write", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "discussion.subscriberChange" }),
1178
+ removeSubscriber: route({ name: "removeSubscriber", method: "POST", path: "/objects/subscribers/remove", group: "write", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "discussion.subscriberChange" }),
1179
+ listComments: route({ name: "listComments", method: "POST", path: "/objects/comments", group: "read", selector: "object", subject: "project", idempotent: false, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "discussion.comments" }),
1180
+ addComment: route({ name: "addComment", method: "POST", path: "/objects/comments/add", group: "write", selector: "object", subject: "project", idempotent: true, admission: admitting("user", "hosted-app"), versioned: true, module: "objects-sdk", capability: "discussion.commentWrite" }),
1073
1181
  createConnection: route({ name: "createConnection", method: "POST", path: "/connections", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.connectionCreation" }),
1074
1182
  listConnections: route({ name: "listConnections", method: "POST", path: "/connections/list", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.connections" }),
1075
1183
  setConnectionCredential: route({ name: "setConnectionCredential", method: "POST", path: "/connections/credential", group: "administration", selector: "connection", subject: "connection", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.connectionCredential" }),
@@ -1078,7 +1186,22 @@ var ROUTES = Object.freeze({
1078
1186
  revokeConnection: route({ name: "revokeConnection", method: "POST", path: "/connection-revocations", group: "administration", selector: "connection", subject: "connection", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.connectionRevocation" }),
1079
1187
  startImportRun: route({ name: "startImportRun", method: "POST", path: "/import-runs", group: "write", selector: "connection", subject: "connection", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.importRunStart" }),
1080
1188
  listImportRuns: route({ name: "listImportRuns", method: "POST", path: "/import-runs/list", group: "read", selector: "connection", subject: "connection", idempotent: false, admission: admitting("user"), versioned: true, module: "admin-sdk", capability: "admin.importRuns" }),
1081
- closeImportRun: route({ name: "closeImportRun", method: "POST", path: "/import-run-closes", group: "write", selector: "connection", subject: "connection", idempotent: false, admission: admitting("service", "user"), versioned: true, module: "admin-sdk", capability: "admin.importRunClose" })
1189
+ closeImportRun: route({ name: "closeImportRun", method: "POST", path: "/import-run-closes", group: "write", selector: "connection", subject: "connection", idempotent: false, admission: admitting("service", "user"), versioned: true, module: "admin-sdk", capability: "admin.importRunClose" }),
1190
+ createHostedApp: route({ name: "createHostedApp", method: "POST", path: "/hosted-apps", group: "administration", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.app" }),
1191
+ publishHostedVersion: route({ name: "publishHostedVersion", method: "POST", path: "/hosted-apps/versions", group: "administration", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.publish" }),
1192
+ readHostedBundle: route({ name: "readHostedBundle", method: "POST", path: "/hosted-apps/bundle", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.bundle" }),
1193
+ listHostedApps: route({ name: "listHostedApps", method: "POST", path: "/hosted-apps/list", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.apps" }),
1194
+ listHostedVersions: route({ name: "listHostedVersions", method: "POST", path: "/hosted-apps/versions/list", group: "read", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.versions" }),
1195
+ revokeHostedApp: route({ name: "revokeHostedApp", method: "POST", path: "/hosted-app-revocations", group: "administration", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.appRevocation" }),
1196
+ revokeHostedVersion: route({ name: "revokeHostedVersion", method: "POST", path: "/hosted-version-revocations", group: "administration", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.versionRevocation" }),
1197
+ openHostedApp: route({ name: "openHostedApp", method: "POST", path: "/hosted-app-launches", group: "administration", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.launch" }),
1198
+ endHostedLaunch: route({ name: "endHostedLaunch", method: "POST", path: "/hosted-app-launch-ends", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.launchEnd" }),
1199
+ mintHostedAppToken: route({ name: "mintHostedAppToken", method: "POST", path: "/hosted-app-tokens", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.token" }),
1200
+ setHostedOneWallSwitch: route({ name: "setHostedOneWallSwitch", method: "POST", path: "/hosted-one-wall-switch", group: "administration", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.oneWallSwitch" }),
1201
+ readHostedOneWallSwitch: route({ name: "readHostedOneWallSwitch", method: "POST", path: "/hosted-one-wall-switch/read", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.oneWallSwitchRead" }),
1202
+ grantHostedOneWall: route({ name: "grantHostedOneWall", method: "POST", path: "/hosted-one-wall-grants", group: "administration", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.oneWallGrant" }),
1203
+ withdrawHostedOneWall: route({ name: "withdrawHostedOneWall", method: "POST", path: "/hosted-one-wall-withdrawals", group: "administration", selector: "project", subject: "project", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.oneWallWithdrawal" }),
1204
+ listHostedOneWallGrants: route({ name: "listHostedOneWallGrants", method: "POST", path: "/hosted-one-wall-grants/list", group: "read", selector: "none", subject: "none", idempotent: false, admission: admitting("user"), versioned: true, module: "hosted-apps-sdk", capability: "hostedApps.oneWallGrants" })
1082
1205
  });
1083
1206
  var ROUTE_CARRIES_CREDENTIAL = Object.freeze({
1084
1207
  createObjectSet: false,
@@ -1160,9 +1283,13 @@ var ROUTE_CARRIES_CREDENTIAL = Object.freeze({
1160
1283
  readProposal: false,
1161
1284
  refuseProposal: false,
1162
1285
  readBranchDiff: false,
1286
+ readLinkStatus: false,
1287
+ clearLinks: false,
1288
+ readChangeImpact: false,
1163
1289
  diffBranches: false,
1164
1290
  readBranchHistory: false,
1165
1291
  listAudit: false,
1292
+ listOrganisationAudit: false,
1166
1293
  readRefHead: false,
1167
1294
  inspectBranchOperation: false,
1168
1295
  abandonBranch: false,
@@ -1223,7 +1350,22 @@ var ROUTE_CARRIES_CREDENTIAL = Object.freeze({
1223
1350
  revokeConnection: false,
1224
1351
  startImportRun: false,
1225
1352
  listImportRuns: false,
1226
- closeImportRun: false
1353
+ closeImportRun: false,
1354
+ createHostedApp: false,
1355
+ publishHostedVersion: false,
1356
+ readHostedBundle: false,
1357
+ listHostedApps: false,
1358
+ listHostedVersions: false,
1359
+ revokeHostedApp: false,
1360
+ revokeHostedVersion: false,
1361
+ openHostedApp: false,
1362
+ endHostedLaunch: false,
1363
+ mintHostedAppToken: false,
1364
+ setHostedOneWallSwitch: false,
1365
+ readHostedOneWallSwitch: false,
1366
+ grantHostedOneWall: false,
1367
+ withdrawHostedOneWall: false,
1368
+ listHostedOneWallGrants: false
1227
1369
  });
1228
1370
  function routeEntriesOf(module) {
1229
1371
  const names = Object.keys(ROUTES).filter((name) => ROUTES[name].module === module);
@@ -1232,10 +1374,64 @@ function routeEntriesOf(module) {
1232
1374
 
1233
1375
  // packages/api-contract/dist/client-scopes.js
1234
1376
  var CLIENT_SCOPES = Object.freeze({
1235
- "objects.read": Object.freeze({ capabilities: Object.freeze(["objects.read", "objects.query", "objects.traverse", "objects.aggregate", "objects.history", "objects.catalogue", "objects.projects", "branches.list"]), consentLine: "Read your objects, their history and your projects' types." }),
1236
- "objects.write": Object.freeze({ capabilities: Object.freeze(["objects.write", "objects.verb"]), consentLine: "Create, change and delete objects, and run actions on them, as you." }),
1237
- "branches.read": Object.freeze({ capabilities: Object.freeze(["branches.head", "branches.diff", "branches.history", "branches.conflicts", "branches.inspection", "branches.pendingProposal", "branches.proposalList", "branches.proposalRead", "branches.proposalDiff", "branches.list"]), consentLine: "Read your branches, their history and proposals." }),
1238
- "branches.write": Object.freeze({ capabilities: Object.freeze(["branches.create", "branches.abandonment", "branches.proposalSubmit", "branches.proposalRefusal", "branches.head", "branches.diff", "branches.history", "branches.conflicts", "branches.inspection", "branches.pendingProposal", "branches.proposalList", "branches.proposalRead", "branches.proposalDiff", "branches.list"]), consentLine: "Create and abandon branches, submit and refuse proposals, and read your branches, as you." }),
1377
+ "objects.read": Object.freeze({
1378
+ capabilities: Object.freeze([
1379
+ "objects.read",
1380
+ "objects.query",
1381
+ "objects.traverse",
1382
+ "objects.aggregate",
1383
+ "objects.history",
1384
+ "objects.catalogue",
1385
+ "objects.projects",
1386
+ "branches.list",
1387
+ "links.status"
1388
+ ]),
1389
+ consentLine: "Read your objects, their history and your projects' types."
1390
+ }),
1391
+ "objects.write": Object.freeze({
1392
+ capabilities: Object.freeze([
1393
+ "objects.write",
1394
+ "objects.verb",
1395
+ "links.clear"
1396
+ ]),
1397
+ consentLine: "Create, change and delete objects, and run actions on them, as you."
1398
+ }),
1399
+ "branches.read": Object.freeze({
1400
+ capabilities: Object.freeze([
1401
+ "branches.head",
1402
+ "branches.diff",
1403
+ "branches.history",
1404
+ "branches.conflicts",
1405
+ "branches.inspection",
1406
+ "branches.pendingProposal",
1407
+ "branches.proposalList",
1408
+ "branches.proposalRead",
1409
+ "branches.proposalDiff",
1410
+ "branches.list",
1411
+ "branches.impact"
1412
+ ]),
1413
+ consentLine: "Read your branches, their history and proposals."
1414
+ }),
1415
+ "branches.write": Object.freeze({
1416
+ capabilities: Object.freeze([
1417
+ "branches.create",
1418
+ "branches.abandonment",
1419
+ "branches.proposalSubmit",
1420
+ "branches.proposalRefusal",
1421
+ "branches.head",
1422
+ "branches.diff",
1423
+ "branches.history",
1424
+ "branches.conflicts",
1425
+ "branches.inspection",
1426
+ "branches.pendingProposal",
1427
+ "branches.proposalList",
1428
+ "branches.proposalRead",
1429
+ "branches.proposalDiff",
1430
+ "branches.list",
1431
+ "branches.impact"
1432
+ ]),
1433
+ consentLine: "Create and abandon branches, submit and refuse proposals, and read your branches, as you."
1434
+ }),
1239
1435
  "branches.manage": Object.freeze({ capabilities: Object.freeze(["branches.merge", "branches.disposal", "objects.recovery"]), consentLine: "Merge branches into the branches and trunks you may change, delete branches and other refs, and recover changes, as you." }),
1240
1436
  offline_access: Object.freeze({ capabilities: Object.freeze([]), consentLine: "Stay connected when you are away, until you disconnect it." })
1241
1437
  });
@@ -1247,6 +1443,9 @@ function attachmentNameHeader(name) {
1247
1443
  return `UTF-8''${encodeURIComponent(name).replace(/[!'()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`)}`;
1248
1444
  }
1249
1445
 
1446
+ // packages/api-contract/dist/links.js
1447
+ var MAX_CLEAR_ENTRIES = 100;
1448
+
1250
1449
  // packages/sdk-dispatch/dist/response.js
1251
1450
  function responseOf(status, body, reason, headers = {}) {
1252
1451
  let read = false;
@@ -1954,9 +2153,9 @@ function methodOf(entry2, transport, origin, token) {
1954
2153
  };
1955
2154
  return Object.freeze(Object.assign(send, { doc: freezeDoc(entry2.doc) }));
1956
2155
  }
1957
- function createModuleFactory(entries6, transport, origin, token) {
2156
+ function createModuleFactory(entries7, transport, origin, token) {
1958
2157
  const byCapability = {};
1959
- for (const entry2 of entries6) {
2158
+ for (const entry2 of entries7) {
1960
2159
  const methods = byCapability[entry2.capability] ?? {};
1961
2160
  methods[entry2.name] = methodOf(entry2, transport, origin, token);
1962
2161
  byCapability[entry2.capability] = methods;
@@ -1965,9 +2164,9 @@ function createModuleFactory(entries6, transport, origin, token) {
1965
2164
  }
1966
2165
 
1967
2166
  // packages/sdk-dispatch/dist/typed-client.js
1968
- function createTypedClient(names, entries6, transport, origin, token) {
1969
- const factory = createModuleFactory(entries6, transport, origin, token);
1970
- const byName = new Map(entries6.map((entry2) => [entry2.name, entry2]));
2167
+ function createTypedClient(names, entries7, transport, origin, token) {
2168
+ const factory = createModuleFactory(entries7, transport, origin, token);
2169
+ const byName = new Map(entries7.map((entry2) => [entry2.name, entry2]));
1971
2170
  const client = {};
1972
2171
  for (const name of names) {
1973
2172
  const entry2 = byName.get(name);
@@ -2134,6 +2333,7 @@ var ADMIN_ROUTE_NAMES = Object.freeze([
2134
2333
  "readWebOrigin",
2135
2334
  "readCallerCapabilities",
2136
2335
  "listAudit",
2336
+ "listOrganisationAudit",
2137
2337
  "createProject",
2138
2338
  "createOrganisation",
2139
2339
  "addRefRule",
@@ -2203,6 +2403,7 @@ var BRANCHES_ROUTE_NAMES = Object.freeze([
2203
2403
  "refuseProposal",
2204
2404
  "readBranchDiff",
2205
2405
  "diffBranches",
2406
+ "readChangeImpact",
2206
2407
  "readBranchHistory",
2207
2408
  "readRefHead",
2208
2409
  "inspectBranchOperation",
@@ -2271,9 +2472,9 @@ function exploreViewAddress(address, state) {
2271
2472
  if (state.setId !== void 0 && state.setId !== null && state.setId.length > 0) {
2272
2473
  query2.set("set", state.setId);
2273
2474
  }
2274
- if (state.typeKey !== null) {
2275
- query2.set("type", state.typeKey);
2276
- }
2475
+ const types = state.typeKeys ?? (state.typeKey === null ? [] : [state.typeKey]);
2476
+ for (const key of [...new Set(types)].sort())
2477
+ query2.append("type", key);
2277
2478
  if (state.objectId !== null) {
2278
2479
  query2.set("object", state.objectId);
2279
2480
  }
@@ -2337,12 +2538,12 @@ function parseLinkSubject(value) {
2337
2538
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
2338
2539
  return null;
2339
2540
  }
2340
- const record = value;
2341
- const { kind } = record;
2342
- const keys = Object.keys(record);
2541
+ const record2 = value;
2542
+ const { kind } = record2;
2543
+ const keys = Object.keys(record2);
2343
2544
  const only = (...fields) => keys.length === fields.length + 1 && keys.includes("kind") && fields.every((field) => keys.includes(field));
2344
2545
  const text = (field) => {
2345
- const entry2 = record[field];
2546
+ const entry2 = record2[field];
2346
2547
  return typeof entry2 === "string" && entry2.length > 0 ? entry2 : null;
2347
2548
  };
2348
2549
  const identifier = (field) => {
@@ -2418,6 +2619,18 @@ function linkPath(organisationId, projectId, subject, ref) {
2418
2619
  }
2419
2620
  }
2420
2621
 
2622
+ // packages/objects-sdk/dist/display.js
2623
+ function displayPropertyValue(value, definition) {
2624
+ if (typeof value === "number" && typeof definition === "object" && definition !== null && "kind" in definition && (definition.kind === "number" || definition.kind === "integer") && "unit" in definition && typeof definition.unit === "string") {
2625
+ return `${value} ${definition.unit}`;
2626
+ }
2627
+ if (typeof value === "string")
2628
+ return value;
2629
+ if (value === void 0)
2630
+ return "absent";
2631
+ return JSON.stringify(value);
2632
+ }
2633
+
2421
2634
  // packages/objects-sdk/dist/transport-client.js
2422
2635
  var OBJECTS_ROUTE_ENTRIES = routeEntriesOf("objects-sdk");
2423
2636
  var OBJECTS_ROUTE_NAMES = [
@@ -2445,6 +2658,8 @@ var OBJECTS_ROUTE_NAMES = [
2445
2658
  "queryGraph",
2446
2659
  "readStructure",
2447
2660
  "findPaths",
2661
+ "readLinkStatus",
2662
+ "clearLinks",
2448
2663
  "searchPeople",
2449
2664
  "searchObjectReaders",
2450
2665
  "listSubscribers",
@@ -2558,6 +2773,105 @@ function normaliseDatetime(text) {
2558
2773
  return instant.toISOString();
2559
2774
  }
2560
2775
 
2776
+ // packages/schema-language/dist/identifiers.js
2777
+ function normaliseIdentifier(value) {
2778
+ return value.normalize("NFC").toLowerCase();
2779
+ }
2780
+ var PROTOTYPE_AFFECTING_KEYS = ["__proto__", "constructor", "prototype"];
2781
+
2782
+ // packages/schema-language/dist/units.js
2783
+ function unit(dimension, factor, affine = false) {
2784
+ return Object.freeze({ dimension, factor, affine });
2785
+ }
2786
+ var UNITS = Object.freeze({
2787
+ "1": unit("dimensionless", 1),
2788
+ "%": unit("dimensionless", 0.01),
2789
+ m: unit("length", 1),
2790
+ km: unit("length", 1e3),
2791
+ cm: unit("length", 0.01),
2792
+ mm: unit("length", 1e-3),
2793
+ um: unit("length", 1e-6),
2794
+ nm: unit("length", 1e-9),
2795
+ kg: unit("mass", 1),
2796
+ g: unit("mass", 1e-3),
2797
+ mg: unit("mass", 1e-6),
2798
+ ug: unit("mass", 1e-9),
2799
+ s: unit("time", 1),
2800
+ ms: unit("time", 1e-3),
2801
+ us: unit("time", 1e-6),
2802
+ ns: unit("time", 1e-9),
2803
+ min: unit("time", 60),
2804
+ h: unit("time", 3600),
2805
+ A: unit("current", 1),
2806
+ kA: unit("current", 1e3),
2807
+ mA: unit("current", 1e-3),
2808
+ uA: unit("current", 1e-6),
2809
+ K: unit("temperature", 1),
2810
+ // The factor is the linear scale only; an affine unit is convertible to itself alone.
2811
+ degC: unit("temperature", 1, true),
2812
+ degF: unit("temperature", 0.5555555555555556, true),
2813
+ mol: unit("amount", 1),
2814
+ mmol: unit("amount", 1e-3),
2815
+ cd: unit("luminous-intensity", 1),
2816
+ rad: unit("angle", 1),
2817
+ sr: unit("solid-angle", 1),
2818
+ "rad/s": unit("angular-speed", 1),
2819
+ rpm: unit("angular-speed", 0.10471975511965977),
2820
+ Hz: unit("frequency", 1),
2821
+ kHz: unit("frequency", 1e3),
2822
+ MHz: unit("frequency", 1e6),
2823
+ GHz: unit("frequency", 1e9),
2824
+ N: unit("force", 1),
2825
+ kN: unit("force", 1e3),
2826
+ mN: unit("force", 1e-3),
2827
+ Pa: unit("pressure", 1),
2828
+ kPa: unit("pressure", 1e3),
2829
+ MPa: unit("pressure", 1e6),
2830
+ GPa: unit("pressure", 1e9),
2831
+ bar: unit("pressure", 1e5),
2832
+ J: unit("energy", 1),
2833
+ kJ: unit("energy", 1e3),
2834
+ MJ: unit("energy", 1e6),
2835
+ W: unit("power", 1),
2836
+ mW: unit("power", 1e-3),
2837
+ kW: unit("power", 1e3),
2838
+ MW: unit("power", 1e6),
2839
+ C: unit("charge", 1),
2840
+ mC: unit("charge", 1e-3),
2841
+ V: unit("voltage", 1),
2842
+ mV: unit("voltage", 1e-3),
2843
+ uV: unit("voltage", 1e-6),
2844
+ kV: unit("voltage", 1e3),
2845
+ F: unit("capacitance", 1),
2846
+ mF: unit("capacitance", 1e-3),
2847
+ uF: unit("capacitance", 1e-6),
2848
+ nF: unit("capacitance", 1e-9),
2849
+ pF: unit("capacitance", 1e-12),
2850
+ ohm: unit("resistance", 1),
2851
+ kohm: unit("resistance", 1e3),
2852
+ Mohm: unit("resistance", 1e6),
2853
+ S: unit("conductance", 1),
2854
+ mS: unit("conductance", 1e-3),
2855
+ uS: unit("conductance", 1e-6),
2856
+ Wb: unit("magnetic-flux", 1),
2857
+ mWb: unit("magnetic-flux", 1e-3),
2858
+ T: unit("magnetic-flux-density", 1),
2859
+ mT: unit("magnetic-flux-density", 1e-3),
2860
+ uT: unit("magnetic-flux-density", 1e-6),
2861
+ H: unit("inductance", 1),
2862
+ mH: unit("inductance", 1e-3),
2863
+ uH: unit("inductance", 1e-6),
2864
+ lm: unit("luminous-flux", 1),
2865
+ lx: unit("illuminance", 1),
2866
+ Bq: unit("activity", 1),
2867
+ Gy: unit("absorbed-dose", 1),
2868
+ Sv: unit("equivalent-dose", 1),
2869
+ kat: unit("catalytic-activity", 1)
2870
+ });
2871
+ function isUnitSymbol(value) {
2872
+ return typeof value === "string" && Object.hasOwn(UNITS, value);
2873
+ }
2874
+
2561
2875
  // packages/schema-language/dist/validate-value.js
2562
2876
  var RULE_TYPE_MISMATCH = "type-mismatch";
2563
2877
  var RULE_UNDECLARED_PROPERTY = "undeclared-property";
@@ -2570,8 +2884,12 @@ function validateValue(schema, value) {
2570
2884
  walk(schema, value, [], violations);
2571
2885
  return violations.length === 0 ? { ok: true } : { ok: false, violations };
2572
2886
  }
2573
- function walk(schema, value, path, violations) {
2887
+ function walk(schema, value, path, violations, ownerProperties) {
2574
2888
  switch (schema.kind) {
2889
+ case "bound": {
2890
+ checkBound(value, path, violations, ownerProperties);
2891
+ return;
2892
+ }
2575
2893
  case "attachment": {
2576
2894
  if (!isAttachmentDescriptor(value))
2577
2895
  violations.push({ path, rule: "invalid-attachment" });
@@ -2631,7 +2949,7 @@ function walk(schema, value, path, violations) {
2631
2949
  violations.push({ path, rule: RULE_ARRAY_BOUND_EXCEEDED });
2632
2950
  }
2633
2951
  value.forEach((item, index) => {
2634
- walk(schema.items, item, [...path, String(index)], violations);
2952
+ walk(schema.items, item, [...path, String(index)], violations, ownerProperties);
2635
2953
  });
2636
2954
  return;
2637
2955
  }
@@ -2640,23 +2958,91 @@ function walk(schema, value, path, violations) {
2640
2958
  violations.push({ path, rule: RULE_TYPE_MISMATCH });
2641
2959
  return;
2642
2960
  }
2643
- const record = value;
2961
+ const record2 = value;
2644
2962
  for (const key of schema.required) {
2645
- if (!Object.prototype.hasOwnProperty.call(record, key)) {
2963
+ if (!Object.prototype.hasOwnProperty.call(record2, key)) {
2646
2964
  violations.push({ path: [...path, key], rule: RULE_MISSING_REQUIRED_PROPERTY });
2647
2965
  }
2648
2966
  }
2649
- for (const key of Object.keys(record)) {
2967
+ for (const key of Object.keys(record2)) {
2650
2968
  if (!Object.prototype.hasOwnProperty.call(schema.properties, key)) {
2651
2969
  violations.push({ path: [...path, key], rule: RULE_UNDECLARED_PROPERTY });
2652
2970
  continue;
2653
2971
  }
2654
- walk(schema.properties[key], record[key], [...path, key], violations);
2972
+ walk(schema.properties[key], record2[key], [...path, key], violations, schema.properties);
2655
2973
  }
2656
2974
  return;
2657
2975
  }
2658
2976
  }
2659
2977
  }
2978
+ var BOUND_FIELDS = ["quantity", "comparison", "value", "unit", "tolerance", "over"];
2979
+ var BOUND_COMPARISONS = ["<", "<=", ">", ">=", "within"];
2980
+ var BOUND_AGGREGATES = ["each", "sum", "min", "max", "count"];
2981
+ function isRecord(value) {
2982
+ return typeof value === "object" && value !== null && !Array.isArray(value);
2983
+ }
2984
+ function isPropertyKey(value) {
2985
+ return typeof value === "string" && value.length > 0 && value.length <= 64 && !PROTOTYPE_AFFECTING_KEYS.includes(value);
2986
+ }
2987
+ function checkBound(value, path, violations, ownerProperties) {
2988
+ if (!isRecord(value)) {
2989
+ violations.push({ path, rule: "invalid-bound" });
2990
+ return;
2991
+ }
2992
+ for (const key of Object.keys(value)) {
2993
+ if (!BOUND_FIELDS.includes(key))
2994
+ violations.push({ path: [...path, key], rule: RULE_UNDECLARED_PROPERTY });
2995
+ }
2996
+ if (!Object.hasOwn(value, "over") || typeof value.over !== "string" || !BOUND_AGGREGATES.includes(value.over)) {
2997
+ violations.push({ path: [...path, "over"], rule: "invalid-bound-over" });
2998
+ }
2999
+ if (!Object.hasOwn(value, "comparison") || typeof value.comparison !== "string" || !BOUND_COMPARISONS.includes(value.comparison)) {
3000
+ violations.push({ path: [...path, "comparison"], rule: "invalid-bound-comparison" });
3001
+ }
3002
+ if (value.over === "count") {
3003
+ if (Object.hasOwn(value, "quantity")) {
3004
+ violations.push({ path: [...path, "quantity"], rule: "count-bound-quantity" });
3005
+ }
3006
+ } else if (!Object.hasOwn(value, "quantity") || !isPropertyKey(value.quantity)) {
3007
+ violations.push({ path: [...path, "quantity"], rule: "invalid-bound-quantity" });
3008
+ }
3009
+ if (!Object.hasOwn(value, "value")) {
3010
+ violations.push({ path: [...path, "value"], rule: "invalid-bound-value" });
3011
+ } else if (isRecord(value.value)) {
3012
+ checkBoundReference(value.value, value.over === "count", path, violations, ownerProperties);
3013
+ if (Object.hasOwn(value, "unit"))
3014
+ violations.push({ path: [...path, "unit"], rule: "bound-reference-unit" });
3015
+ } else if (typeof value.value !== "number" || !Number.isFinite(value.value)) {
3016
+ violations.push({ path: [...path, "value"], rule: "invalid-bound-value" });
3017
+ } else if (value.over === "count") {
3018
+ if (Object.hasOwn(value, "unit") && value.unit !== "1") {
3019
+ violations.push({ path: [...path, "unit"], rule: "count-bound-unit" });
3020
+ }
3021
+ } else if (!Object.hasOwn(value, "unit") || !isUnitSymbol(value.unit)) {
3022
+ violations.push({ path: [...path, "unit"], rule: "unknown-unit" });
3023
+ }
3024
+ if (value.comparison === "within") {
3025
+ if (!Object.hasOwn(value, "tolerance")) {
3026
+ violations.push({ path: [...path, "tolerance"], rule: "missing-bound-tolerance" });
3027
+ } else if (typeof value.tolerance !== "number" || !Number.isFinite(value.tolerance) || value.tolerance < 0) {
3028
+ violations.push({ path: [...path, "tolerance"], rule: "invalid-bound-tolerance" });
3029
+ }
3030
+ } else if (Object.hasOwn(value, "tolerance")) {
3031
+ violations.push({ path: [...path, "tolerance"], rule: "unexpected-bound-tolerance" });
3032
+ }
3033
+ }
3034
+ function checkBoundReference(reference, count, path, violations, ownerProperties) {
3035
+ if (Object.keys(reference).length !== 1 || !Object.hasOwn(reference, "property") || !isPropertyKey(reference.property) || ownerProperties === void 0 || !Object.hasOwn(ownerProperties, reference.property)) {
3036
+ violations.push({ path: [...path, "value"], rule: "invalid-bound-reference" });
3037
+ return;
3038
+ }
3039
+ const property = ownerProperties[reference.property];
3040
+ if (property.kind !== "number" && property.kind !== "integer") {
3041
+ violations.push({ path: [...path, "value"], rule: "invalid-bound-reference" });
3042
+ } else if (count && property.unit !== void 0 && property.unit !== "1") {
3043
+ violations.push({ path: [...path, "value"], rule: "count-bound-unit" });
3044
+ }
3045
+ }
2660
3046
  function isAttachmentDescriptor(value) {
2661
3047
  if (typeof value !== "object" || value === null || Array.isArray(value) || !("sha256" in value) || !("name" in value) || !("mediaType" in value) || !("bytes" in value))
2662
3048
  return false;
@@ -2675,13 +3061,25 @@ function hasForbiddenNameCharacter(name) {
2675
3061
  }
2676
3062
 
2677
3063
  // packages/schema-language/dist/language-version.js
2678
- var KINDS_VERSION_1 = Object.freeze(["null", "boolean", "string", "number", "integer", "person", "enum", "array", "object"]);
3064
+ var KINDS_VERSION_1 = Object.freeze([
3065
+ "null",
3066
+ "boolean",
3067
+ "string",
3068
+ "number",
3069
+ "integer",
3070
+ "person",
3071
+ "enum",
3072
+ "array",
3073
+ "object"
3074
+ ]);
2679
3075
  var KINDS_VERSION_2 = Object.freeze([...KINDS_VERSION_1, "datetime"]);
2680
3076
  var KINDS_VERSION_3 = Object.freeze([...KINDS_VERSION_2, "attachment"]);
3077
+ var KINDS_VERSION_4 = Object.freeze([...KINDS_VERSION_3, "bound"]);
2681
3078
  var KINDS_BY_LANGUAGE_VERSION = /* @__PURE__ */ new Map([
2682
3079
  ["1", KINDS_VERSION_1],
2683
3080
  ["2", KINDS_VERSION_2],
2684
- ["3", KINDS_VERSION_3]
3081
+ ["3", KINDS_VERSION_3],
3082
+ ["4", KINDS_VERSION_4]
2685
3083
  ]);
2686
3084
  function schemaKindsFor(languageVersion) {
2687
3085
  return KINDS_BY_LANGUAGE_VERSION.get(languageVersion);
@@ -2719,12 +3117,6 @@ function sortKeys(value, ancestors) {
2719
3117
  return value;
2720
3118
  }
2721
3119
 
2722
- // packages/schema-language/dist/identifiers.js
2723
- function normaliseIdentifier(value) {
2724
- return value.normalize("NFC").toLowerCase();
2725
- }
2726
- var PROTOTYPE_AFFECTING_KEYS = ["__proto__", "constructor", "prototype"];
2727
-
2728
3120
  // packages/schema-language/dist/limits.js
2729
3121
  var LIMITS_VERSION_1 = {
2730
3122
  maxDocumentBytes: 65536,
@@ -2736,7 +3128,8 @@ var LIMITS_VERSION_1 = {
2736
3128
  var LIMITS_BY_LANGUAGE_VERSION = /* @__PURE__ */ new Map([
2737
3129
  ["1", LIMITS_VERSION_1],
2738
3130
  ["2", LIMITS_VERSION_1],
2739
- ["3", LIMITS_VERSION_1]
3131
+ ["3", LIMITS_VERSION_1],
3132
+ ["4", LIMITS_VERSION_1]
2740
3133
  ]);
2741
3134
  function limitsForLanguageVersion(languageVersion) {
2742
3135
  return LIMITS_BY_LANGUAGE_VERSION.get(languageVersion);
@@ -2785,30 +3178,47 @@ function walk2(node, path, depth, ancestors, limits, kinds, category, violations
2785
3178
  violations.push({ path, rule: RULE_MALFORMED_SCHEMA });
2786
3179
  return;
2787
3180
  }
2788
- const record = node;
2789
- const kind = record.kind;
3181
+ const record2 = node;
3182
+ const kind = record2.kind;
2790
3183
  if (typeof kind !== "string" || !kinds.includes(kind)) {
2791
3184
  violations.push({ path, rule: RULE_UNKNOWN_KIND, allowed: kinds });
2792
3185
  return;
2793
3186
  }
2794
3187
  ancestors.add(node);
2795
3188
  try {
3189
+ if (Object.hasOwn(record2, "unit")) {
3190
+ if (!kinds.includes("bound")) {
3191
+ violations.push({ path: [...path, "unit"], rule: "unit-language-version" });
3192
+ } else if (kind !== "number" && kind !== "integer") {
3193
+ violations.push({ path: [...path, "unit"], rule: "unit-kind" });
3194
+ } else if (!isUnitSymbol(record2.unit)) {
3195
+ violations.push({ path: [...path, "unit"], rule: "unknown-unit" });
3196
+ }
3197
+ }
3198
+ if (kind === "bound") {
3199
+ const topLevel = path.length === 2 && path[0] === "properties";
3200
+ const topLevelArray = path.length === 3 && path[0] === "properties" && path[2] === "items";
3201
+ if (category !== "object" || !topLevel && !topLevelArray) {
3202
+ violations.push({ path, rule: "bound-position" });
3203
+ }
3204
+ return;
3205
+ }
2796
3206
  if (kind === "attachment") {
2797
3207
  if (category !== "object" || path.length !== 2 || path[0] !== "properties") {
2798
3208
  violations.push({ path, rule: "attachment-position" });
2799
3209
  }
2800
- if (!Array.isArray(record.accept) || record.accept.length === 0 || record.accept.some((entry2) => typeof entry2 !== "string" || !Object.hasOwn(ATTACHMENT_CLASSES, entry2))) {
3210
+ if (!Array.isArray(record2.accept) || record2.accept.length === 0 || record2.accept.some((entry2) => typeof entry2 !== "string" || !Object.hasOwn(ATTACHMENT_CLASSES, entry2))) {
2801
3211
  violations.push({ path, rule: RULE_MALFORMED_SCHEMA });
2802
3212
  }
2803
3213
  return;
2804
3214
  }
2805
3215
  if (kind === "object") {
2806
- const properties = record.properties;
3216
+ const properties = record2.properties;
2807
3217
  if (typeof properties !== "object" || properties === null || Array.isArray(properties)) {
2808
3218
  violations.push({ path, rule: RULE_MALFORMED_SCHEMA });
2809
3219
  return;
2810
3220
  }
2811
- if (!Array.isArray(record.required) || !record.required.every((key) => typeof key === "string")) {
3221
+ if (!Array.isArray(record2.required) || !record2.required.every((key) => typeof key === "string")) {
2812
3222
  violations.push({ path, rule: RULE_MALFORMED_SCHEMA });
2813
3223
  return;
2814
3224
  }
@@ -2818,7 +3228,7 @@ function walk2(node, path, depth, ancestors, limits, kinds, category, violations
2818
3228
  violations.push({ path, rule: RULE_FIELD_COUNT });
2819
3229
  }
2820
3230
  checkIdentifiers(keys, path, limits, violations);
2821
- for (const requiredKey of record.required) {
3231
+ for (const requiredKey of record2.required) {
2822
3232
  if (!keys.includes(requiredKey)) {
2823
3233
  violations.push({ path: [...path, requiredKey], rule: RULE_UNDECLARED_REQUIRED_KEY });
2824
3234
  }
@@ -2829,22 +3239,22 @@ function walk2(node, path, depth, ancestors, limits, kinds, category, violations
2829
3239
  return;
2830
3240
  }
2831
3241
  if (kind === "array") {
2832
- if (typeof record.maxItems !== "number" || !Number.isFinite(record.maxItems)) {
3242
+ if (typeof record2.maxItems !== "number" || !Number.isFinite(record2.maxItems)) {
2833
3243
  violations.push({ path, rule: RULE_MALFORMED_SCHEMA });
2834
3244
  return;
2835
3245
  }
2836
- if (record.maxItems > limits.maxArrayItems) {
3246
+ if (record2.maxItems > limits.maxArrayItems) {
2837
3247
  violations.push({ path, rule: RULE_ARRAY_BOUND });
2838
3248
  }
2839
- walk2(record.items, [...path, "items"], depth + 1, ancestors, limits, kinds, category, violations);
3249
+ walk2(record2.items, [...path, "items"], depth + 1, ancestors, limits, kinds, category, violations);
2840
3250
  return;
2841
3251
  }
2842
3252
  if (kind === "enum") {
2843
- if (!Array.isArray(record.members) || !record.members.every((member) => typeof member === "string" || typeof member === "number" && Number.isFinite(member))) {
3253
+ if (!Array.isArray(record2.members) || !record2.members.every((member) => typeof member === "string" || typeof member === "number" && Number.isFinite(member))) {
2844
3254
  violations.push({ path, rule: RULE_MALFORMED_SCHEMA });
2845
3255
  return;
2846
3256
  }
2847
- const stringMembers = record.members.filter((member) => typeof member === "string");
3257
+ const stringMembers = record2.members.filter((member) => typeof member === "string");
2848
3258
  checkIdentifiers(stringMembers, [...path, "members"], limits, violations);
2849
3259
  return;
2850
3260
  }
@@ -3318,8 +3728,8 @@ function validateLocally(schema, languageVersion, value, category) {
3318
3728
  return checked.ok ? validateValue(checked.schema, value) : { ok: false, violations: checked.violations };
3319
3729
  }
3320
3730
  function checkSampleAgainstChanges(changes, typeKey, sample) {
3321
- const entries6 = entryChangesOf(changes);
3322
- const document = Object.hasOwn(entries6, typeKey) ? entries6[typeKey] : void 0;
3731
+ const entries7 = entryChangesOf(changes);
3732
+ const document = Object.hasOwn(entries7, typeKey) ? entries7[typeKey] : void 0;
3323
3733
  if (document === void 0) {
3324
3734
  return { kind: "no-such-type" };
3325
3735
  }
@@ -3334,28 +3744,28 @@ function checkSampleAgainstChanges(changes, typeKey, sample) {
3334
3744
 
3335
3745
  // packages/ontology-sdk/dist/type-delta.js
3336
3746
  var NOT_COMPARED = /* @__PURE__ */ new Set(["typeCategory", "typeKey", "version"]);
3337
- function isRecord(value) {
3747
+ function isRecord2(value) {
3338
3748
  return typeof value === "object" && value !== null && !Array.isArray(value);
3339
3749
  }
3340
3750
  function isStringList(value) {
3341
3751
  return Array.isArray(value) && value.every((item) => typeof item === "string");
3342
3752
  }
3343
3753
  function isStructureView(value) {
3344
- if (!isRecord(value) || typeof value.key !== "string" || typeof value.label !== "string" || !isStringList(value.steps)) {
3754
+ if (!isRecord2(value) || typeof value.key !== "string" || typeof value.label !== "string" || !isStringList(value.steps)) {
3345
3755
  return false;
3346
3756
  }
3347
3757
  const { decoration } = value;
3348
- return decoration === void 0 || Array.isArray(decoration) && decoration.every((entry2) => isRecord(entry2) && typeof entry2.key === "string" && typeof entry2.label === "string");
3758
+ return decoration === void 0 || Array.isArray(decoration) && decoration.every((entry2) => isRecord2(entry2) && typeof entry2.key === "string" && typeof entry2.label === "string");
3349
3759
  }
3350
3760
  function isStructureDeclaration(value) {
3351
- if (!isRecord(value)) {
3761
+ if (!isRecord2(value)) {
3352
3762
  return false;
3353
3763
  }
3354
3764
  const { relationships, views } = value;
3355
3765
  return (relationships === void 0 || isStringList(relationships)) && (views === void 0 || Array.isArray(views) && views.every(isStructureView));
3356
3766
  }
3357
3767
  function recordOf(value, what) {
3358
- if (!isRecord(value)) {
3768
+ if (!isRecord2(value)) {
3359
3769
  throw new Error(`${what} is not an object`);
3360
3770
  }
3361
3771
  return value;
@@ -3412,7 +3822,8 @@ function edgeProspective(published) {
3412
3822
  propertyDefinitions: recordOf(published.propertyDefinitions, `${what} propertyDefinitions`),
3413
3823
  requiredPropertyKeys: stringListOf(published.requiredPropertyKeys, `${what} requiredPropertyKeys`),
3414
3824
  readRule: oneOf(published.readRule, RULES, `${what} readRule`),
3415
- writeRule: oneOf(published.writeRule, RULES, `${what} writeRule`)
3825
+ writeRule: oneOf(published.writeRule, RULES, `${what} writeRule`),
3826
+ ...published.review === void 0 || published.review === null ? {} : { review: published.review }
3416
3827
  };
3417
3828
  }
3418
3829
  function verbProspective(published) {
@@ -3444,7 +3855,7 @@ function sameValue(left, right) {
3444
3855
  if (Array.isArray(left) || Array.isArray(right)) {
3445
3856
  return Array.isArray(left) && Array.isArray(right) && left.length === right.length && left.every((item, index) => sameValue(item, right[index]));
3446
3857
  }
3447
- if (isRecord(left) && isRecord(right)) {
3858
+ if (isRecord2(left) && isRecord2(right)) {
3448
3859
  const leftKeys = Object.keys(left);
3449
3860
  return leftKeys.length === Object.keys(right).length && leftKeys.every((key) => Object.hasOwn(right, key) && sameValue(left[key], right[key]));
3450
3861
  }
@@ -3614,7 +4025,7 @@ function kindMembers(schema, root) {
3614
4025
  }
3615
4026
  return members;
3616
4027
  }
3617
- var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
4028
+ var isRecord3 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
3618
4029
  function resolveField(field, schemas, sent) {
3619
4030
  const [root, ...keys] = field.split(".");
3620
4031
  let schema;
@@ -3642,7 +4053,7 @@ function resolveField(field, schemas, sent) {
3642
4053
  if (discriminator2 !== void 0 && key === discriminator2) {
3643
4054
  return { allowedKinds: members2?.map((candidate) => candidate.kind) ?? [], discriminator: discriminator2 };
3644
4055
  }
3645
- const sentKind = discriminator2 !== void 0 && isRecord2(value) ? value[discriminator2] : void 0;
4056
+ const sentKind = discriminator2 !== void 0 && isRecord3(value) ? value[discriminator2] : void 0;
3646
4057
  const chosen = members2?.find((candidate) => candidate.kind === sentKind);
3647
4058
  if (chosen === void 0) {
3648
4059
  return null;
@@ -3661,14 +4072,14 @@ function resolveField(field, schemas, sent) {
3661
4072
  if (property !== void 0) {
3662
4073
  schema = property;
3663
4074
  } else if (typeof node2.additionalProperties === "object") {
3664
- if (isRecord2(value) && Object.keys(value).some((name) => name.includes("."))) {
4075
+ if (isRecord3(value) && Object.keys(value).some((name) => name.includes("."))) {
3665
4076
  return null;
3666
4077
  }
3667
4078
  schema = node2.additionalProperties;
3668
4079
  } else {
3669
4080
  return null;
3670
4081
  }
3671
- value = isRecord2(value) ? value[key] : void 0;
4082
+ value = isRecord3(value) ? value[key] : void 0;
3672
4083
  }
3673
4084
  if (schema === null) {
3674
4085
  return null;
@@ -3797,7 +4208,7 @@ function fieldLines(schema, root, indent) {
3797
4208
  return lines;
3798
4209
  }
3799
4210
  function withoutCorrelation(example) {
3800
- return isRecord2(example) ? Object.fromEntries(Object.entries(example).filter(([name]) => name !== CORRELATION_FIELD)) : example;
4211
+ return isRecord3(example) ? Object.fromEntries(Object.entries(example).filter(([name]) => name !== CORRELATION_FIELD)) : example;
3801
4212
  }
3802
4213
  function schemaHelpLines(entry2) {
3803
4214
  if (isBinaryRequestRoute(entry2.name)) {
@@ -4058,6 +4469,9 @@ var render = (outcome, json, scope, host) => {
4058
4469
  for (const violation of result.violations ?? []) {
4059
4470
  lines.push(`violation: ${violation.path.join(".")}; rule: ${violation.rule}`);
4060
4471
  }
4472
+ if (typeof result.linkId === "string") {
4473
+ lines.push(`link: ${result.linkId}`);
4474
+ }
4061
4475
  if (resultReference !== void 0) {
4062
4476
  lines.push(`reference: ${resultReference}`);
4063
4477
  }
@@ -4241,6 +4655,39 @@ import { join as join2 } from "node:path";
4241
4655
  import { realpathSync } from "node:fs";
4242
4656
  import { isAbsolute as isAbsolute2 } from "node:path";
4243
4657
 
4658
+ // packages/hosted-apps-sdk/dist/index.js
4659
+ var HOSTED_APPS_ROUTE_ENTRIES = routeEntriesOf("hosted-apps-sdk");
4660
+ var HOSTED_APPS_ROUTE_NAMES = Object.freeze([
4661
+ "createHostedApp",
4662
+ "readHostedBundle",
4663
+ "listHostedApps",
4664
+ "listHostedVersions",
4665
+ "revokeHostedApp",
4666
+ "revokeHostedVersion",
4667
+ "openHostedApp",
4668
+ "endHostedLaunch",
4669
+ "mintHostedAppToken",
4670
+ "setHostedOneWallSwitch",
4671
+ "readHostedOneWallSwitch",
4672
+ "grantHostedOneWall",
4673
+ "withdrawHostedOneWall",
4674
+ "listHostedOneWallGrants"
4675
+ ]);
4676
+ function entries6() {
4677
+ return HOSTED_APPS_ROUTE_NAMES.map((name) => ROUTES[name]);
4678
+ }
4679
+ function createHostedAppsClient(transport, origin, token) {
4680
+ return Object.freeze({
4681
+ ...createTypedClient(HOSTED_APPS_ROUTE_NAMES, entries6(), transport, origin, token),
4682
+ publishHostedVersion: (selector, file) => call(transport, origin, "publishHostedVersion", {
4683
+ selector,
4684
+ input: { name: file.appKey, body: (async function* () {
4685
+ yield file.bytes;
4686
+ })() }
4687
+ }, token, null)
4688
+ });
4689
+ }
4690
+
4244
4691
  // packages/cli/src/session-store.ts
4245
4692
  import { createHash, randomBytes } from "node:crypto";
4246
4693
  import { chmodSync, closeSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeSync } from "node:fs";
@@ -4573,6 +5020,7 @@ var buildClients = async (host, store, transport, streamTransport) => {
4573
5020
  admin: createAdminClient(transport, origin, token),
4574
5021
  agents: createAgentsClient(transport, origin, token),
4575
5022
  branches: createBranchesClient(transport, origin, token),
5023
+ hostedApps: createHostedAppsClient(transport, origin, token),
4576
5024
  objects: createObjectsTransportClient(transport, origin, token),
4577
5025
  organisations: {
4578
5026
  list: () => listOrganisations(transport, origin, token, { input: {} }),
@@ -5075,6 +5523,26 @@ var REFRESH_UNANSWERED_ADVICE = [
5075
5523
  "if the next command is refused, run `openeng login`"
5076
5524
  ].join(" ");
5077
5525
 
5526
+ // packages/cli/src/commands/object-display.ts
5527
+ function record(value) {
5528
+ return typeof value === "object" && value !== null && !Array.isArray(value);
5529
+ }
5530
+ function objectText(object, catalogue) {
5531
+ const type = catalogue.objects.find((candidate) => candidate.typeKey === object.typeKey);
5532
+ if (type === void 0 || !record(type.propertyDefinitions) || !record(object.properties)) {
5533
+ throw new Error("the object or its catalogue has no readable property definitions");
5534
+ }
5535
+ const definitions = type.propertyDefinitions;
5536
+ const properties = Object.fromEntries(Object.entries(object.properties).map(([key, envelope]) => {
5537
+ if (!record(envelope) || !("value" in envelope) || !Object.hasOwn(definitions, key)) {
5538
+ throw new Error(`the object property ${key} has no declared value shape`);
5539
+ }
5540
+ const definition = definitions[key];
5541
+ return [key, typeof envelope.value === "number" && record(definition) && typeof definition.unit === "string" ? { ...envelope, value: displayPropertyValue(envelope.value, definition) } : envelope];
5542
+ }));
5543
+ return JSON.stringify({ ...object, properties }, null, 2);
5544
+ }
5545
+
5078
5546
  // packages/cli/src/generated/build.ts
5079
5547
  var ORGANISATION_BY_SUBJECT = {
5080
5548
  project: "required",
@@ -5198,8 +5666,19 @@ async function runGenerated(entry2, context) {
5198
5666
  }
5199
5667
  const settle2 = settleOf(entry2, key.key);
5200
5668
  let run2;
5669
+ let displayedObject;
5201
5670
  try {
5202
5671
  run2 = await runAuthenticated(context.host, context.deps, async (clients) => {
5672
+ if (entry2.name === "readObject" && !context.options.json) {
5673
+ const request3 = body.body;
5674
+ const answer2 = await clients.objects.readObject(request3);
5675
+ if ("refusal" in answer2 || answer2.replayed === true) return answer2;
5676
+ const catalogue = await clients.objects.readCatalogue({ selector: { projectId: request3.selector.projectId }, input: {} });
5677
+ if ("refusal" in catalogue) return answer2;
5678
+ if (catalogue.replayed === true) return catalogue;
5679
+ displayedObject = objectText(answer2.result, catalogue.result);
5680
+ return answer2;
5681
+ }
5203
5682
  const method = clientOf(clients, entry2.module)?.[entry2.name];
5204
5683
  if (typeof method === "function") {
5205
5684
  return await method(body.body, key.key);
@@ -5247,7 +5726,7 @@ async function runGenerated(entry2, context) {
5247
5726
  if (replayed) {
5248
5727
  context.note("the host answered a replay of an earlier request that carried this idempotency key");
5249
5728
  }
5250
- return outcomeOfEnvelope(replayed ? withoutReplay(answer) : answer, settle2, (result) => JSON.stringify(result, null, 2), {
5729
+ return outcomeOfEnvelope(replayed ? withoutReplay(answer) : answer, settle2, (result) => displayedObject === void 0 ? JSON.stringify(result, null, 2) : displayedObject, {
5251
5730
  command: `openeng ${entry2.module} ${entry2.name}`,
5252
5731
  schemas: schemasOf(entry2),
5253
5732
  sent: body.body
@@ -5263,8 +5742,8 @@ function generatedCommandOf(entry2) {
5263
5742
  run: (context) => runGenerated(entry2, context)
5264
5743
  };
5265
5744
  }
5266
- function generatedCommandsOf(entries6) {
5267
- const commands = entries6.filter((entry2) => !entry2.carriesCredential).map(generatedCommandOf);
5745
+ function generatedCommandsOf(entries7) {
5746
+ const commands = entries7.filter((entry2) => !entry2.carriesCredential).map(generatedCommandOf);
5268
5747
  const seen = /* @__PURE__ */ new Set();
5269
5748
  for (const command of commands) {
5270
5749
  const words = command.words.join(" ");
@@ -10228,8 +10707,8 @@ function canonicalJson2(value) {
10228
10707
  return `[${value.map((item) => canonicalJson2(item)).join(",")}]`;
10229
10708
  }
10230
10709
  if (typeof value === "object" && value !== null) {
10231
- const entries6 = Object.entries(value).filter(([, member]) => member !== void 0).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
10232
- return `{${entries6.map(([key, member]) => `${JSON.stringify(key)}:${canonicalJson2(member)}`).join(",")}}`;
10710
+ const entries7 = Object.entries(value).filter(([, member]) => member !== void 0).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
10711
+ return `{${entries7.map(([key, member]) => `${JSON.stringify(key)}:${canonicalJson2(member)}`).join(",")}}`;
10233
10712
  }
10234
10713
  return JSON.stringify(value);
10235
10714
  }
@@ -10690,11 +11169,11 @@ var connectorRun = {
10690
11169
  return run2.ok ? outcomeOfEnvelope(run2.answer, settle2, (started) => `started run ${started.runId}: read it with openeng connector runs ${connectionId}`) : outcomeOfSessionFailure(run2.failure, settle2);
10691
11170
  }
10692
11171
  };
10693
- var runText = (record) => {
10694
- const counts = record.counts === null ? "counts none" : `created ${String(record.counts.created)} updated ${String(record.counts.updated)} unchanged ${String(record.counts.unchanged)} withdrawn ${String(record.counts.withdrawn)} carried ${String(record.counts.carried)} overwritten ${String(record.counts.overwritten)}`;
10695
- const complete = record.complete === null ? "complete unknown" : record.complete ? "complete" : "incomplete";
10696
- const failure2 = record.failure === null ? "" : ` failure ${record.failure.kind}: ${record.failure.text}`;
10697
- return `${record.runId} ${record.state} started ${record.startedAt} finished ${record.finishedAt === null ? "-" : record.finishedAt} ${complete} ${counts}${failure2}`;
11172
+ var runText = (record2) => {
11173
+ const counts = record2.counts === null ? "counts none" : `created ${String(record2.counts.created)} updated ${String(record2.counts.updated)} unchanged ${String(record2.counts.unchanged)} withdrawn ${String(record2.counts.withdrawn)} carried ${String(record2.counts.carried)} overwritten ${String(record2.counts.overwritten)}`;
11174
+ const complete = record2.complete === null ? "complete unknown" : record2.complete ? "complete" : "incomplete";
11175
+ const failure2 = record2.failure === null ? "" : ` failure ${record2.failure.kind}: ${record2.failure.text}`;
11176
+ return `${record2.runId} ${record2.state} started ${record2.startedAt} finished ${record2.finishedAt === null ? "-" : record2.finishedAt} ${complete} ${counts}${failure2}`;
10698
11177
  };
10699
11178
  var connectorRuns = {
10700
11179
  organisation: "required",
@@ -11947,11 +12426,11 @@ function isOutcome(value) {
11947
12426
  function isSelector(value) {
11948
12427
  return "projectId" in value;
11949
12428
  }
11950
- function isRecord3(value) {
12429
+ function isRecord4(value) {
11951
12430
  return typeof value === "object" && value !== null && !Array.isArray(value);
11952
12431
  }
11953
12432
  function descriptor(value) {
11954
- return isRecord3(value) && typeof value.sha256 === "string" && typeof value.name === "string" && typeof value.mediaType === "string" && typeof value.bytes === "number";
12433
+ return isRecord4(value) && typeof value.sha256 === "string" && typeof value.name === "string" && typeof value.mediaType === "string" && typeof value.bytes === "number";
11955
12434
  }
11956
12435
  async function saveDescriptor(context, selector, objectId, property, file) {
11957
12436
  const bytes = new Uint8Array(readFileSync6(file));
@@ -11969,13 +12448,13 @@ async function saveDescriptor(context, selector, objectId, property, file) {
11969
12448
  if (catalogue.replayed === true) return { outcome: outcomeOfEnvelope(catalogue, settle2, (value2) => JSON.stringify(value2)) };
11970
12449
  const type = catalogue.result.objects.find((candidate) => candidate.typeKey === object.result.typeKey);
11971
12450
  if (type === void 0) return { outcome: invalid(`could not find the published type version for object ${objectId}`) };
11972
- if (!isRecord3(type.propertyDefinitions)) return { outcome: malformed2("propertyDefinitions") };
12451
+ if (!isRecord4(type.propertyDefinitions)) return { outcome: malformed2("propertyDefinitions") };
11973
12452
  const definitions = type.propertyDefinitions;
11974
12453
  if (definitions[property] === void 0) return { outcome: invalid(`property ${property} is not declared on ${type.typeKey}`) };
11975
- if (!isRecord3(object.result.properties)) return { outcome: malformed2("object properties") };
12454
+ if (!isRecord4(object.result.properties)) return { outcome: malformed2("object properties") };
11976
12455
  const props = object.result.properties;
11977
12456
  const current = props[property];
11978
- const previous = isRecord3(current) && "value" in current ? { value: current.value } : { absent: true };
12457
+ const previous = isRecord4(current) && "value" in current ? { value: current.value } : { absent: true };
11979
12458
  const saved = await clients.objects.mutate({ selector, input: {
11980
12459
  correlation: { kind: "mint" },
11981
12460
  operation: { kind: "update-object", objectId, typeVersion: type.version, changes: { [property]: { from: previous, to: { value: staged.result } } } }
@@ -12065,16 +12544,16 @@ var attachmentGet = {
12065
12544
  }
12066
12545
  };
12067
12546
  function attachmentProperties(object, propertyDefinitions) {
12068
- if (!isRecord3(propertyDefinitions)) return { ok: false, outcome: malformed2("propertyDefinitions") };
12069
- if (!isRecord3(object.properties)) return { ok: false, outcome: malformed2("object properties") };
12547
+ if (!isRecord4(propertyDefinitions)) return { ok: false, outcome: malformed2("propertyDefinitions") };
12548
+ if (!isRecord4(object.properties)) return { ok: false, outcome: malformed2("object properties") };
12070
12549
  const properties = object.properties;
12071
- const entries6 = Object.entries(propertyDefinitions).flatMap(([property, definition]) => {
12072
- if (!isRecord3(definition) || definition.kind !== "attachment") return [];
12550
+ const entries7 = Object.entries(propertyDefinitions).flatMap(([property, definition]) => {
12551
+ if (!isRecord4(definition) || definition.kind !== "attachment") return [];
12073
12552
  const stored = properties[property];
12074
- if (!isRecord3(stored) || !descriptor(stored.value)) return [];
12553
+ if (!isRecord4(stored) || !descriptor(stored.value)) return [];
12075
12554
  return [{ property, descriptor: stored.value }];
12076
12555
  });
12077
- return { ok: true, entries: entries6 };
12556
+ return { ok: true, entries: entries7 };
12078
12557
  }
12079
12558
  var attachmentList = {
12080
12559
  words: ["attachment", "list"],
@@ -12106,14 +12585,312 @@ var attachmentList = {
12106
12585
  if (type === void 0) return { outcome: invalid(`could not find the published type version for object ${objectId}`) };
12107
12586
  const listed = attachmentProperties(object.result, type.propertyDefinitions);
12108
12587
  if (!listed.ok) return { outcome: listed.outcome };
12109
- const entries6 = listed.entries;
12110
- const outcome = { kind: "success", value: entries6, text: entries6.map((entry2) => JSON.stringify(entry2)).join("\n") || "no attachments" };
12588
+ const entries7 = listed.entries;
12589
+ const outcome = { kind: "success", value: entries7, text: entries7.map((entry2) => JSON.stringify(entry2)).join("\n") || "no attachments" };
12111
12590
  return { outcome };
12112
12591
  });
12113
12592
  return run2.ok ? run2.answer.outcome : outcomeOfSessionFailure(run2.failure, settle2);
12114
12593
  }
12115
12594
  };
12116
12595
 
12596
+ // packages/cli/src/commands/links.ts
12597
+ import { randomUUID as randomUUID6 } from "node:crypto";
12598
+ function boundText(bound) {
12599
+ const name = `${bound.property}${bound.index === void 0 ? "" : `[${bound.index}]`}`;
12600
+ const label = `${name}${bound.quantity === void 0 ? "" : ` quantity ${bound.quantity}`}${"over" in bound ? ` ${bound.over} ${bound.coverage}` : ""}`;
12601
+ switch (bound.state) {
12602
+ case "in":
12603
+ case "out": {
12604
+ const definition = { kind: "number", unit: bound.unit };
12605
+ return `${label}: ${bound.state}; ${displayPropertyValue(bound.value, definition)} ${bound.comparison} ${displayPropertyValue(bound.limit, definition)}` + (bound.tolerance === void 0 ? "" : `; tolerance ${displayPropertyValue(bound.tolerance, definition)}`);
12606
+ }
12607
+ case "no-value":
12608
+ return `${label}: no-value; missing ${bound.missing}${"propertyMissing" in bound ? `; property ${bound.propertyMissing}` : ""}`;
12609
+ case "not-visible":
12610
+ return `${label}: not-visible; hidden ${bound.hidden}`;
12611
+ case "unit-mismatch":
12612
+ return `${label}: unit-mismatch`;
12613
+ case "too-many-links":
12614
+ return `${label}: too-many-links`;
12615
+ }
12616
+ }
12617
+ function boundsText(bounds) {
12618
+ return "bounds" in bounds ? `${bounds.state}; ${bounds.bounds.map(boundText).join("; ")}` : bounds.state;
12619
+ }
12620
+ function statusText(answer) {
12621
+ return [
12622
+ `head: ${answer.head}`,
12623
+ ...answer.links.length === 0 ? ["no tracked links"] : answer.links.map((link2) => `${link2.linkId} (${link2.typeKey}) ${link2.upstream.projectId}/${link2.upstream.objectId} -> ${link2.downstream.projectId}/${link2.downstream.objectId}
12624
+ review: ${link2.review.state}${"upstreamVersion" in link2.review ? `; version ${link2.review.upstreamVersion}` : ""}
12625
+ bounds: ${boundsText(link2.bounds)}` + (link2.clearing === null ? "" : `
12626
+ cleared by ${link2.clearing.clearedBy} at ${link2.clearing.clearedAt}`)),
12627
+ ...answer.aggregates.map((bound) => `aggregate ${boundText(bound)}`)
12628
+ ].join("\n");
12629
+ }
12630
+ var linksStatus = {
12631
+ words: ["links", "status"],
12632
+ arguments: 1,
12633
+ organisation: "required",
12634
+ usage: "openeng links status <object> --project <id> --ref <ref>",
12635
+ help: [
12636
+ "openeng links status <object> --project <id> --ref <ref>",
12637
+ "does: reads review and bounds states, clearing attribution and upstream versions; bounds show units",
12638
+ "example: openeng links status obj_abc --project proj_abc --ref main",
12639
+ "output: head, tracked links and aggregate bounds; --json returns the complete answer"
12640
+ ],
12641
+ run: async ({ host, deps, options, args }) => {
12642
+ const { project, ref } = options;
12643
+ const [objectId] = args;
12644
+ if (project === void 0 || ref === void 0 || objectId === void 0 || objectId.length === 0) {
12645
+ return { kind: "client-refusal", message: "links status needs <object>, --project <id> and --ref <ref>" };
12646
+ }
12647
+ const settle2 = `openeng links status ${objectId} --project ${project} --ref ${ref}`;
12648
+ const run2 = await runAuthenticated(host, deps, (clients) => clients.objects.readLinkStatus({
12649
+ selector: { projectId: project, ref },
12650
+ input: { objectId }
12651
+ }));
12652
+ return run2.ok ? outcomeOfEnvelope(run2.answer, settle2, statusText) : outcomeOfSessionFailure(run2.failure, settle2);
12653
+ }
12654
+ };
12655
+ var linksClear = {
12656
+ words: ["links", "clear"],
12657
+ arguments: "rest",
12658
+ organisation: "required",
12659
+ usage: "openeng links clear <link>... --version <v>... --project <id> --ref <ref>",
12660
+ help: [
12661
+ "openeng links clear <link>... --version <v>... --project <id> --ref <ref>",
12662
+ "does: clears 1 to 100 links atomically; supply one upstream version from links status per link, in the same order",
12663
+ "example: openeng links clear edg_abc --version <upstream-version> --project proj_abc --ref main",
12664
+ "output: the clearing commit and correlation; upstream-changed requires reading the status and reviewing again"
12665
+ ],
12666
+ run: async ({ host, deps, options, args }) => {
12667
+ const { project, ref, upstreamVersions } = options;
12668
+ if (project === void 0 || ref === void 0 || upstreamVersions === void 0 || args.length < 1 || args.length > MAX_CLEAR_ENTRIES || upstreamVersions.length !== args.length || args.some((link2) => link2.length === 0) || upstreamVersions.some((version) => version.length === 0)) {
12669
+ return { kind: "client-refusal", message: "links clear needs 1 to 100 links, one --version per link, --project <id> and --ref <ref>" };
12670
+ }
12671
+ const entries7 = args.map((linkId, index) => {
12672
+ const upstreamVersion = upstreamVersions[index];
12673
+ if (upstreamVersion === void 0) throw new Error("a clearing entry has no upstream version");
12674
+ return { linkId, upstreamVersion };
12675
+ });
12676
+ const settle2 = `read link status on ref ${ref} or recover the clearing by its correlation id`;
12677
+ const run2 = await runAuthenticated(host, deps, (clients) => clients.objects.clearLinks({
12678
+ selector: { projectId: project },
12679
+ input: { correlation: { kind: "mint" }, ref, entries: entries7 }
12680
+ }, randomUUID6()));
12681
+ if (!run2.ok) return outcomeOfSessionFailure(run2.failure, settle2);
12682
+ if ("result" in run2.answer && run2.answer.result.kind === "unknown") {
12683
+ return { kind: "unknown-outcome-no-answer", message: `clearing outcome unknown; correlation ${run2.answer.result.correlationId}`, settle: settle2 };
12684
+ }
12685
+ return outcomeOfEnvelope(run2.answer, settle2, (answer) => {
12686
+ if (answer.kind !== "succeeded") throw new Error("a clearing success was required");
12687
+ return `cleared ${entries7.length} ${entries7.length === 1 ? "link" : "links"}; ${"hash" in answer.commit ? `commit ${answer.commit.hash}` : "no change"}; correlation ${answer.correlationId}`;
12688
+ });
12689
+ }
12690
+ };
12691
+
12692
+ // packages/cli/src/commands/branches.ts
12693
+ function impactText(answer) {
12694
+ return [
12695
+ `base head: ${answer.baseHead}
12696
+ head: ${answer.head}
12697
+ withheld: ${answer.withheld}`,
12698
+ ...answer.reviewChanges.map((change) => `review ${change.linkId}: ${change.base.state} -> ${change.head.state}`),
12699
+ ...answer.boundsChanges.map((change) => `bounds ${change.linkId}: ${boundsText(change.base)} -> ${boundsText(change.head)}`),
12700
+ ...answer.aggregateChanges.map((change) => `aggregate ${change.owner.projectId}/${change.owner.objectId} ${change.property}${change.index === void 0 ? "" : `[${change.index}]`}: ${"over" in change.base ? boundText(change.base) : change.base.state} -> ${"over" in change.head ? boundText(change.head) : change.head.state}`),
12701
+ ...answer.reach.map((entry2) => `reach ${entry2.depth}: ${entry2.address.projectId}/${entry2.address.objectId} via ${entry2.linkId}`),
12702
+ ...answer.hidden.map((entry2) => `hidden ${entry2.depth}: ${entry2.count}`)
12703
+ ].join("\n");
12704
+ }
12705
+ var branchesImpact = {
12706
+ words: ["branches", "impact"],
12707
+ arguments: 1,
12708
+ organisation: "required",
12709
+ usage: "openeng branches impact <ref> --base <base> --project <id>",
12710
+ help: [
12711
+ "openeng branches impact <ref> --base <base> --project <id>",
12712
+ "does: reads review and bounds changes against the merge base, downstream reach and hidden counts",
12713
+ "example: openeng branches impact proj_abc/work --base main --project proj_abc",
12714
+ "output: both heads, changes with units, reach and hidden counts; --json returns the complete answer"
12715
+ ],
12716
+ run: async ({ host, deps, options, args }) => {
12717
+ const { project, base } = options;
12718
+ const [ref] = args;
12719
+ if (project === void 0 || base === void 0 || ref === void 0 || ref.length === 0) {
12720
+ return { kind: "client-refusal", message: "branches impact needs <ref>, --base <base> and --project <id>" };
12721
+ }
12722
+ const settle2 = `openeng branches impact ${ref} --base ${base} --project ${project}`;
12723
+ const run2 = await runAuthenticated(host, deps, (clients) => clients.branches.readChangeImpact({
12724
+ selector: { projectId: project },
12725
+ input: { ref, base }
12726
+ }));
12727
+ return run2.ok ? outcomeOfEnvelope(run2.answer, settle2, impactText) : outcomeOfSessionFailure(run2.failure, settle2);
12728
+ }
12729
+ };
12730
+
12731
+ // packages/cli/src/commands/hosted-app.ts
12732
+ import { readFileSync as readFileSync7 } from "node:fs";
12733
+ var ONE_WALL_WARNING = "This app runs without the WebRTC wall. Its code can send anything a viewer of the app can read to any host on the internet, over WebRTC or through DNS lookups, and nothing reports it. It runs with each viewer's authority. Review the current code, and every later version, for WebRTC use, DNS hints and other exploits before people open it. A coding agent can do the review. Withdrawing this permission stops the app's next request, but not data it has already read.";
12734
+ var ONE_WALL_UNKNOWN = "This account cannot read whether the app may send data out of the browser. An administrator can check its one-wall permission.";
12735
+ var usagePublish = "openeng hosted-app publish <bundle> --project <id> --key <app key>";
12736
+ var usageList2 = "openeng hosted-app list --project <id>";
12737
+ var usageVersions = "openeng hosted-app versions <app key> --project <id>";
12738
+ var usageRevoke = "openeng hosted-app revoke <app key | app id | version id> --project <id>";
12739
+ var invalid2 = (message) => ({ kind: "client-refusal", message });
12740
+ function projectOf(context, name) {
12741
+ const { project } = context.options;
12742
+ return project === void 0 || project === "" ? invalid2(`openeng hosted-app ${name} needs --project <id>`) : project;
12743
+ }
12744
+ function argumentOf(context, usage) {
12745
+ const [first, ...rest] = context.args;
12746
+ return first === void 0 || first === "" || rest.length > 0 ? invalid2(`usage: ${usage}`) : first;
12747
+ }
12748
+ function isOutcome2(value) {
12749
+ return typeof value !== "string";
12750
+ }
12751
+ var appLine = (app) => `${app.key} ${app.appId} ${app.state} created ${app.createdAt} by ${app.createdBy}`;
12752
+ var versionLine = (version) => `${version.versionId} ${version.state} sha256 ${version.bundleSha256} ${String(version.size)} bytes published ${version.publishedAt} by ${version.publishedBy}`;
12753
+ async function appOfKey(clients, projectId, key, settle2) {
12754
+ const listed = await clients.hostedApps.listHostedApps({ selector: { projectId }, input: {} });
12755
+ if ("refusal" in listed || listed.replayed === true) return { outcome: outcomeOfEnvelope(listed, settle2, () => "") };
12756
+ const app = listed.result.apps.find((candidate) => candidate.key === key);
12757
+ return app === void 0 ? { outcome: invalid2(`project ${projectId} has no hosted app with key ${key}`) } : { app };
12758
+ }
12759
+ var hostedAppPublish = {
12760
+ words: ["hosted-app", "publish"],
12761
+ arguments: 1,
12762
+ organisation: "required",
12763
+ usage: usagePublish,
12764
+ help: [
12765
+ usagePublish,
12766
+ "does: publishes a bundle file as the next version of the project's hosted app under the key, creating the app when the project has none under that key",
12767
+ "example: openeng hosted-app publish ./dist/app.js --project proj_abc --key rover-dashboard",
12768
+ "output: the version id, its SHA-256 and its size; for an app that holds the one-wall permission, the one-wall warning as well"
12769
+ ],
12770
+ run: async (context) => {
12771
+ const project = projectOf(context, "publish");
12772
+ if (isOutcome2(project)) return project;
12773
+ const file = argumentOf(context, usagePublish);
12774
+ if (isOutcome2(file)) return file;
12775
+ const key = context.options.key;
12776
+ if (key === void 0 || key === "") return invalid2(`openeng hosted-app publish needs --key <app key>; usage: ${usagePublish}`);
12777
+ const bytes = new Uint8Array(readFileSync7(file));
12778
+ const settle2 = `openeng hosted-app versions ${key} --project ${project}, which only reads; publish again only if the version is absent`;
12779
+ const run2 = await runAuthenticated(context.host, context.deps, async (clients) => {
12780
+ const found = await appOfKey(clients, project, key, settle2);
12781
+ let appId;
12782
+ if ("app" in found) {
12783
+ appId = found.app.appId;
12784
+ } else if (found.outcome.kind === "client-refusal") {
12785
+ const created = await clients.hostedApps.createHostedApp({ selector: { projectId: project }, input: { key } });
12786
+ if ("refusal" in created || created.replayed === true) return { outcome: outcomeOfEnvelope(created, settle2, () => "") };
12787
+ appId = created.result.appId;
12788
+ } else {
12789
+ return { outcome: found.outcome };
12790
+ }
12791
+ const published = await clients.hostedApps.publishHostedVersion({ projectId: project }, { appKey: key, bytes });
12792
+ if ("refusal" in published || published.replayed === true) return { outcome: outcomeOfEnvelope(published, settle2, () => "") };
12793
+ const grants = await clients.hostedApps.listHostedOneWallGrants({ input: {} });
12794
+ const unreadable = "refusal" in grants && (grants.refusal.kind === "not-found" || grants.refusal.kind === "refused" && grants.refusal.rule === "not-permitted");
12795
+ if (!unreadable && ("refusal" in grants || grants.replayed === true)) return { outcome: outcomeOfEnvelope(grants, settle2, () => "") };
12796
+ const oneWall = "result" in grants ? grants.result.grants.some((grant) => grant.appId === appId) : "unknown";
12797
+ const notes = oneWall === true ? [ONE_WALL_WARNING] : oneWall === "unknown" ? [ONE_WALL_UNKNOWN] : [];
12798
+ const text = (version) => [`published ${version.versionId} of ${key} sha256 ${version.bundleSha256} ${String(version.size)} bytes`, ...notes].join("\n");
12799
+ const outcome = outcomeOfEnvelope(published, settle2, text);
12800
+ if (outcome.kind !== "success") return { outcome };
12801
+ return {
12802
+ outcome: {
12803
+ ...outcome,
12804
+ value: {
12805
+ ...outcome.value,
12806
+ oneWall,
12807
+ ...oneWall === false ? {} : { warning: oneWall === true ? ONE_WALL_WARNING : ONE_WALL_UNKNOWN }
12808
+ }
12809
+ }
12810
+ };
12811
+ });
12812
+ return run2.ok ? run2.answer.outcome : outcomeOfSessionFailure(run2.failure, settle2);
12813
+ }
12814
+ };
12815
+ var hostedAppList = {
12816
+ words: ["hosted-app", "list"],
12817
+ organisation: "required",
12818
+ usage: usageList2,
12819
+ help: [
12820
+ usageList2,
12821
+ "does: lists the hosted apps of the project",
12822
+ "example: openeng hosted-app list --project proj_abc",
12823
+ "output: one line per app: key, id, state, creation time and creator"
12824
+ ],
12825
+ run: async (context) => {
12826
+ const project = projectOf(context, "list");
12827
+ if (isOutcome2(project)) return project;
12828
+ const settle2 = "repeat openeng hosted-app list, which only reads";
12829
+ const run2 = await runAuthenticated(context.host, context.deps, (clients) => clients.hostedApps.listHostedApps({ selector: { projectId: project }, input: {} }));
12830
+ return run2.ok ? outcomeOfEnvelope(run2.answer, settle2, (listed) => listed.apps.length === 0 ? "no hosted apps" : listed.apps.map(appLine).join("\n")) : outcomeOfSessionFailure(run2.failure, settle2);
12831
+ }
12832
+ };
12833
+ var hostedAppVersions = {
12834
+ words: ["hosted-app", "versions"],
12835
+ arguments: 1,
12836
+ organisation: "required",
12837
+ usage: usageVersions,
12838
+ help: [
12839
+ usageVersions,
12840
+ "does: lists the versions of the project's hosted app under the key, newest first",
12841
+ "example: openeng hosted-app versions rover-dashboard --project proj_abc",
12842
+ "output: one line per version: id, state, SHA-256, size, publication time and publisher"
12843
+ ],
12844
+ run: async (context) => {
12845
+ const project = projectOf(context, "versions");
12846
+ if (isOutcome2(project)) return project;
12847
+ const key = argumentOf(context, usageVersions);
12848
+ if (isOutcome2(key)) return key;
12849
+ const settle2 = `repeat ${usageVersions}, which only reads`;
12850
+ const run2 = await runAuthenticated(context.host, context.deps, async (clients) => {
12851
+ const found = await appOfKey(clients, project, key, settle2);
12852
+ if ("outcome" in found) return { outcome: found.outcome };
12853
+ const listed = await clients.hostedApps.listHostedVersions({ selector: { projectId: project }, input: { appId: found.app.appId } });
12854
+ return { outcome: outcomeOfEnvelope(listed, settle2, (result) => result.versions.length === 0 ? "no versions" : result.versions.map(versionLine).join("\n")) };
12855
+ });
12856
+ return run2.ok ? run2.answer.outcome : outcomeOfSessionFailure(run2.failure, settle2);
12857
+ }
12858
+ };
12859
+ var hostedAppRevoke = {
12860
+ words: ["hosted-app", "revoke"],
12861
+ arguments: 1,
12862
+ organisation: "required",
12863
+ usage: usageRevoke,
12864
+ help: [
12865
+ usageRevoke,
12866
+ "does: revokes one version (an argument starting hav_) or the whole app (its key or app_ id); the next call under any launch of it is refused",
12867
+ "example: openeng hosted-app revoke hav_abc... --project proj_abc",
12868
+ "output: one line naming what was revoked"
12869
+ ],
12870
+ run: async (context) => {
12871
+ const project = projectOf(context, "revoke");
12872
+ if (isOutcome2(project)) return project;
12873
+ const target = argumentOf(context, usageRevoke);
12874
+ if (isOutcome2(target)) return target;
12875
+ const settle2 = `repeat openeng hosted-app list --project ${project}, then revoke again only if the app or version is still live`;
12876
+ const run2 = await runAuthenticated(context.host, context.deps, async (clients) => {
12877
+ if (target.startsWith("hav_")) {
12878
+ const revoked2 = await clients.hostedApps.revokeHostedVersion({ selector: { projectId: project }, input: { versionId: target } });
12879
+ return { outcome: outcomeOfEnvelope(revoked2, settle2, (result) => `revoked version ${result.versionId}`) };
12880
+ }
12881
+ if (target.startsWith("app_")) {
12882
+ const revoked2 = await clients.hostedApps.revokeHostedApp({ selector: { projectId: project }, input: { appId: target } });
12883
+ return { outcome: outcomeOfEnvelope(revoked2, settle2, (result) => `revoked app ${target} (${result.appId})`) };
12884
+ }
12885
+ const found = await appOfKey(clients, project, target, settle2);
12886
+ if ("outcome" in found) return { outcome: found.outcome };
12887
+ const revoked = await clients.hostedApps.revokeHostedApp({ selector: { projectId: project }, input: { appId: found.app.appId } });
12888
+ return { outcome: outcomeOfEnvelope(revoked, settle2, (result) => `revoked app ${target} (${result.appId})`) };
12889
+ });
12890
+ return run2.ok ? run2.answer.outcome : outcomeOfSessionFailure(run2.failure, settle2);
12891
+ }
12892
+ };
12893
+
12117
12894
  // packages/cli/src/commands/public.ts
12118
12895
  var loginCommand = {
12119
12896
  words: ["login"],
@@ -12191,6 +12968,13 @@ var PUBLIC_HAND_WRITTEN_COMMANDS = [
12191
12968
  attachmentAdd,
12192
12969
  attachmentGet,
12193
12970
  attachmentList,
12971
+ linksStatus,
12972
+ linksClear,
12973
+ branchesImpact,
12974
+ hostedAppPublish,
12975
+ hostedAppList,
12976
+ hostedAppVersions,
12977
+ hostedAppRevoke,
12194
12978
  typesList,
12195
12979
  typesExport,
12196
12980
  typesDraftOpen,
@@ -12221,7 +13005,7 @@ var PUBLIC_COMMANDS = [
12221
13005
 
12222
13006
  // packages/cli/src/main.ts
12223
13007
  import { spawn } from "node:child_process";
12224
- import { readFileSync as readFileSync8 } from "node:fs";
13008
+ import { readFileSync as readFileSync9 } from "node:fs";
12225
13009
  import { homedir } from "node:os";
12226
13010
  import { parseArgs } from "node:util";
12227
13011
 
@@ -12242,6 +13026,7 @@ var CLI_OPTIONS = {
12242
13026
  consequence: { type: "string" },
12243
13027
  "rule-id": { type: "string" },
12244
13028
  ref: { type: "string" },
13029
+ base: { type: "string" },
12245
13030
  name: { type: "string" },
12246
13031
  "change-set": { type: "string" },
12247
13032
  revision: { type: "string" },
@@ -12262,9 +13047,11 @@ var CLI_OPTIONS = {
12262
13047
  owner: { type: "string" },
12263
13048
  label: { type: "string" },
12264
13049
  out: { type: "string" },
13050
+ key: { type: "string" },
12265
13051
  help: { type: "boolean", short: "h" },
12266
13052
  version: { type: "boolean" }
12267
13053
  };
13054
+ var APP_KEY_FORM = /^[a-z0-9][a-z0-9-]{0,62}$/;
12268
13055
 
12269
13056
  // packages/cli/src/cli-version.ts
12270
13057
  var PATCH_VERSION = 0;
@@ -12284,8 +13071,8 @@ var readEnvironment = () => Object.freeze({
12284
13071
  var createTransport = (host) => host.kind === "unix" ? createHostFetch(host.socketPath) : createHttpsTransport(host.origin);
12285
13072
 
12286
13073
  // packages/cli/src/update-check.ts
12287
- import { randomUUID as randomUUID6 } from "node:crypto";
12288
- import { existsSync, mkdirSync as mkdirSync3, readFileSync as readFileSync7, renameSync as renameSync2, unlinkSync as unlinkSync3, writeFileSync as writeFileSync2 } from "node:fs";
13074
+ import { randomUUID as randomUUID7 } from "node:crypto";
13075
+ import { existsSync, mkdirSync as mkdirSync3, readFileSync as readFileSync8, renameSync as renameSync2, unlinkSync as unlinkSync3, writeFileSync as writeFileSync2 } from "node:fs";
12289
13076
  import { join as join4 } from "node:path";
12290
13077
  function versionParts(value) {
12291
13078
  if (typeof value !== "string" || !/^\d+\.\d+\.\d+$/.test(value)) {
@@ -12298,7 +13085,7 @@ function readCache(file) {
12298
13085
  if (!existsSync(file)) {
12299
13086
  return null;
12300
13087
  }
12301
- const value = JSON.parse(readFileSync7(file, "utf8"));
13088
+ const value = JSON.parse(readFileSync8(file, "utf8"));
12302
13089
  if (typeof value !== "object" || value === null || !("latest" in value) || !("checkedAt" in value)) {
12303
13090
  return null;
12304
13091
  }
@@ -12329,7 +13116,7 @@ async function fetchLatest() {
12329
13116
  }
12330
13117
  function writeCache(directory, file, cache) {
12331
13118
  mkdirSync3(directory, { recursive: true, mode: 448 });
12332
- const temporary = `${file}.${randomUUID6()}.tmp`;
13119
+ const temporary = `${file}.${randomUUID7()}.tmp`;
12333
13120
  try {
12334
13121
  writeFileSync2(temporary, JSON.stringify(cache), { flag: "wx", mode: 384 });
12335
13122
  renameSync2(temporary, file);
@@ -12452,12 +13239,22 @@ var addressPrinter = (json) => (address) => {
12452
13239
  var promptSecret = createSecretPrompt(process.stdin, process.stderr);
12453
13240
  function parseInvocation(argv) {
12454
13241
  try {
13242
+ const preliminary = parseArgs({
13243
+ args: [...argv],
13244
+ allowPositionals: true,
13245
+ strict: false,
13246
+ options: CLI_OPTIONS
13247
+ });
13248
+ const clearing = preliminary.positionals[0] === "links" && preliminary.positionals[1] === "clear";
12455
13249
  const { values, positionals } = parseArgs({
12456
13250
  args: [...argv],
12457
13251
  allowPositionals: true,
12458
13252
  strict: true,
12459
- options: CLI_OPTIONS
13253
+ options: clearing ? { ...CLI_OPTIONS, version: { type: "string", multiple: true } } : CLI_OPTIONS
12460
13254
  });
13255
+ if (values.key !== void 0 && !APP_KEY_FORM.test(values.key)) {
13256
+ return { kind: "client-refusal", message: "--key takes an app key: lower-case letters, digits and hyphens, starting with a letter or digit, at most 63 characters" };
13257
+ }
12461
13258
  return {
12462
13259
  words: positionals,
12463
13260
  help: values.help === true,
@@ -12478,6 +13275,8 @@ function parseInvocation(argv) {
12478
13275
  consequence: values.consequence,
12479
13276
  ruleId: values["rule-id"],
12480
13277
  ref: values.ref,
13278
+ base: values.base,
13279
+ ...clearing && Array.isArray(values.version) ? { upstreamVersions: values.version } : {},
12481
13280
  name: values.name,
12482
13281
  changeSet: values["change-set"],
12483
13282
  revision: values.revision,
@@ -12497,7 +13296,8 @@ function parseInvocation(argv) {
12497
13296
  team: values.team,
12498
13297
  owner: values.owner,
12499
13298
  label: values.label,
12500
- out: values.out
13299
+ out: values.out,
13300
+ key: values.key
12501
13301
  }
12502
13302
  };
12503
13303
  } catch (error) {
@@ -12570,7 +13370,7 @@ ${usageLines(commands).join("\n")}` : unknownCommandMessage(commands, invocation
12570
13370
  deps,
12571
13371
  options,
12572
13372
  args: invocation.words.slice(command.words.length),
12573
- readStandardInput: () => readFileSync8(0, "utf8"),
13373
+ readStandardInput: () => readFileSync9(0, "utf8"),
12574
13374
  promptSecret,
12575
13375
  writeLine: (line) => process.stdout.write(`${line}
12576
13376
  `),