diff --git a/BACKLOG.md b/BACKLOG.md index 3316568f..d419f13f 100644 --- a/BACKLOG.md +++ b/BACKLOG.md @@ -5,6 +5,20 @@ Status: `open` · `in-progress` · `done` · `deferred` --- +## 🟡 Medium Priority — Re-test deletes when the new Egeria release lands + +**Status:** open, blocked on Egeria (its delete fixes are in progress upstream) +**Added:** 2026-10-13 + +Once the Egeria release with the delete fixes is published and the local quickstart is redeployed: + +1. **ISSUE-146:** re-test `remove_note`, which now posts to `metadata-expert/metadata-elements/{guid}/delete`, against test JournalEntry `8bec72e4-6da6-40a4-943e-d81e2173ec9b` on Erin's profile (`10dc7da9`). Try a plain delete first, then `deleteMethod: ARCHIVE` if it still fails with `OMAG-REPOSITORY-HANDLER-400-008`. Tell the egeria-workspaces-fs session before deleting anything on Erin's profile. Keep `fef83ed5` (owner's decision). +2. **Other delete issues** to re-check at the same time: ISSUE-117 (Memento cascade delete), ISSUE-125 (`deleteEnumDef`) and ISSUE-132 (`cascadedDelete` field name). + Also ISSUE-147, the valid-metadata clears: re-run the ISSUE-147 sequence (setup then clear for a value, a map name and a map value on a made-up property). Expect no 400-011 error after a successful clear, and expect the map value to actually be removed. +3. Update each `PYEGERIA_ISSUES.md` entry with the result, then do the held 6.2.3 release. The owner wants outstanding issues fixed before releasing. + +--- + ## 🟠 High Priority — Missing/absent catalog templates crash or silently proceed in `_async_get_template_guid_for_technology_type` callers — needs discussion **Status:** open (partial fix landed 2026-07-27) diff --git a/PYEGERIA_ISSUES.md b/PYEGERIA_ISSUES.md index 73879d70..9e27dce0 100644 --- a/PYEGERIA_ISSUES.md +++ b/PYEGERIA_ISSUES.md @@ -148,9 +148,10 @@ content was changed. The numbered section list above describes the # Open Issues -**At a glance** — 5 open pyegeria items, 7 awaiting re-test, 7 open Egeria Server issues. +**At a glance** — 7 open pyegeria items, 7 awaiting re-test, 7 open Egeria Server issues. **Open pyegeria items** +- ISSUE-146: Deleting a journal entry fails with OMAG-REPOSITORY-HANDLER-400-008, and pyegeria's `remove_note` reaches the delete only through the generic Asset Maker service - ISSUE-140: The executor charts any dict with two or more top-level numbers, regardless of the result's state - ISSUE-139: The executor renders no result envelope, and the Vega bar chart has no subtitle, so a not-established result has nowhere to say so on a chart - ISSUE-138: Analytic params are JSON-only, and only parameters named `mgr`/`ce`/`expert`/`client` are bound as clients, so a routine taking a reader object can't be named by its own dotted path @@ -167,6 +168,7 @@ content was changed. The numbered section list above describes the - ISSUE-38 (PY-18): `count_relationships_between_elements("Exception")` (276) disagrees with `ClassificationExplorer.get_relationships("Exception")` (55) **Open Egeria Server issues** +- ISSUE-147: Every valid-metadata clear call answers OPEN-METADATA-400-011 "not found", even after a successful delete; clear-map-value deletes nothing; clear-map-name leaves the map's value set behind - ISSUE-143: `includeOnlyRelationships: ["PersonRoleAppointment"]` returns no relationships for a Person, although the unfiltered read has its role appointments - ISSUE-130: The YAML secrets store's user directory caches a user forever, so editing an existing user needs a platform restart - ISSUE-128: Retention cannot be set on Egeria 6.2: the server registers the Jackson subtype as `RetentionProperties.class` (typo), and pyegeria only allows `RetentionClassificationProperties` @@ -186,6 +188,93 @@ into the entry now, so it isn't rediscovered from scratch later. --- +### ISSUE-146: Deleting a journal entry fails with OMAG-REPOSITORY-HANDLER-400-008, and pyegeria's `remove_note` reaches the delete only through the generic Asset Maker service + +**Layer:** Egeria Server (pyegeria clean-up) · **Status:** open · **Found:** 2026-10-13, reported by the egeria-workspaces-fs Resource Browser session from a live private-journal test. + +**What:** as erinoverview, `_async_remove_note` (`pyegeria/core/_server_client.py`) +was called on a JournalEntry created by `MyProfile.journal_my_activity`. It +failed with `OMAG-REPOSITORY-HANDLER-400-008` (`LOCAL_CANNOT_CHANGE_EXTERNAL`): +`deleteMetadataElementInStore` cannot modify Erin's UserIdentity (`ff983b64`), +which has Content Pack provenance ("Coco Pharmaceuticals Combination"). The +peer verified that nothing was removed. The entry keeps its `actionSource` and +`presentInNoteLogs` relationships, and Erin's Person still has 1 identity, +1 contact detail, 8 roles and 15 scopes. Test entry `fef83ed5` is still on +Erin's profile, waiting for the owner's decision. + +**The route is right:** in 6.2, notes are Actions. The type chain is +JournalEntry → Notification → Action → Process → Asset. Egeria main +(`af400039c2`) has no note, notification or action delete endpoint. +`AssetHandler.createNoteLogEntry` has no matching remove, and My Profile has +`journal-my-activity` with no matching remove. The only delete for an Action is +the generic `/assets/{assetGUID}/delete` (`AssetMakerResource`), which is what +`remove_note`'s `feedback-manager/assets/{guid}/delete` reaches, because +generic view services answer under any URL marker. Feedback Manager can only +remove a whole note log (`note-logs/{noteLogGUID}/remove`). + +**Why it fails (likely, not verified):** `AssetHandler.createAction` anchors the +entry to its action source, linked by `ActionRequester`. For a journal entry +that is the caller's profile. Deleting an anchored element updates its anchor, +and Erin's identity is owned by the content pack, so the local delete is +refused. If so, no journal entry for a content-pack user can be deleted. That +is for the Egeria team. + +**Anchor read (peer, read-only):** JournalEntry `fef83ed5` has anchorGUID +`10dc7da9`, Erin's Person profile. Its `actionSource` is ActionRequester → +Person `10dc7da9`, and `presentInNoteLogs` is AttachedNoteLogEntry → NoteLog +`f780511a` (MyJournal). No relationship from the entry reaches UserIdentity +`ff983b64`, which the error names. That identity is anchored to the same +Person. So the refusal comes from the delete touching the anchor's graph, most +likely the LatestChange update on the anchor, or a provenance check across +elements that share the anchor, not from a direct link. + +**Delete-path trace (2026-10-13, Egeria source, read-only):** the asset delete +(`AssetMakerResource.deleteAsset` → `AssetHandler.deleteAsset`) and the Metadata +Expert delete (`MetadataExpertResource` → `MetadataExpertRESTServices`) both call +`OpenMetadataClient.deleteMetadataElementInStore`, then the same +`MetadataElementHandler` → `OpenMetadataAPIGenericHandler.deleteBeanInRepository` +code. Neither does any extra checking, so switching routes cannot avoid 400-008. +The error is thrown only by `RepositoryErrorHandler.validateProvenance`, when +the delete removes an entity or relationship whose provenance is not +LOCAL_COHORT and the request carries no `externalSourceGUID`. That happens in +`removeRelationship` for each relationship on the note and in `removeEntity` +for the note itself. No anchor (LatestChange) update was found on the delete +path, which corrects "Why it fails" above. But the error names UserIdentity +`ff983b64`, which is not linked to the note, so the exact instance is still +unexplained. Untried options are to pass the content pack's metadata-collection +id as `externalSourceGUID`, or to use `deleteMethod: ARCHIVE`, which goes +through a different handler. + +**Note-privacy findings (egeria-workspaces-fs session, 2026-10-13, with owner +approval):** a second test JournalEntry, `8bec72e4-6da6-40a4-943e-d81e2173ec9b`, +was created on Erin's profile (`10dc7da9`) and cannot be deleted either until a +working delete exists. +- `POST my-profile/journal-my-activity` ignores `initialClassifications` and + stamps only ZoneMembership `['erinoverview']`. +- `POST classification-explorer/elements/{guid}/zone-membership` with + `['resource-explorer-private','erinoverview']` makes the entry private. + erinoverview can read it. peterprofile and garygeeke get 403 + `OPEN-METADATA-SECURITY-403-020` by GUID, and 0 hits from + `feedback-manager/assets/by-search-string`. +- The journal's NoteLog (`f780511a`) stays at `['erinoverview']`, so other + users can see that the log exists but not the hidden entries. +- The owner chose a temporary workaround for the Resource Locator: call + `add_zone_membership(['resource-explorer-private', user])` straight after + `journal-my-activity`. Review it once Egeria's journal fix lands. + +**pyegeria clean-up:** make the `remove_note` route explicit and describe it as +an Action delete in the docstring. The owner chose the Metadata Expert delete +(`metadata-expert/metadata-elements/{guid}/delete`) for now. Per the trace +above, this is a clarity change, not a fix for 400-008. + +**Re-test after Egeria's delete fixes are published:** the owner said +(2026-10-13) that Egeria is working on delete issues now. Once that work is +published, re-test `remove_note` on `8bec72e4` (plain delete, then `ARCHIVE` if +needed). Tell the egeria-workspaces-fs session before deleting anything on +Erin's profile. `fef83ed5` stays. + +--- + ### ISSUE-140: The executor charts any dict with two or more top-level numbers, regardless of the result's state **Layer:** pyegeria (format_set_executor) · **Status:** open, logged only (no fix without the owner's explicit go-ahead) · **Found:** 2026-10-12, reported by the Resource Explorer PR/CI session from trellis-analytics (trellis PR #622, `trellis_analytics/portal.py`), which works around it today. @@ -1082,6 +1171,36 @@ enough to track there too). --- +### ISSUE-147: Every valid-metadata clear call answers OPEN-METADATA-400-011 "not found", even after a successful delete; clear-map-value deletes nothing; clear-map-name leaves the map's value set behind + +**Layer:** Egeria Server (`ValidMetadataValueHandler`) · **Status:** open · **Found:** 2026-10-13. The first live run of the Valid Metadata commands showed it (the error text wasn't captured then). Re-tested the same day with the full responses captured. + +**Re-test:** run once on qs-view-server as erinoverview, with all four live sessions clearing it first. It used made-up properties `pyegeriaClearRetest` and `pyegeriaClearRetestMap` (typeName `Asset`) and called the SDK methods in `pyegeria/omvs/valid_metadata.py`. The Dr.Egeria `Clear Valid Metadata *` commands call the same methods (`md_processing/v2/reference_data.py:198-242`). + +| Call | Response | Actual effect | +|---|---|---| +| `clear_valid_metadata_value(alpha)`, set up just before | 400-011 "value alpha ... is not found" | **alpha removed** (gone from the list afterwards) | +| same call again (alpha already gone) | 400-011 | nothing to remove | +| `clear_valid_metadata_value(beta)` | 400-011 | **beta removed** | +| `clear_valid_metadata_map_value(mapOne, v1)` | 400-011 "value v1 ... is not found" | **nothing removed**: `get_valid_metadata_map_value` still returns v1 | +| `clear_valid_metadata_map_name(mapTwo)` | 400-011 | **mapTwo removed** | +| `clear_valid_metadata_map_name(mapOne)`, with v1 under it | 400-011 | the mapOne name value is removed, but the map's value set "mapOne" (holding v1) stays in `get_valid_metadata_values` | + +Request ids: `ec9052e7` and `3975182d` (alpha), `38759736` (beta), `475e68f1` (map value), `407c0e17` and `07886f29` (map names). pyegeria surfaces each one as `SERVER_ERROR_500` wrapping `relatedHTTPCode` 400 `InvalidParameterException`. + +**Cause (Egeria source, `af400039c2`, `frameworks/open-metadata-framework/.../handlers/ValidMetadataValueHandler.java`):** +1. **No `return` after the delete (lines ~541-680).** In all three `clear*` methods, `if (validValueGUID != null) deleteMetadataElementInStore(...)` is followed unconditionally by the audit log and `throw new InvalidParameterException(VALID_METADATA_MISSING ...)`. So every call throws, whether or not it deleted anything. The "not found" error is the method's normal exit. +2. **Map name dropped in `clearValidMetadataMapValue`.** It calls `getValidValueGUID(userId, typeName, propertyName, null, preferredValue)`, passing `null` where `mapName` belongs. It therefore searches for `v1` as a plain value of the property, finds nothing, and deletes nothing. +3. **`clearValidMetadataMapName` deletes only the name's own value.** It doesn't touch the per-map value set created by `setup-map-value` (the "Set of valid values for the mapOne map name ..." element) or its members. Whether that should cascade is Egeria's call. + +**Effect on Dr.Egeria:** `Clear Valid Metadata Value` and `Clear Valid Metadata Map Name` report failure although the clear worked. `Clear Valid Metadata Map Value` reports failure and really did fail. + +**Leftovers on qs-view-server:** the map value set "mapOne" with member v1 under `pyegeriaClearRetestMap`/`Asset`, plus whatever per-property container elements setup creates (`Egeria:ValidMetadataValue::pyegeriaClearRetest-Asset` and `...pyegeriaClearRetestMap-Asset`). These are test elements, not content-pack elements. RE's blueprint materializer treats `Egeria:ValidMetadataValue:` qualifiedNames as content-pack origin, but only for SolutionComponents, so they don't affect it. + +**pyegeria follow-on (not done, needs the owner's go-ahead):** Dr.Egeria's clear processor could treat 400-011 from `clear-value`/`clear-map-name` as success when a follow-up read confirms the value is gone. Otherwise, wait for the Egeria fix and re-test (see the BACKLOG.md delete re-test item). + +--- + ### ISSUE-143: `includeOnlyRelationships: ["PersonRoleAppointment"]` returns no relationships for a Person, although the unfiltered read has its role appointments **Layer:** Egeria Server (not pyegeria) · **Status:** open, not yet reported to the Egeria team · **Found:** 2026-10-13, reported by the egeria-workspaces-fs Resource Browser session; reproduced read-only the same day. @@ -1443,6 +1562,75 @@ Sorted newest-first by `ISSUE-#` (2026-10-12). ISSUE-91 has two entries --- +### ISSUE-145: Dr.Egeria sends `agreementType` and other `agreement*` fields that Egeria's `AgreementProperties` does not have + +**Layer:** Dr.Egeria · **Status:** fixed 2026-10-13 · **Found:** 2026-10-13, during the ISSUE-144 status-field sweep. + +**What:** `set_element_prop_body()` (`md_processing/md_processing_utils/common_md_utils.py`) +adds `agreementType`, `agreementStatus`, `agreementIdentifier`, +`agreementStatusIdentifier` and `agreementVersionIdentifier` for Agreement and +Digital Subscription bodies. In Egeria 6.2, `AgreementProperties` declares no +fields of its own; it extends `CollectionProperties`, and no `agreement*` +property exists anywhere in the Egeria source. Egeria silently ignores all five. +Only `Agreement Type` is defined in the Digital Products compact spec and used +by commands, so a written Agreement Type is lost. The other four have no +attribute definitions, so they are always None. + +**Decision needed:** where Agreement Type should go. `category` (from +`ReferenceableProperties`) is the likely home, or the attribute could be +retired. The four unused keys can be removed either way. + +**Fixed 2026-10-13 (owner's decision: retire Agreement Type, add Service Levels):** +the `Agreement Type` attribute is deleted from the Digital Products compact spec +(`Agreement Base` now has no attributes of its own; Purpose carries intent, per the +owner, since AgreementType is deprecated in Egeria). The five `agreement*` keys and +the also-undeclared `subscriberType`/`subscriberId` keys are removed from +`set_collection_manager_body()`. `Digital Subscription Base` gains a `Service Levels` +Dictionary attribute next to `Support Level`, matching `DigitalSubscriptionProperties` +(`supportLevel: String`, `serviceLevels: Map`); both are sent by +`set_element_prop_body()`. `dr_test_products_good.md` no longer uses Agreement Type or the +undefined `Subscription Level`. + +--- + +### ISSUE-144: Dr.Egeria's `Link Semantic Assignment` sent the assignment status as `status`, which Egeria silently ignores + +**Layer:** Dr.Egeria · **Status:** fixed 2026-10-13 · **Found:** 2026-10-13, reported by the egeria-workspaces-fs Resource Browser session from a live test. + +**What:** Egeria's `SemanticAssignmentProperties` holds the assignment status +in `termAssignmentStatus`, an enum (`TermAssignmentStatus`). `CurationLinkProcessor` +(`md_processing/v2/curation.py`) sent `"status"`. Egeria ignores unknown fields, +so a status written in a Dr.Egeria document never reached the server, and +read back empty. The sample body in the +`ClassificationExplorer._async_setup_semantic_assignment` docstring, which +comes from the `.http` file, had the same mistake. `SemanticAssignmentQueryProperties`, +used by `get_meanings` and `get_semantic_assignees`, really does use `status`. +Those samples are correct. The Resource Browser session confirmed live that +`termAssignmentStatus: "PROPOSED"` is stored and returned. + +**Fix:** the processor sends `termAssignmentStatus`. `Governance Status` +resolves to the governance `statusIdentifier` code (e.g. 3), which uses the +same codes as `TermAssignmentStatus`, so the value is converted to the enum +constant name (3 becomes `VALIDATED`). A display name is upper-cased. The two +docstring samples are corrected. Test: +`tests/micro-tests/test_issue_144_term_assignment_status.py`. + +**Sweep of other status fields Dr.Egeria sends, checked against the Egeria +Java DTOs (including superclasses):** correct as sent are +`DataValueAssignmentProperties.assignmentStatus`, `ProjectProperties.projectStatus`, +`CollectionMembershipProperties.membershipStatus`/`userDefinedStatus`, +`SolutionComponentProperties.userDefinedDeploymentStatus`, +`PromiseProperties.deploymentStatus`/`userDefinedDeploymentStatus`, +`NotificationSubscriberProperties.activityStatus`, +`UsedInContextProperties.termRelationshipStatus` (from +`GlossaryTermRelationshipProperties`), the governance classifications' +`statusIdentifier` (ISSUE-22), `contentStatus` on schema types and attributes +(inherited from `AuthoredReferenceableProperties`), and the element-level +`contentStatus`/`activityStatus`/`deploymentStatus` mapping (ISSUE-113). The +one further mismatch found, the `agreement*` fields, is logged as ISSUE-145. + +--- + ### ISSUE-142: Every Egeria error with relatedHTTPCode 401/403 was raised as "User not authorized", including 403 errors that are not about authorization **Layer:** Pyegeria · **Status:** fixed 2026-10-13 · **Found:** 2026-10-13, reported by the egeria-workspaces-fs Resource Browser session during a live work-list test. diff --git a/md_processing/data/compact_commands/commands_digital_products_compact.json b/md_processing/data/compact_commands/commands_digital_products_compact.json index 6bd3b9ea..51a769fb 100644 --- a/md_processing/data/compact_commands/commands_digital_products_compact.json +++ b/md_processing/data/compact_commands/commands_digital_products_compact.json @@ -2245,25 +2245,6 @@ "level": "Domain", "Journal Entry": "" }, - "Agreement Type": { - "variable_name": "agreement_type", - "inUpdate": true, - "attr_labels": "", - "examples": "", - "default_value": "", - "valid_values": [], - "existing_element": "", - "description": "Type of agreement (e.g., service level agreement, licensing agreement, data sharing agreement).", - "generated": false, - "style": "Simple", - "user_specified": true, - "unique": false, - "input_required": false, - "min_cardinality": 0, - "max_cardinality": 1, - "level": "Domain", - "Journal Entry": "" - }, "Contract Id": { "variable_name": "contract_id", "inUpdate": true, @@ -2780,6 +2761,24 @@ "max_cardinality": 1, "level": "Basic", "Journal Entry": "Added 2026-10-05 -- product-manager subscription types and ODCS/ODPS documents." + }, + "Service Levels": { + "variable_name": "service_levels", + "inUpdate": true, + "attr_labels": "", + "examples": "", + "default_value": "", + "valid_values": [], + "existing_element": "", + "description": "Service levels promised by the subscription, as name/value pairs (e.g., availability: 99.9%, responseTime: 4 hours).", + "generated": false, + "style": "Dictionary", + "user_specified": true, + "unique": false, + "input_required": false, + "min_cardinality": 0, + "max_cardinality": 1, + "level": "Basic" } }, "bundles": { @@ -2916,14 +2915,13 @@ }, "Agreement Base": { "inherits": "Collection Base", - "own_attributes": [ - "Agreement Type" - ] + "own_attributes": [] }, "Digital Subscription Base": { "inherits": "Agreement Base", "own_attributes": [ - "Support Level" + "Support Level", + "Service Levels" ] }, "Agreement Item": { diff --git a/md_processing/data/generated_format_sets.json b/md_processing/data/generated_format_sets.json index 952feae7..6983ae71 100644 --- a/md_processing/data/generated_format_sets.json +++ b/md_processing/data/generated_format_sets.json @@ -92838,14 +92838,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "Version Identifier", "key": "version_identifier", @@ -92937,14 +92929,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "Version Identifier", "key": "version_identifier", @@ -93081,14 +93065,6 @@ "format": false, "detail_spec": null, "valid_values": [] - }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] } ], "columns": [ @@ -93188,14 +93164,6 @@ "format": false, "detail_spec": null, "valid_values": [] - }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] } ] } @@ -93452,14 +93420,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "Classifications", "key": "classifications", @@ -93756,14 +93716,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "Classifications", "key": "classifications", @@ -94122,14 +94074,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "User Defined Status", "key": "user_defined_status", @@ -94434,14 +94378,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "User Defined Status", "key": "user_defined_status", @@ -96435,16 +96371,16 @@ "valid_values": [] }, { - "name": "Agreement Type", - "key": "agreement_type", + "name": "Support Level", + "key": "support_level", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Support Level", - "key": "support_level", + "name": "Service Levels", + "key": "service_levels", "value": null, "format": false, "detail_spec": null, @@ -96542,16 +96478,16 @@ "valid_values": [] }, { - "name": "Agreement Type", - "key": "agreement_type", + "name": "Support Level", + "key": "support_level", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Support Level", - "key": "support_level", + "name": "Service Levels", + "key": "service_levels", "value": null, "format": false, "detail_spec": null, @@ -96695,16 +96631,16 @@ "valid_values": [] }, { - "name": "Agreement Type", - "key": "agreement_type", + "name": "Support Level", + "key": "support_level", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Support Level", - "key": "support_level", + "name": "Service Levels", + "key": "service_levels", "value": null, "format": false, "detail_spec": null, @@ -96810,16 +96746,16 @@ "valid_values": [] }, { - "name": "Agreement Type", - "key": "agreement_type", + "name": "Support Level", + "key": "support_level", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Support Level", - "key": "support_level", + "name": "Service Levels", + "key": "service_levels", "value": null, "format": false, "detail_spec": null, @@ -97081,16 +97017,16 @@ "valid_values": [] }, { - "name": "Agreement Type", - "key": "agreement_type", + "name": "Support Level", + "key": "support_level", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Support Level", - "key": "support_level", + "name": "Service Levels", + "key": "service_levels", "value": null, "format": false, "detail_spec": null, @@ -97393,16 +97329,16 @@ "valid_values": [] }, { - "name": "Agreement Type", - "key": "agreement_type", + "name": "Support Level", + "key": "support_level", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Support Level", - "key": "support_level", + "name": "Service Levels", + "key": "service_levels", "value": null, "format": false, "detail_spec": null, @@ -97767,16 +97703,16 @@ "valid_values": [] }, { - "name": "Agreement Type", - "key": "agreement_type", + "name": "Support Level", + "key": "support_level", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Support Level", - "key": "support_level", + "name": "Service Levels", + "key": "service_levels", "value": null, "format": false, "detail_spec": null, @@ -98087,16 +98023,16 @@ "valid_values": [] }, { - "name": "Agreement Type", - "key": "agreement_type", + "name": "Support Level", + "key": "support_level", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Support Level", - "key": "support_level", + "name": "Service Levels", + "key": "service_levels", "value": null, "format": false, "detail_spec": null, @@ -98232,14 +98168,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "Version Identifier", "key": "version_identifier", @@ -98331,14 +98259,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "Version Identifier", "key": "version_identifier", @@ -98475,14 +98395,6 @@ "format": false, "detail_spec": null, "valid_values": [] - }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] } ], "columns": [ @@ -98582,14 +98494,6 @@ "format": false, "detail_spec": null, "valid_values": [] - }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] } ] } @@ -98848,14 +98752,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "Classifications", "key": "classifications", @@ -99152,14 +99048,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "Classifications", "key": "classifications", @@ -99518,14 +99406,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "User Defined Status", "key": "user_defined_status", @@ -99830,14 +99710,6 @@ "detail_spec": null, "valid_values": [] }, - { - "name": "Agreement Type", - "key": "agreement_type", - "value": null, - "format": false, - "detail_spec": null, - "valid_values": [] - }, { "name": "User Defined Status", "key": "user_defined_status", diff --git a/md_processing/md_processing_utils/common_md_utils.py b/md_processing/md_processing_utils/common_md_utils.py index b2effb01..695dbd45 100644 --- a/md_processing/md_processing_utils/common_md_utils.py +++ b/md_processing/md_processing_utils/common_md_utils.py @@ -438,22 +438,8 @@ def set_collection_manager_body(object_type: str, qualified_name: str, attribute "nextVersionDate": attributes.get('Next Version Date', {}).get('value', None), }) - # Handle Agreement and Digital Subscription - if "Agreement" in object_type or "Subscription" in object_type: - prop_bod.update({ - "agreementType": attributes.get('Agreement Type', {}).get('value', None), - "agreementStatus": attributes.get('Agreement Status', {}).get('value', None), - "agreementIdentifier": attributes.get('Agreement Identifier', {}).get('value', None), - "agreementStatusIdentifier": attributes.get('Agreement Status Identifier', {}).get('value', None), - "agreementVersionIdentifier": attributes.get('Agreement Version Identifier', {}).get('value', None), - }) - if "Subscription" in object_type: - prop_bod.update({ - "subscriberType": attributes.get('Subscriber Type', {}).get('value', None), - "subscriberId": attributes.get('Subscriber Id', {}).get('value', None), - "supportLevel": attributes.get('Support Level', {}).get('value', None), - "serviceLevels": attributes.get('Service Levels', {}).get('value', None), - }) + # Agreement: AgreementProperties declares no fields of its own (ISSUE-145). + # Digital Subscription's supportLevel/serviceLevels are set by set_element_prop_body(). # Handle Glossary if "Glossary" in object_type: diff --git a/md_processing/v2/curation.py b/md_processing/v2/curation.py index 80a9bdaf..2258654a 100644 --- a/md_processing/v2/curation.py +++ b/md_processing/v2/curation.py @@ -71,6 +71,21 @@ def _guid(attributes: dict, name: str): return attributes.get(name, {}).get("guid") +# TermAssignmentStatus (SemanticAssignment) shares its codes with the governance +# classification statusIdentifier, which is what "Governance Status" resolves to; +# but the relationship field is an enum, so send the constant name (ISSUE-144). +_TERM_ASSIGNMENT_STATUS = {0: "DISCOVERED", 1: "PROPOSED", 2: "IMPORTED", 3: "VALIDATED", + 4: "DEPRECATED", 5: "OBSOLETE", 99: "OTHER"} + + +def _term_assignment_status(value): + if value is None or value == "": + return None + if isinstance(value, int) or (isinstance(value, str) and value.strip().isdigit()): + return _TERM_ASSIGNMENT_STATUS.get(int(value)) + return str(value).strip().upper() + + def _audit_fields(attributes: dict) -> dict: return { "externalSourceGUID": attributes.get("External Source GUID", {}).get("guid"), @@ -414,7 +429,7 @@ async def apply_changes(self) -> str: "class": "SemanticAssignmentProperties", "expression": _v(attributes, "Semantic Expression"), "confidence": _v(attributes, "Confidence Level"), - "status": _v(attributes, "Governance Status"), + "termAssignmentStatus": _term_assignment_status(_v(attributes, "Governance Status")), "steward": _v(attributes, "Steward"), "source": _v(attributes, "Source"), } diff --git a/pyegeria/core/_server_client.py b/pyegeria/core/_server_client.py index 5421e262..0f8e3b28 100644 --- a/pyegeria/core/_server_client.py +++ b/pyegeria/core/_server_client.py @@ -3361,6 +3361,11 @@ async def _async_remove_note( All the relationships to referenceables are lost. + In Egeria 6.2 notes (including journal entries) are Actions, and no note + delete endpoint exists, so this uses the generic Metadata Expert element + delete until Egeria adds one (ISSUE-146). The URL is built from the + platform root because MetadataExpert overrides command_root. + Parameters ---------- @@ -3378,7 +3383,8 @@ async def _async_remove_note( ------ PyegeriaException """ - url = f"{self.command_root}feedback-manager/assets/{note_guid}/delete" + url = (f"{self.platform_url}/servers/{self.server_name}/api/open-metadata/" + f"metadata-expert/metadata-elements/{note_guid}/delete") await self._async_delete_element_request(url, body) @dynamic_catch diff --git a/pyegeria/omvs/classification_explorer.py b/pyegeria/omvs/classification_explorer.py index b7b222ce..42725805 100644 --- a/pyegeria/omvs/classification_explorer.py +++ b/pyegeria/omvs/classification_explorer.py @@ -12063,7 +12063,7 @@ async def _async_setup_semantic_assignment( "class": "SemanticAssignmentProperties", "expression" : "add value here", "description" : "add value here", - "status" : "VALIDATED", + "termAssignmentStatus" : "VALIDATED", "confidence" : 100, "createdBy" : "add value here", "steward" : "add value here", @@ -12130,7 +12130,7 @@ def setup_semantic_assignment( "class": "SemanticAssignmentProperties", "expression" : "add value here", "description" : "add value here", - "status" : "VALIDATED", + "termAssignmentStatus" : "VALIDATED", "confidence" : 100, "createdBy" : "add value here", "steward" : "add value here", diff --git a/pyegeria/view/base_report_formats.py b/pyegeria/view/base_report_formats.py index 907b97ff..ec1dc056 100644 --- a/pyegeria/view/base_report_formats.py +++ b/pyegeria/view/base_report_formats.py @@ -101,8 +101,8 @@ generated_format_sets = FormatSetDict({ 'Activity-Entry-DrE-Advanced': FormatSet(target_type='Activity Entry', heading='Activity-Entry-DrE-Advanced Attributes', description='Auto-generated format for Activity Entry (Create, Advanced).', family='Feedback', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Description', key='description'), Column(name='Situation', key='situation')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Qualified Name', key='qualified_name'), Column(name='Situation', key='situation')])]), 'Activity-Entry-DrE-Basic': FormatSet(target_type='Activity Entry', heading='Activity-Entry-DrE-Basic Attributes', description='Auto-generated format for Activity Entry (Create, Basic).', family='Feedback', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Situation', key='situation')]), Format(types=['ALL'], attributes=[Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Qualified Name', key='qualified_name'), Column(name='Situation', key='situation')])]), - 'Agreement-DrE-Advanced': FormatSet(target_type='Agreement', heading='Agreement-DrE-Advanced Attributes', description='Auto-generated format for Agreement (Create, Advanced).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'Agreement'})), - 'Agreement-DrE-Basic': FormatSet(target_type='Agreement', heading='Agreement-DrE-Basic Attributes', description='Auto-generated format for Agreement (Create, Basic).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'Agreement'})), + 'Agreement-DrE-Advanced': FormatSet(target_type='Agreement', heading='Agreement-DrE-Advanced Attributes', description='Auto-generated format for Agreement (Create, Advanced).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Purpose', key='purpose'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'Agreement'})), + 'Agreement-DrE-Basic': FormatSet(target_type='Agreement', heading='Agreement-DrE-Basic Attributes', description='Auto-generated format for Agreement (Create, Basic).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Purpose', key='purpose')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'Agreement'})), 'Blog-Entry-DrE-Advanced': FormatSet(target_type='Blog Entry', heading='Blog-Entry-DrE-Advanced Attributes', description='Auto-generated format for Blog Entry (Create, Advanced).', family='Feedback', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Description', key='description'), Column(name='Situation', key='situation')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Qualified Name', key='qualified_name'), Column(name='Situation', key='situation')])]), 'Blog-Entry-DrE-Basic': FormatSet(target_type='Blog Entry', heading='Blog-Entry-DrE-Basic Attributes', description='Auto-generated format for Blog Entry (Create, Basic).', family='Feedback', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Situation', key='situation')]), Format(types=['ALL'], attributes=[Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Qualified Name', key='qualified_name'), Column(name='Situation', key='situation')])]), 'Business-Imperative-DrE-Advanced': FormatSet(target_type='Business Imperative', heading='Business-Imperative-DrE-Advanced Attributes', description='Auto-generated format for Business Imperative (Create, Advanced).', family='Governance Officer', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Domain Identifier', key='domain_identifier', valid_values=['All Domains', 'Data', 'Privacy', 'Security', 'IT Infrastructure', 'Software Development', 'Corporate', 'Asset Management', 'Other']), Column(name='Implications', key='implications'), Column(name='Importance', key='importance'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Scope', key='scope'), Column(name='Summary', key='summary'), Column(name='Usage', key='usage'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Domain Identifier', key='domain_identifier', valid_values=['All Domains', 'Data', 'Privacy', 'Security', 'IT Infrastructure', 'Software Development', 'Corporate', 'Asset Management', 'Other']), Column(name='Implications', key='implications'), Column(name='Importance', key='importance'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Scope', key='scope'), Column(name='Summary', key='summary'), Column(name='Usage', key='usage'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='GovernanceOfficer.find_governance_definitions', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'BusinessImperative'})), @@ -147,8 +147,8 @@ 'Data-Lens-DrE-Basic': FormatSet(target_type='Data Lens', heading='Data-Lens-DrE-Basic Attributes', description='Auto-generated format for Data Lens (Create, Basic).', family='Governance Officer', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Domain Identifier', key='domain_identifier', valid_values=['All Domains', 'Data', 'Privacy', 'Security', 'IT Infrastructure', 'Software Development', 'Corporate', 'Asset Management', 'Other']), Column(name='Implications', key='implications'), Column(name='Importance', key='importance'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Scope', key='scope'), Column(name='Summary', key='summary'), Column(name='Usage', key='usage'), Column(name='Implementation Description', key='implementation_description'), Column(name='Max Height', key='max_height'), Column(name='Data Collection End Time', key='data_collection_end_time'), Column(name='Data Collection Start Time', key='data_collection_start_time'), Column(name='Max Latitude', key='max_latitude'), Column(name='Max Longitude', key='max_longitude'), Column(name='Min Height', key='min_height'), Column(name='Min Latitude', key='min_latitude'), Column(name='Min Longitude', key='min_longitude'), Column(name='Scope Elements', key='scope_elements'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Domain Identifier', key='domain_identifier', valid_values=['All Domains', 'Data', 'Privacy', 'Security', 'IT Infrastructure', 'Software Development', 'Corporate', 'Asset Management', 'Other']), Column(name='Implications', key='implications'), Column(name='Importance', key='importance'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Scope', key='scope'), Column(name='Summary', key='summary'), Column(name='Usage', key='usage'), Column(name='Implementation Description', key='implementation_description'), Column(name='Max Height', key='max_height'), Column(name='Data Collection End Time', key='data_collection_end_time'), Column(name='Data Collection Start Time', key='data_collection_start_time'), Column(name='Max Latitude', key='max_latitude'), Column(name='Max Longitude', key='max_longitude'), Column(name='Min Height', key='min_height'), Column(name='Min Latitude', key='min_latitude'), Column(name='Min Longitude', key='min_longitude'), Column(name='Scope Elements', key='scope_elements')])], action=ActionParameter(function='GovernanceOfficer.find_governance_definitions', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DataLens'})), 'Data-Processing-Purpose-DrE-Advanced': FormatSet(target_type='Data Processing Purpose', heading='Data-Processing-Purpose-DrE-Advanced Attributes', description='Auto-generated format for Data Processing Purpose (Create, Advanced).', family='Governance Officer', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Domain Identifier', key='domain_identifier', valid_values=['All Domains', 'Data', 'Privacy', 'Security', 'IT Infrastructure', 'Software Development', 'Corporate', 'Asset Management', 'Other']), Column(name='Implications', key='implications'), Column(name='Importance', key='importance'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Scope', key='scope'), Column(name='Summary', key='summary'), Column(name='Usage', key='usage'), Column(name='Implementation Description', key='implementation_description'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Domain Identifier', key='domain_identifier', valid_values=['All Domains', 'Data', 'Privacy', 'Security', 'IT Infrastructure', 'Software Development', 'Corporate', 'Asset Management', 'Other']), Column(name='Implications', key='implications'), Column(name='Importance', key='importance'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Scope', key='scope'), Column(name='Summary', key='summary'), Column(name='Usage', key='usage'), Column(name='Implementation Description', key='implementation_description')])], action=ActionParameter(function='GovernanceOfficer.find_governance_definitions', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DataProcessingPurpose'})), 'Data-Processing-Purpose-DrE-Basic': FormatSet(target_type='Data Processing Purpose', heading='Data-Processing-Purpose-DrE-Basic Attributes', description='Auto-generated format for Data Processing Purpose (Create, Basic).', family='Governance Officer', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Domain Identifier', key='domain_identifier', valid_values=['All Domains', 'Data', 'Privacy', 'Security', 'IT Infrastructure', 'Software Development', 'Corporate', 'Asset Management', 'Other']), Column(name='Implications', key='implications'), Column(name='Importance', key='importance'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Scope', key='scope'), Column(name='Summary', key='summary'), Column(name='Usage', key='usage'), Column(name='Implementation Description', key='implementation_description'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Domain Identifier', key='domain_identifier', valid_values=['All Domains', 'Data', 'Privacy', 'Security', 'IT Infrastructure', 'Software Development', 'Corporate', 'Asset Management', 'Other']), Column(name='Implications', key='implications'), Column(name='Importance', key='importance'), Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'), Column(name='Scope', key='scope'), Column(name='Summary', key='summary'), Column(name='Usage', key='usage'), Column(name='Implementation Description', key='implementation_description')])], action=ActionParameter(function='GovernanceOfficer.find_governance_definitions', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DataProcessingPurpose'})), - 'Data-Sharing-Agreement-DrE-Advanced': FormatSet(target_type='Data Sharing Agreement', heading='Data-Sharing-Agreement-DrE-Advanced Attributes', description='Auto-generated format for Data Sharing Agreement (Create, Advanced).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'classification_names': ['DataSharingAgreement']})), - 'Data-Sharing-Agreement-DrE-Basic': FormatSet(target_type='Data Sharing Agreement', heading='Data-Sharing-Agreement-DrE-Basic Attributes', description='Auto-generated format for Data Sharing Agreement (Create, Basic).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'classification_names': ['DataSharingAgreement']})), + 'Data-Sharing-Agreement-DrE-Advanced': FormatSet(target_type='Data Sharing Agreement', heading='Data-Sharing-Agreement-DrE-Advanced Attributes', description='Auto-generated format for Data Sharing Agreement (Create, Advanced).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Purpose', key='purpose'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'classification_names': ['DataSharingAgreement']})), + 'Data-Sharing-Agreement-DrE-Basic': FormatSet(target_type='Data Sharing Agreement', heading='Data-Sharing-Agreement-DrE-Basic Attributes', description='Auto-generated format for Data Sharing Agreement (Create, Basic).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Purpose', key='purpose')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'classification_names': ['DataSharingAgreement']})), 'Data-Sharing-Hub-DrE-Advanced': FormatSet(target_type='Data Sharing Hub', heading='Data-Sharing-Hub-DrE-Advanced Attributes', description='Auto-generated format for Data Sharing Hub (Create, Advanced).', family='Collections', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Purpose', key='purpose'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DataSharingHub'})), 'Data-Sharing-Hub-DrE-Basic': FormatSet(target_type='Data Sharing Hub', heading='Data-Sharing-Hub-DrE-Basic Attributes', description='Auto-generated format for Data Sharing Hub (Create, Basic).', family='Collections', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Purpose', key='purpose')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DataSharingHub'})), 'Data-Sharing-Request-DrE-Advanced': FormatSet(target_type='Data Sharing Request', heading='Data-Sharing-Request-DrE-Advanced Attributes', description='Auto-generated format for Data Sharing Request (Create, Advanced).', family='Collections', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Purpose', key='purpose'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DataSharingRequest'})), @@ -165,8 +165,8 @@ 'Digital-Product-Catalog-DrE-Basic': FormatSet(target_type='Digital Product Catalog', heading='Digital-Product-Catalog-DrE-Basic Attributes', description='Auto-generated format for Digital Product Catalog (Create, Basic).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Purpose', key='purpose')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'classification_names': ['DigitalProductCatalog']})), 'Digital-Product-DrE-Advanced': FormatSet(target_type='Digital Product', heading='Digital-Product-DrE-Advanced Attributes', description='Auto-generated format for Digital Product (Create, Advanced).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Current Version', key='current_version'), Column(name='Introduction Date', key='introduction_date'), Column(name='Maturity', key='maturity'), Column(name='Next Version Date', key='next_version_date'), Column(name='Product Name', key='product_name'), Column(name='Service Life', key='service_life'), Column(name='Withdrawal Date', key='withdrawal_date'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Purpose', key='purpose'), Column(name='Current Version', key='current_version'), Column(name='Introduction Date', key='introduction_date'), Column(name='Maturity', key='maturity'), Column(name='Next Version Date', key='next_version_date'), Column(name='Product Name', key='product_name'), Column(name='Service Life', key='service_life'), Column(name='Withdrawal Date', key='withdrawal_date'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DigitalProduct'})), 'Digital-Product-DrE-Basic': FormatSet(target_type='Digital Product', heading='Digital-Product-DrE-Basic Attributes', description='Auto-generated format for Digital Product (Create, Basic).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Current Version', key='current_version'), Column(name='Introduction Date', key='introduction_date'), Column(name='Maturity', key='maturity'), Column(name='Next Version Date', key='next_version_date'), Column(name='Product Name', key='product_name'), Column(name='Service Life', key='service_life'), Column(name='Withdrawal Date', key='withdrawal_date'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Purpose', key='purpose'), Column(name='Current Version', key='current_version'), Column(name='Introduction Date', key='introduction_date'), Column(name='Maturity', key='maturity'), Column(name='Next Version Date', key='next_version_date'), Column(name='Product Name', key='product_name'), Column(name='Service Life', key='service_life'), Column(name='Withdrawal Date', key='withdrawal_date')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DigitalProduct'})), - 'Digital-Subscription-DrE-Advanced': FormatSet(target_type='Digital Subscription', heading='Digital-Subscription-DrE-Advanced Attributes', description='Auto-generated format for Digital Subscription (Create, Advanced).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type'), Column(name='Support Level', key='support_level'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type'), Column(name='Support Level', key='support_level'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DigitalSubscription'})), - 'Digital-Subscription-DrE-Basic': FormatSet(target_type='Digital Subscription', heading='Digital-Subscription-DrE-Basic Attributes', description='Auto-generated format for Digital Subscription (Create, Basic).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type'), Column(name='Support Level', key='support_level'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Purpose', key='purpose'), Column(name='Agreement Type', key='agreement_type'), Column(name='Support Level', key='support_level')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DigitalSubscription'})), + 'Digital-Subscription-DrE-Advanced': FormatSet(target_type='Digital Subscription', heading='Digital-Subscription-DrE-Advanced Attributes', description='Auto-generated format for Digital Subscription (Create, Advanced).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Support Level', key='support_level'), Column(name='Service Levels', key='service_levels'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Purpose', key='purpose'), Column(name='Support Level', key='support_level'), Column(name='Service Levels', key='service_levels'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DigitalSubscription'})), + 'Digital-Subscription-DrE-Basic': FormatSet(target_type='Digital Subscription', heading='Digital-Subscription-DrE-Basic Attributes', description='Auto-generated format for Digital Subscription (Create, Basic).', family='Digital Product Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Purpose', key='purpose'), Column(name='Support Level', key='support_level'), Column(name='Service Levels', key='service_levels'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Purpose', key='purpose'), Column(name='Support Level', key='support_level'), Column(name='Service Levels', key='service_levels')])], action=ActionParameter(function='CollectionManager.find_collections', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'DigitalSubscription'})), 'Element-DrE-Advanced': FormatSet(target_type='Element', heading='Element-DrE-Advanced Attributes', description='Auto-generated format for Element (Create, Advanced).', family='Automation', formats=[Format(types=['LIST'], attributes=[Column(name='Element Type Name', key='type_name'), Column(name='Template GUID', key='template_guid'), Column(name='Placeholder Property Values', key='placeholder_property_values'), Column(name='Template Properties', key='template_properties'), Column(name='Generic Initial Classifications', key='initial_classifications'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Effective From', key='effective_from'), Column(name='Effective To', key='effective_to'), Column(name='Effective Time', key='effective_time'), Column(name='Deep Copy', key='deep_copy'), Column(name='Initial Status', key='initial_status', valid_values=['ACTIVE', 'DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'DEPRECATED', 'OTHER'])]), Format(types=['ALL'], attributes=[Column(name='Element Type Name', key='type_name'), Column(name='Template GUID', key='template_guid'), Column(name='Placeholder Property Values', key='placeholder_property_values'), Column(name='Template Properties', key='template_properties'), Column(name='Initial Status', key='initial_status', valid_values=['ACTIVE', 'DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'DEPRECATED', 'OTHER']), Column(name='Generic Initial Classifications', key='initial_classifications'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Effective From', key='effective_from'), Column(name='Effective To', key='effective_to'), Column(name='Effective Time', key='effective_time'), Column(name='Deep Copy', key='deep_copy')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), 'Element-DrE-Basic': FormatSet(target_type='Element', heading='Element-DrE-Basic Attributes', description='Auto-generated format for Element (Create, Basic).', family='Automation', formats=[Format(types=['LIST'], attributes=[Column(name='Template GUID', key='template_guid'), Column(name='Placeholder Property Values', key='placeholder_property_values'), Column(name='Template Properties', key='template_properties')]), Format(types=['ALL'], attributes=[Column(name='Template GUID', key='template_guid'), Column(name='Placeholder Property Values', key='placeholder_property_values'), Column(name='Template Properties', key='template_properties')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), 'Embedded-Process-DrE-Advanced': FormatSet(target_type='Embedded Process', heading='Embedded-Process-DrE-Advanced Attributes', description='Auto-generated format for Embedded Process (Create, Advanced).', family='Action Author', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Deployed Implementation Type', key='deployed_impl_type'), Column(name='Namespace Path', key='namespace_path'), Column(name='Resource Name', key='resource_name'), Column(name='Source', key='source'), Column(name='Formula', key='formula'), Column(name='Formula Type', key='formula_type'), Column(name='Expected Behaviour', key='expected_behaviour'), Column(name='Priority', key='priority'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Deployed Implementation Type', key='deployed_impl_type'), Column(name='Namespace Path', key='namespace_path'), Column(name='Resource Name', key='resource_name'), Column(name='Source', key='source'), Column(name='Formula', key='formula'), Column(name='Formula Type', key='formula_type'), Column(name='Expected Behaviour', key='expected_behaviour'), Column(name='Priority', key='priority'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), diff --git a/sample-data/templates/advanced/Digital Product Manager/Create_Agreement.md b/sample-data/templates/advanced/Digital Product Manager/Create_Agreement.md index dc11415e..46d9ec9c 100644 --- a/sample-data/templates/advanced/Digital Product Manager/Create_Agreement.md +++ b/sample-data/templates/advanced/Digital Product Manager/Create_Agreement.md @@ -13,14 +13,6 @@ ___ > **Alternative Labels**: "Term Name" -### Agreement Type -> **Input Required**: False - -> **Attribute Type**: Simple - -> **Description**: Type of agreement (e.g., service level agreement, licensing agreement, data sharing agreement). - - ### Journal Entry > **Input Required**: False diff --git a/sample-data/templates/advanced/Digital Product Manager/Create_Data_Sharing_Agreement.md b/sample-data/templates/advanced/Digital Product Manager/Create_Data_Sharing_Agreement.md index 61196daf..62333e59 100644 --- a/sample-data/templates/advanced/Digital Product Manager/Create_Data_Sharing_Agreement.md +++ b/sample-data/templates/advanced/Digital Product Manager/Create_Data_Sharing_Agreement.md @@ -13,14 +13,6 @@ ___ > **Alternative Labels**: "Term Name" -### Agreement Type -> **Input Required**: False - -> **Attribute Type**: Simple - -> **Description**: Type of agreement (e.g., service level agreement, licensing agreement, data sharing agreement). - - ### Journal Entry > **Input Required**: False diff --git a/sample-data/templates/advanced/Digital Product Manager/Create_Digital_Subscription.md b/sample-data/templates/advanced/Digital Product Manager/Create_Digital_Subscription.md index da1e9fbf..1d151192 100644 --- a/sample-data/templates/advanced/Digital Product Manager/Create_Digital_Subscription.md +++ b/sample-data/templates/advanced/Digital Product Manager/Create_Digital_Subscription.md @@ -15,14 +15,6 @@ ___ > **Alternative Labels**: "Term Name" -### Agreement Type -> **Input Required**: False - -> **Attribute Type**: Simple - -> **Description**: Type of agreement (e.g., service level agreement, licensing agreement, data sharing agreement). - - ### Support Level > **Input Required**: False @@ -139,6 +131,18 @@ ___ > **Description**: The authors. +### Service Levels +> **Input Required**: False + +> **Attribute Type**: Dictionary + +> **Description**: Service levels promised by the subscription, as name/value pairs (e.g., availability: 99.9%, responseTime: 4 hours). + +> | Parameter Name | Parameter Value | +> |---|---| +> | example_key | example_value | + + ### Effective From > **Input Required**: False diff --git a/sample-data/templates/basic/Digital Product Manager/Create_Agreement.md b/sample-data/templates/basic/Digital Product Manager/Create_Agreement.md index b53548fb..ba9454e4 100644 --- a/sample-data/templates/basic/Digital Product Manager/Create_Agreement.md +++ b/sample-data/templates/basic/Digital Product Manager/Create_Agreement.md @@ -13,14 +13,6 @@ ___ > **Alternative Labels**: "Term Name" -### Agreement Type -> **Input Required**: False - -> **Attribute Type**: Simple - -> **Description**: Type of agreement (e.g., service level agreement, licensing agreement, data sharing agreement). - - ### Journal Entry > **Input Required**: False diff --git a/sample-data/templates/basic/Digital Product Manager/Create_Data_Sharing_Agreement.md b/sample-data/templates/basic/Digital Product Manager/Create_Data_Sharing_Agreement.md index e25ed247..fb58d979 100644 --- a/sample-data/templates/basic/Digital Product Manager/Create_Data_Sharing_Agreement.md +++ b/sample-data/templates/basic/Digital Product Manager/Create_Data_Sharing_Agreement.md @@ -13,14 +13,6 @@ ___ > **Alternative Labels**: "Term Name" -### Agreement Type -> **Input Required**: False - -> **Attribute Type**: Simple - -> **Description**: Type of agreement (e.g., service level agreement, licensing agreement, data sharing agreement). - - ### Journal Entry > **Input Required**: False diff --git a/sample-data/templates/basic/Digital Product Manager/Create_Digital_Subscription.md b/sample-data/templates/basic/Digital Product Manager/Create_Digital_Subscription.md index 0365c18f..04d962fc 100644 --- a/sample-data/templates/basic/Digital Product Manager/Create_Digital_Subscription.md +++ b/sample-data/templates/basic/Digital Product Manager/Create_Digital_Subscription.md @@ -15,14 +15,6 @@ ___ > **Alternative Labels**: "Term Name" -### Agreement Type -> **Input Required**: False - -> **Attribute Type**: Simple - -> **Description**: Type of agreement (e.g., service level agreement, licensing agreement, data sharing agreement). - - ### Support Level > **Input Required**: False @@ -139,4 +131,16 @@ ___ > **Description**: The authors. +### Service Levels +> **Input Required**: False + +> **Attribute Type**: Dictionary + +> **Description**: Service levels promised by the subscription, as name/value pairs (e.g., availability: 99.9%, responseTime: 4 hours). + +> | Parameter Name | Parameter Value | +> |---|---| +> | example_key | example_value | + + ___ diff --git a/tests/dr-egeria-command-tests/dr_test_products_good.md b/tests/dr-egeria-command-tests/dr_test_products_good.md index 7d99be5d..d8c4fe9c 100644 --- a/tests/dr-egeria-command-tests/dr_test_products_good.md +++ b/tests/dr-egeria-command-tests/dr_test_products_good.md @@ -184,8 +184,8 @@ ___ # DP-05: Create Agreement — generic -> Creates a generic Agreement collection. Agreement Type exercises -> the family-specific attribute. +> Creates a generic Agreement collection. Agreement has no properties of its own +> beyond Collection's (Agreement Type was retired, ISSUE-145); Purpose carries intent. ## Create Agreement @@ -198,10 +198,6 @@ Sales Forecast Data Access Agreement Generic agreement governing access to Sales Forecast data products by internal business units. -### Agreement Type - -DataAccessAgreement - ### Purpose Define the terms under which internal consumers may access Sales Forecast data products. @@ -238,10 +234,6 @@ Sales Forecast — Finance Data Sharing Agreement Data sharing agreement between the Sales Analytics team and the Finance department for access to Q1 2026 Sales Forecast outputs for budget reconciliation. -### Agreement Type - -DataSharingAgreement - ### Purpose Govern the sharing of Sales Forecast data with Finance for budget reconciliation. @@ -264,7 +256,7 @@ ___ # DP-07: Create Digital Subscription -> Creates a DigitalSubscription agreement. Exercises Subscription Level and Support Level +> Creates a DigitalSubscription agreement. Exercises Support Level and Service Levels > from Digital Subscription Base. ## Create Digital Subscription @@ -278,17 +270,13 @@ Finance Team — Sales Forecast Subscription Premium subscription for the Finance team to access the Sales Forecast Pipeline Product, with business-hours support and daily data refresh. -### Subscription Level - -Premium - ### Support Level BusinessHours -### Agreement Type +### Service Levels -DigitalSubscription +{"availability": "99.5%", "refreshFrequency": "daily"} ### Purpose diff --git a/tests/micro-tests/test_issue_144_term_assignment_status.py b/tests/micro-tests/test_issue_144_term_assignment_status.py new file mode 100644 index 00000000..a14d41fe --- /dev/null +++ b/tests/micro-tests/test_issue_144_term_assignment_status.py @@ -0,0 +1,47 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright Contributors to the ODPi Egeria project. +""" +ISSUE-144: SemanticAssignmentProperties carries its status in `termAssignmentStatus` +(an enum). Dr.Egeria sent `status`, which Egeria silently ignores. +""" +from typing import Any, cast + +import pytest + +from md_processing.v2.curation import CurationLinkProcessor, _term_assignment_status +from md_processing.v2.extraction import DrECommand + + +@pytest.mark.parametrize("value, expected", [ + (3, "VALIDATED"), ("1", "PROPOSED"), (99, "OTHER"), ("Validated", "VALIDATED"), + ("PROPOSED", "PROPOSED"), (None, None), ("", None), (42, None), +]) +def test_term_assignment_status_conversion(value, expected): + assert _term_assignment_status(value) == expected + + +async def test_link_semantic_assignment_sends_term_assignment_status(): + bodies = [] + + class _ClassificationManager: + async def _async_setup_semantic_assignment(self, glossary_term_guid, element_guid, body): + bodies.append(body) + + class _Client: + classification_manager = _ClassificationManager() + + p = CurationLinkProcessor(client=cast(Any, _Client()), + command=DrECommand(verb="Link", object_type="Semantic Assignment", attributes={}, + raw_block="## Link Semantic Assignment"), context={}) + p.get_command_spec = lambda: {"OM_TYPE": "SemanticAssignment"} + p.parsed_output = {"attributes": { + "Target Element": {"guid": "eeeeeeee-0000-0000-0000-000000000001"}, + "Glossary Term": {"guid": "tttttttt-0000-0000-0000-000000000002"}, + "Governance Status": {"value": 1}, + }} + + await p.apply_changes() + + props = bodies[0]["properties"] + assert props["termAssignmentStatus"] == "PROPOSED" + assert "status" not in props diff --git a/tests/micro-tests/test_issue_146_remove_note_url.py b/tests/micro-tests/test_issue_146_remove_note_url.py new file mode 100644 index 00000000..613ac652 --- /dev/null +++ b/tests/micro-tests/test_issue_146_remove_note_url.py @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright Contributors to the ODPi Egeria project. +""" +Regression test for ISSUE-146 (PYEGERIA_ISSUES.md): Egeria 6.2 has no note +delete endpoint (notes are Actions), so `remove_note` uses the generic +Metadata Expert element delete. The URL is built from the platform root, so +it is the same on a MetadataExpert client, which overrides command_root. + +No live server needed: a mocked `_async_make_request` captures the URL. +""" +from unittest.mock import MagicMock, patch + +import pytest + +from pyegeria.omvs.my_profile import MyProfile +from pyegeria.omvs.metadata_expert import MetadataExpert + +EXPECTED = ("https://localhost:9443/servers/vs/api/open-metadata/" + "metadata-expert/metadata-elements/note-guid/delete") + + +def _client(cls): + with patch("pyegeria.core._base_server_client.BaseServerClient.check_connection", return_value=""): + return cls(view_server="vs", platform_url="https://localhost:9443", user_id="u", user_pwd="p") + + +@pytest.mark.parametrize("cls", [MyProfile, MetadataExpert]) +def test_remove_note_uses_metadata_expert_delete(cls): + client = _client(cls) + cap = {} + + async def fake(method, url, body=None, **kwargs): + cap["method"], cap["url"], cap["body"] = method, url, body + resp = MagicMock() + resp.json = MagicMock(return_value={}) + return resp + + client._async_make_request = fake + client.remove_note("note-guid") + + assert cap["method"] == "POST" + assert cap["url"] == EXPECTED