1 - Accessing Protegrity Agent UI
Using Protegrity Agent UI
Accessing the Dashboard
Access the PPC using the FQDN provided during the installation process.
Enter the username and password for the admin user to log in.
If Protegrity Agent is installed, then the Protegrity Agent dashboard appears. If Protegrity Agent is not installed, then the Insight Dashboard is available.
Afetr logging in successfully, a Welcome message is displayed prompting users to start a conversation.
The left panel contains Ongoing Conversation and Chat History icons.
Click Chat History to refer to previous requests and results.
The Protegrity Agent version is displayed at the bottom-right of the page. Currently, Protegrity Agent is on version 1.0.
Starting a Conversation
Get started with Protegrity Agent by typing a question in the Start your conversation here… textbox. The Protegrity Agent breaks down the request into actionable steps and executes them, providing live updates in the Canvas.
Once the Agent starts processing the query, the stop icon is enabled. Use this icon to stop the Agent from proceeding with the request.
Interacting with the Agent
The following are the best practices while interacting with the agent.
Be Specific
Provide clear instructions. Include resource names, values, and desired outcomes.
| Less effective | More effective |
|---|
| “Set up some security.” | “Create a policy named PCI_Compliance with a tokenization rule for the CC_Token data element.” |
| “Fix the policy.” | “Update the PCI_Compliance policy to change the masking rule for SSN_Token from full mask to partial mask.” |
Understanding the Canvas
The attributes displayed in the canvas response along with their description are listed below.
| Attribute | Description |
|---|
type | Items of an agent response can be one of several types: - TextResponse: The agent’s text output - AgentPlan: A plan created by the agent - ExecutedStep: An individual step in the plan - FeedbackRequest: A request for user feedback - Attestation: Evidence or reasoning from the agent |
id | Unique identifier for this conversation |
claim | The claim or assertion this evidence supports |
confidence_level | Confidence level (0-1) in the validity of this evidence |
evidence_data | The actual evidence data - source: Source of the evidence - collected_at: When the evidence was collected - data: The evidence payload |
evidence_type | Type of evidence being provided |
verification_method | Method used to verify or collect this evidence |
created_at | When the conversation was created |
If the response from the Agent is text information only, the Canvas does not display any output.
2 - Working with Protegrity Agent
Interacting with Protegrity Agent to manage Protegrity data protection products
This section walks through each step of creating a complete, working protection policy. The example protects three types of sensitive data: credit card numbers, Social Security numbers (SSN), and email addresses.
Each step can be run as an individual request, or the agent can build the entire setup in a single conversation.
PIM uses unique identifiers (UIDs) to reference resources. When you create a resource, PIM assigns it a UID. The Protegrity Agent tracks these UIDs across steps within the same conversation, so you can refer to resources by name.
Step 1: Create Data Elements
Data elements define how Protegrity protects a specific type of data. Each data element specifies one protection method.
It is recommended to create data elements first because the rules might reference them later.
Data elements cannot change their protection method after creation. To change a protection method, create a new data element.
Caution: Deleting a data element destroys its cryptographic material. Data protected with a deleted data element can not be recovered.
Create a Credit Card Data Element
Request the agent to create a data element that tokenizes credit card numbers.
Create a data element named CC_Token that tokenizes credit card numbers
using the SLT_1_3 tokenizer.
The agent creates a data element with credit card tokenization. This protection method preserves the format of the card number and produces a token that passes Luhn validation.
Create a Social Security Number Data Element
Request the agent to create a data element that tokenizes numeric data for SSN values.
Create a data element named SSN_Token that uses numeric tokenization
with the SLT_1_3 tokenizer.
The agent creates a numeric tokenization data element. The token output contains only digits and preserves the original length.
Create an Email Data Element
Request the agent to create a data element that tokenizes email addresses.
Create a data element named Email_Token that uses email tokenization
with the SLT_1_3 tokenizer.
The Protegrity Agent creates an email tokenization data element. The token preserves the email format, including the @ symbol and domain structure.
Other Protection Methods
Protegrity supports several additional protection methods. The agent supports questions related to any of the following.
| Protection method | Use case |
|---|
| Format-preserving tokenization | Preserve data format and length in the token output |
| Format-preserving encryption (FPE) | Apply NIST 800-38G encryption while preserving format |
| AES-128 or AES-256 encryption | Apply strong encryption for data at rest |
| HMAC-SHA256 hashing | Create irreversible one-way hashes for comparison |
| No encryption with monitoring | Track data access without applying protection |
Request the agent for details on any method:
What tokenization options are available for numeric data?
Step 2: Create a Mask
Masks define how to partially reveal protected data for display. Rules can optionally reference a mask to control what users see when they access data without full unprotect permission.
Create a mask named CC_Show_Last_4 that shows the last 4 characters
and masks the rest with asterisks.
The Protegrity Agent creates a mask that displays the last four digits while replacing the remaining characters with * symbols. For example, a credit card number appears as ************1234 in the output.
Mask parameters:
| Parameter | Description |
|---|
fromLeft | Specify the number of characters to keep visible from the left |
fromRight | Specify the number of characters to keep visible from the right |
character | Set the masking character (*, #, -, or 0-9) |
Step 3: Create a Role
Roles define who can access protected data. Every rule in a policy requires a role.Ensure to create roles before creating rules.
Create a Role With Full Access
For a simple setup, create a role with the allowAll flag. This role grants access to all users without requiring a member source.
Create a role named DataAnalyst with manual mode and allow all users.
The agent creates a manual role where all authenticated users receive access.
Create a Role With Restricted Access
For more fine-grained control, create a role that restricts access to specific users or groups from a member source.
Create a role named PCI_Auditor with manual mode. Do not allow all users.
After the role is created, members can be added from a member source.For more information about setting up member source, refer Create a Member Source.
Role Modes
| Mode | Behavior |
|---|
| MANUAL | Manually manage role membership with no automatic refresh |
| SEMIAUTOMATIC | Refresh membership on a configured schedule |
| AUTOMATIC | Continuously synchronize membership from the member source |
Step 4: Create a Member Source (Optional)
Member sources connect PIM to an identity directory. Create a member source when you need to restrict role membership to specific users or groups.
This step is optional if allowAll roles are used.
Create a file-based member source named LocalUsers.
The agent creates a member source. Supported source types include file, LDAP, Active Directory (AD), Azure AD, POSIX, and database connections.
After creating a member source, add members to a role.
Add a group member from the LocalUsers source to the PCI_Auditor role.
Step 5: Create a Policy
Policies group rules that govern protect, unprotect, and reprotect operations. Ensure to create the policy container before adding rules.
Create a policy named PCI_Compliance with template permissions
that allow protect, unprotect, and reprotect.
The agent creates an empty policy with default permissions. The template permissions serve as a baseline for new rules you add to the policy.
Step 6: Add Rules to the Policy
Rules bind a data element, a role, and a set of permissions within a policy. Each rule defines what protection operations a role can perform on a specific data element.
Add a Credit Card Rule With Masking
Add a Credit Card Rule With Masking
Add a rule to the PCI_Compliance policy for the DataAnalyst role and
CC_Token data element. Use the CC_Show_Last_4 mask. Allow protect and
reprotect, but deny unprotect. Set the no-access operation to
NULL_VALUE. Enable auditing for all operations.
The agent creates a rule where DataAnalyst users can protect and reprotect credit card data. When they access the data without unprotect permission, they see the masked value. The no-access operation returns a null value for unauthorized users.
Add a Social Security Number Rule
Add a Social Security Number Rule
Add a rule to the PCI_Compliance policy for the DataAnalyst role and
SSN_Token data element. Allow protect, unprotect, and reprotect.
Set the no-access operation to EXCEPTION.
The agent creates a rule granting full access to SSN data. Unauthorized access raises an exception.
Add an Email Rule
Add an Email Rule
Add a rule to the PCI_Compliance policy for the DataAnalyst role and
Email_Token data element. Allow protect and unprotect. Deny reprotect.
Rule Permissions
Each rule controls the following three operations independently.
| Operation | Description |
|---|
| Protect | Convert clear text into its protected form |
| Unprotect | Convert protected data back into clear text |
| Reprotect | Convert data from one protected form to another |
No-Access Operations
When a user without permission accesses protected data, PIM returns one of these values.
| Value | Behavior |
|---|
| NULL_VALUE | Return a null value (default) |
| PROTECTED_VALUE | Return the protected (tokenized or encrypted) value |
| EXCEPTION | Raise an exception and block the operation |
Step 7: Create a Data Store and Deploy
Data stores define where protectors retrieve their policies. A protector is a Protegrity component that enforces data protection at the point of access, such as a database or application server. Create a data store and deploy the policy to make it available to protectors.
Create a Data Store
Create a default data store named Production_DS with the description
"Production data store for PCI compliance."
A default data store allows any server to connect. For restricted access, create a non-default data store and add allowed server ranges:
Create a data store named Restricted_DS.
Add an allowed server range from 10.30.0.1 to 10.30.0.50
to the Restricted_DS data store.
Only one default data store can exist in a PIM instance.
Deploy the Policy
Deploy the Policy
Deploy the PCI_Compliance policy to the Production_DS data store.
The agent binds the policy to the data store. Protectors connected to this data store can now retrieve and enforce the policy.
An empty policies or applications array in a deploy request clears existing associations. The agent handles this correctly, but exercise caution when modifying deployments manually.
Trusted Applications (Optional)
If the environment uses Application Protector, create a trusted application to authorize a specific application and user pair. Include trusted applications in the deploy step alongside policies.
Create a trusted application named CustomerServiceApp with application
name "customer-service" and application user "cs-service-account".
Deploy the PCI_Compliance policy and CustomerServiceApp application
to the Production_DS data store.
This step is optional if the protectors do not require trusted application authorization.
Complete Setup in One Request
The agent can build an entire policy configuration in a single request. It creates a plan and works through each step.
Set up a complete PCI compliance configuration:
1. Create three data elements: CC_Token (credit card tokenization,
SLT_1_3), SSN_Token (numeric tokenization, SLT_1_3), and
Email_Token (email tokenization, SLT_1_3).
2. Create a mask named CC_Show_Last_4 that shows the last 4 characters.
3. Create a role named DataAnalyst with manual mode and allow all users.
4. Create a policy named PCI_Compliance.
5. Add rules for each data element:
- CC_Token: allow protect and reprotect, deny unprotect,
use CC_Show_Last_4 mask, no-access returns null.
- SSN_Token: allow all operations, no-access raises exception.
- Email_Token: allow protect and unprotect, deny reprotect.
6. Create a default data store named Production_DS.
7. Deploy PCI_Compliance to Production_DS.
The agent creates a multi-step plan and executes each step in sequence. It reports progress and the final results.
3 - Samples for using Protegrity Agent
Examples to get started with Protegrity Agent
A few sample queries for interacting with the Protegrity Agent are listed below. Expand the sample queries below for detailed information
Sample Query 1
In the Start your conversation here… textbox type the query.
Query 1
Explain Protegrity terms such as data protection policy, data element, data type, tokenization and how they integrate with each other.
Sample Output
Protegrity Agent Response:
Below is a conceptual, system level explanation of the core Protegrity terms you asked about, and how they fit together in practice. I’ll stay out of API mechanics and focus on meaning and flow.
- Data Type (business meaning of the data)
What it is
A data type is not a concrete object in Protegrity. It’s the business classification of data.
Examples:
• Credit Card Number
• Social Security Number
• Email Address
• Customer Name
Think of data types as answering:
“What kind of sensitive data is this?”
They are how security and compliance teams reason about risk and requirements.
- Data Element (how a data type is protected)
What it is
A Data Element is a concrete protection definition in Protegrity.
It operationalizes a data type by defining how that data is protected cryptographically.
You typically create:
• One Data Element per data type
Examples:
• Data Element: CreditCardNumber_Tokenized
• Data Element: CustomerName_FPE
• Data Element: Email_Masked
A Data Element defines:
• Protection method (tokenization, encryption, masking, etc.)
• Cryptographic parameters
• Format preservation behavior
• Optional output character rules (alphabets)
Key properties:
• Immutable after creation (except description)
• Reused across many policies and systems
• The foundation of enforcement
In short:
Data type = what the data is
Data element = how that data is protected
- Tokenization (one protection method)
What it is
Tokenization is a protection method where:
• Sensitive data is replaced with a token
• The token has no mathematical relationship to the original value
• Re identification is possible only via Protegrity
Example:
Original: 4111 1111 1111 1111
Token: 8394 5521 9012 4478
Why tokenization is commonly used:
• Preserves length and often format
• Reduces compliance scope (e.g., PCI)
• Tokens are safe to store and process
In Protegrity:
• Tokenization is configured inside a Data Element
• Different tokenizers exist depending on format and length needs
• Tokenization is applied consistently wherever the Data Element is used
Tokenization answers:
“How do we protect this data while keeping it usable?”
- Data Protection Policy (who can do what)
What it is
A Data Protection Policy defines access rules for protected data.
It does not define cryptography.
It defines authorization and behavior.
A policy answers:
“Who is allowed to protect, unprotect, or see this data?”
A policy contains rules, and each rule links:
• A Role (who)
• A Data Element (what data)
• Permissions (what actions are allowed)
Example rules:
• App role can tokenize and detokenize credit cards
• Analytics role can only see masked values
• Everyone else gets no access
Important:
• Policies reference Data Elements
• Policies are enforced at runtime by protectors
• Policies are deployed to environments via data stores
- How they all come together (end to end flow)
Here is the mental model that ties everything together:
Step 1: Classify the data
You identify a data type:
• “This column is a credit card number”
Step 2: Define protection
You create a Data Element:
• Uses tokenization
• Preserves format
• Meets compliance requirements
Now Protegrity knows how to protect that type of data.
Step 3: Define access
You create a Data Protection Policy:
• Application role can tokenize and detokenize
• Support role can only see masked values
• Others have no access
Now Protegrity knows who can do what with that data.
Step 4: Enforcement at runtime
When an application:
• Calls protect → Protegrity uses the Data Element’s tokenization
• Calls unprotect → Protegrity checks the policy rules
• Returns clear, masked, or blocked data accordingly
Everything flows through:
Data Type
↓
Data Element (protection method, e.g. tokenization)
↓
Policy Rule (role + permissions)
↓
Runtime enforcement by protectors
One sentence summary
• Data type: what the data represents (business meaning)
• Data element: how that data is protected (cryptography)
• Tokenization: one way a data element protects data
• Data protection policy: who is allowed to protect or see the data
• Together: Protegrity separates what the data is, how it’s protected, and who can access it so security is consistent, centralized, and enforceable everywhere
If you want, next we can:
• Walk through a concrete example (e.g., credit card in an app)
• Compare tokenization vs encryption vs FPE
• Explain roles and masking in more depth
Sample Query 2
Query
In the Start your conversation here… textbox type the query.
Create a new DataElement named UserContact_AES256 for encrypting user contact details using aes256CbcEnc with ivType SYSTEM_APPEND, checksumType CRC32, and cipherFormat INSERT_KEYID_V1.
Sample Output
Protegrity Agent Response:
Created the Data Element UserContact_AES256 for encrypting user contact details.
Details:
• Protection method: AES-256 CBC encryption
• IV type: SYSTEM_APPEND
• Checksum type: CRC32
• Cipher format: INSERT_KEYID_V1
• Description: “Encrypt user contact details using AES-256 CBC”
• Assigned UID: 6
The payload was validated and successfully created in PIM. This Data Element is now available to be referenced in policy rules.
Click View JSON. The following is a sample information that displays.
{
"type": "attestation",
"id": "attest_ff4b147f-a09a-4182-b0a4-3e56f00fdbb2",
"claim": "POST /dataelements → 201 (success)",
"confidence_level": 1,
"evidence_data": {
"source": "POST /dataelements",
"collected_at": "2026-03-09T13:54:14.019243Z",
"data": {
"method": "POST",
"endpoint": "dataelements",
"action": "send",
"ok": true,
"status_code": 201,
"response_body": "{\"uid\":\"6\",\"name\":\"UserContact_AES256\",\"description\":\"Encrypt user contact details using AES-256 CBC\",\"aes256CbcEnc\":{\"ivType\":\"SYSTEM_APPEND\",\"checksumType\":\"CRC32\",\"cipherFormat\":\"INSERT_KEYID_V1\"}}"
}
},
"evidence_type": "execution_log",
"verification_method": "http_status_code",
"created_at": "2026-03-09T13:54:14.019266Z"
}
Sample Query 3
In the Start your conversation here… textbox type the query.
Query
Enable GDPR-compliant analytics access for the MyCompanyDataLake so Marketing_Analytics can only view masked users data while Security_Compliance retains full unmasked access, create a policy if you need, validate effective access, and confirm rollback readiness.
Sample Output
Protegrity Agent Response:
Here’s a concise status summary of what was done and what’s in effect.
What was implemented
Datastore
• Created MyCompanyDataLake (uid 1) and set it as the default datastore.
Policy
• Created MyCompany_GDPR_Analytics_Policy (uid 1) with protect / reProtect / unProtect enabled.
Data element
• Reused existing SreerajDataElement (uid 5) to represent user data, avoiding any irreversible data element changes.
Mask
• Created GDPR_User_Mask (uid 1) to enforce masked output for GDPR restricted access.
Roles
• Marketing_Analytics (uid 1)
• Security_Compliance (uid 2)
• Both roles are enabled for access (allowAll=true) to ensure the policy can be enforced.
Policy rules
• Marketing_Analytics:
• unProtect = true
• Mask applied = GDPR_User_Mask
• Result: users see only masked user data.
• Security_Compliance:
• unProtect = true
• No mask applied
• Result: users see full, unmasked user data.
Deployment
• Deployed MyCompany_GDPR_Analytics_Policy to MyCompanyDataLake.
• Deployment verified as active.
Validation performed
• Confirmed the datastore MyCompanyDataLake is bound to policy uid 1.
• Retrieved and inspected policy rules:
• Marketing_Analytics rule includes mask uid 1.
• Security_Compliance rule has no mask.
• This confirms effective GDPR compliant access separation: masked analytics vs full compliance access.
Rollback readiness (confirmed)
No pre existing policies or datastores existed, so rollback is clean and low risk:
- Detach the policy from the datastore by redeploying MyCompanyDataLake with an empty policies list.
- Optionally delete the two policy rules under policy uid 1.
- Optionally delete MyCompany_GDPR_Analytics_Policy (uid 1).
- Optionally revert or delete the two roles.
- Delete GDPR_User_Mask (uid 1) once no rules reference it.
This restores the system to its original empty state.
Net result
• Marketing analytics access is GDPR compliant and masked.
• Security/compliance access retains full visibility.
• Configuration is deployed, validated, and fully reversible.
Click View JSON. The following is a sample information that displays.
{
"type": "attestation",
"id": "attest_17829805-2e5d-4cbf-bc27-94eb60da6656",
"claim": "GET /datastores/1 → 200 (success)",
"confidence_level": 1,
"evidence_data": {
"source": "GET /datastores/1",
"collected_at": "2026-03-09T13:45:50.703839Z",
"data": {
"method": "GET",
"endpoint": "datastores/1",
"action": "send",
"ok": true,
"status_code": 200,
"response_body": "{\"description\":\"Datastore for MyCompany analytics and compliance workloads\",\"name\":\"MyCompanyDataLake\",\"default\":true,\"uid\":\"1\",\"policies\":[\"1\"],\"applications\":[]}"
}
},
"evidence_type": "execution_log",
"verification_method": "http_status_code",
"created_at": "2026-03-09T13:45:50.703862Z"
}
Sample Query 4
Query
Set up a complete PIM environment from scratch, then modify and tear it down:
PHASE 1 — CREATE (respect dependency order):
- Create three masks: “Show_Last_4” (fromLeft=0, fromRight=4, masked=false, character="#"), “Show_1st_Character” (fromLeft=1, fromRight=0, masked=false, character="*"), and “Mask_All” (fromLeft=0, fromRight=0, masked=true, character="#").
- Create a FILE member source named “File_Member_Source” with userFile “exampleusers.txt” and groupFile “examplegroups.txt”.
- Create two datastores: “CRM-Prod-DB” (description “Primary customer database”) and “DataLake” (description “Encrypted customer data lake for analytics”).
- Create five data elements: “Name” (AES256 CBC encryption, ivType SYSTEM_APPEND, checksumType CRC32, cipherFormat INSERT_KEYID_V1), “Address” (same encryption settings), “DOB” (date tokenization with SLT_2_6), “CCN” (credit card tokenization with SLT_2_6, fromRight=4), and “SSN” (numeric FPE, fromRight=4, minLength=2, tweakMode EXT_INPUT).
- Create twelve roles: “Address_Full”, “Name_Full”, “Name_Unprotect”, “DOB_Unprotect”, “SSN_Full”, “CCN_Masked”, “CCN_Full”, “DOB_Full”, “DOB_Protected”, “SSN_Masked”, “Name_Masked”, and “Address_Masked”.
- Create two IP ranges: 10.20.0.50–10.20.0.150 assigned to CRM-Prod-DB, and 10.20.0.180–10.20.0.250 assigned to DataLake.
- Create a USER member “CRM_Admins” in source “File_Member_Source” with all twelve roles assigned.
- Create a trusted application “CRM” (applicationName “crm-backend”, applicationUser “crm-srv”).
- Create policy “CDPP-001” with default template denying all access (protect=false, reProtect=false, unProtect=false), then add all twelve role mappings: Name_Full→Name (full access), Address_Full→Address (full access), DOB_Full→DOB (full access), CCN_Full→CCN (full access), SSN_Full→SSN (full access), Name_Masked→Name (protect+unprotect with Show_1st_Character mask), Address_Masked→Address (protect+unprotect with Mask_All mask), DOB_Protected→DOB (protect only), CCN_Masked→CCN (protect+unprotect with Show_Last_4 mask), SSN_Masked→SSN (protect only), Name_Unprotect→Name+Address (unprotect only), and DOB_Unprotect→DOB (unprotect only).*
**PHASE 2 — MODIFY:
10. Update the “DataLake” datastore description to “Decommissioned analytics lake — do not use”.
11. Update the “Mask_All” mask character from “#” to “X”.
12. Update mask “Show_Last_4” to reveal 6 characters from right instead of 4.
PHASE 3 — TEARDOWN (reverse dependency order):
13. Delete policy “CDPP-001”.
14. Delete member “CRM_Admins”.
15. Delete trusted application “CRM”.
16. Delete both IP ranges.
17. Delete all twelve roles.
18. Delete all five data elements.
19. Delete both datastores.
20. Delete member source “File_Member_Source”.
21. Delete all three masks.**
Confirm each operation succeeded before moving to the next.
Assume defaults, you dont need guidance, do not ask me for anything, be brave, go for it, you’re a lion, you have all the knowledge in you, just do it !
Sample Output
Here’s the concise end‑to‑end summary of what was executed and verified in your live PIM environment.
✅ PHASE 1 — CREATE (all dependencies respected)
Masks
Created:
Show_Last_4 (UID 16)
Show_1st_Character (UID 17)
Mask_All (UID 18)
Member Source
Created FILE member source File_Member_Source (UID 6)
userFile: exampleusers.txt
groupFile: examplegroups.txt
Datastores
Created:
CRM-Prod-DB (UID 11) — “Primary customer database”
DataLake (UID 12) — “Encrypted customer data lake for analytics”
Data Elements
Created:
Name (UID 22) — AES256 CBC encryption
Address (UID 23) — AES256 CBC encryption
DOB (UID 25) — DateTime tokenization (SLT_8_DATETIME)
CCN (UID 26) — Credit card tokenization (SLT_2_6, fromRight=4)
SSN (UID 24) — Numeric FPE (fromRight=4, minLength=2, EXT_INPUT)
Roles
Created 12 roles (UIDs 50–61):
Address_Full, Address_Masked
Name_Full, Name_Masked, Name_Unprotect
DOB_Full, DOB_Protected, DOB_Unprotect
CCN_Full, CCN_Masked
SSN_Full, SSN_Masked
IP Ranges
CRM-Prod-DB: 10.20.0.50–10.20.0.150 (UID 9)
DataLake: 10.20.0.180–10.20.0.250 (UID 10)
Role Membership
Added USER member CRM_Admins (source UID 6) to all 12 roles
Trusted Application
Created CRM (UID 5)
applicationName: crm-backend
applicationUser: crm-srv
Policy and Rules
Created policy CDPP-001 (UID 6) with deny‑all template
Added all 12 requested rule mappings, including:
Full access rules
Masked unprotect rules using correct masks
Protect‑only and unprotect‑only rules
All rules verified created successfully
✅ PHASE 2 — MODIFY
Updated DataLake datastore description to:
“Decommissioned analytics lake - do not use”
(Adjusted to ASCII hyphen due to API constraints)
Updated Mask_All:
Mask character changed to “0” (alphabetic characters not allowed by API)
Updated Show_Last_4:
fromRight changed from 4 → 6
All updates confirmed applied.
✅ PHASE 3 — TEARDOWN (strict reverse order)
Successfully deleted, in order:
Policy CDPP-001
CRM_Admins members from all roles
Trusted application CRM
Both IP ranges
All 12 roles
All 5 data elements
Both datastores
File member source File_Member_Source
All 3 masks
Every delete returned a successful confirmation.
🔎 Notable Findings (recorded in knowledge store)
Tokenization data elements must use dateTimeToken and creditCardToken schemas — not generic fields.
Mask characters are restricted to *, #, -, or digits 0–9.
Datastore descriptions reject Unicode punctuation (e.g., em dashes).
✅ Final State
Environment fully created, modified, and completely torn down.
No residual resources remain.
Plan completed exactly as requested, with every operation verified via API responses.
Execution complete.
Click View JSON. The following is a sample information that displays.
{
"type": "attestation",
"id": "attest_cf8b274b-a844-4158-92a8-581b232455c3",
"claim": "DELETE /masks/18 → 204 (success)",
"confidence_level": 1,
"evidence_data": {
"source": "DELETE /masks/18",
"collected_at": "2026-03-24T12:19:51.661943Z",
"data": {
"method": "DELETE",
"endpoint": "masks/18",
"action": "send",
"ok": true,
"status_code": 204
}
},
"evidence_type": "execution_log",
"verification_method": "http_status_code",
"created_at": "2026-03-24T12:19:51.661967Z"
}