pvw-cli 1.0.12__tar.gz → 1.0.14__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pvw-cli might be problematic. Click here for more details.

Files changed (66) hide show
  1. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/PKG-INFO +378 -58
  2. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/README.md +377 -57
  3. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/__init__.py +2 -2
  4. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/account.py +24 -24
  5. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/cli.py +16 -16
  6. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/collections.py +24 -24
  7. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/domain.py +8 -8
  8. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/entity.py +193 -193
  9. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/glossary.py +29 -29
  10. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/health.py +2 -2
  11. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/insight.py +7 -7
  12. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/lineage.py +11 -11
  13. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/unified_catalog.py +594 -27
  14. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/workflow.py +43 -43
  15. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/pvw_cli.egg-info/PKG-INFO +378 -58
  16. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/pyproject.toml +2 -1
  17. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/__main__.py +0 -0
  18. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/__init__.py +0 -0
  19. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/management.py +0 -0
  20. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/policystore.py +0 -0
  21. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/relationship.py +0 -0
  22. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/scan.py +0 -0
  23. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/search.py +0 -0
  24. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/share.py +0 -0
  25. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/cli/types.py +0 -0
  26. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/__init__.py +0 -0
  27. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_account.py +0 -0
  28. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_collections.py +0 -0
  29. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_domain.py +0 -0
  30. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_entity.py +0 -0
  31. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_glossary.py +0 -0
  32. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_health.py +0 -0
  33. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_insight.py +0 -0
  34. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_lineage.py +0 -0
  35. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_management.py +0 -0
  36. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_policystore.py +0 -0
  37. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_relationship.py +0 -0
  38. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_scan.py +0 -0
  39. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_search.py +0 -0
  40. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_share.py +0 -0
  41. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_types.py +0 -0
  42. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_unified_catalog.py +0 -0
  43. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/_workflow.py +0 -0
  44. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/api_client.py +0 -0
  45. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/business_rules.py +0 -0
  46. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/config.py +0 -0
  47. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/data_quality.py +0 -0
  48. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/endpoint.py +0 -0
  49. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/endpoints.py +0 -0
  50. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/exceptions.py +0 -0
  51. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/lineage_visualization.py +0 -0
  52. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/monitoring_dashboard.py +0 -0
  53. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/rate_limiter.py +0 -0
  54. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/retry_handler.py +0 -0
  55. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/scanning_operations.py +0 -0
  56. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/settings.py +0 -0
  57. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/client/sync_client.py +0 -0
  58. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/plugins/__init__.py +0 -0
  59. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/purviewcli/plugins/plugin_system.py +0 -0
  60. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/pvw_cli.egg-info/SOURCES.txt +0 -0
  61. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/pvw_cli.egg-info/dependency_links.txt +0 -0
  62. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/pvw_cli.egg-info/entry_points.txt +0 -0
  63. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/pvw_cli.egg-info/not-zip-safe +0 -0
  64. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/pvw_cli.egg-info/requires.txt +0 -0
  65. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/pvw_cli.egg-info/top_level.txt +0 -0
  66. {pvw_cli-1.0.12 → pvw_cli-1.0.14}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pvw-cli
3
- Version: 1.0.12
3
+ Version: 1.0.14
4
4
  Summary: Microsoft Purview CLI with comprehensive automation capabilities
5
5
  Author-email: AYOUB KEBAILI <keayoub@msn.com>
6
6
  Maintainer-email: AYOUB KEBAILI <keayoub@msn.com>
@@ -56,26 +56,27 @@ Requires-Dist: pytest-asyncio>=0.20.0; extra == "test"
56
56
  Requires-Dist: pytest-cov>=4.0.0; extra == "test"
57
57
  Requires-Dist: requests-mock>=1.9.0; extra == "test"
58
58
 
59
- # PURVIEW CLI v1.0.12 - Microsoft Purview Automation & Data Governance
59
+ # PURVIEW CLI v1.0.14 - Microsoft Purview Automation & Data Governance
60
60
 
61
61
  > **LATEST UPDATE (October 2025):**
62
- > - **🚀 NEW: Complete Data Product CRUD Operations** - Full update and delete support with smart partial updates
63
- > - **🏥 NEW: Health Monitoring API** - Automated governance health checks and recommendations
64
- > - **🔄 NEW: Workflow Management** - Approval workflows and business process automation
65
- > - **✨ Enhanced ID Display** - Full UUIDs now visible in all list commands (no truncation)
66
- > - **🚀 MAJOR: Complete Microsoft Purview Unified Catalog (UC) Support** (see new `uc` command group)
67
- > - Full governance domains, glossary terms, data products, OKRs, and critical data elements management
68
- > - Feature parity with UnifiedCatalogPy project with enhanced CLI experience
69
- > - Advanced Data Product Management (legacy `data-product` command group)
70
- > - Enhanced Discovery Query/Search support
62
+ > - **� NEW: Bulk Term Import/Export** - Import multiple terms from CSV/JSON with dry-run support
63
+ > - **🗑️ NEW: Bulk Delete Scripts** - PowerShell and Python scripts for bulk term deletion
64
+ > - **📊 NEW: Multiple Output Formats** - `--output` flag supports table, json, and jsonc formats
65
+ > - **🔧 NEW: PowerShell Integration** - Plain JSON output works with `ConvertFrom-Json`
66
+ > - **🚀 Complete Data Product CRUD** - Full update and delete support with smart partial updates
67
+ > - **🏥 Health Monitoring API** - Automated governance health checks and recommendations
68
+ > - **🔄 Workflow Management** - Approval workflows and business process automation
69
+ > - **🚀 Complete Microsoft Purview Unified Catalog (UC)** - Full governance domains, glossary terms, data products, OKRs, and CDEs
71
70
 
72
71
  ---
73
72
 
74
73
  ## What is PVW CLI?
75
74
 
76
- **PVW CLI v1.0.12** is a modern, full-featured command-line interface and Python library for Microsoft Purview. It enables automation and management of *all major Purview APIs* including:
75
+ **PVW CLI v1.0.14** is a modern, full-featured command-line interface and Python library for Microsoft Purview. It enables automation and management of *all major Purview APIs* including:
77
76
 
78
- - **NEW Unified Catalog (UC) Management** - Complete governance domains, glossary terms, data products, OKRs, CDEs (NEW)
77
+ - **Unified Catalog (UC) Management** - Complete governance domains, glossary terms, data products, OKRs, CDEs
78
+ - **Bulk Operations** - Import/export terms from CSV/JSON, bulk delete scripts with progress tracking
79
+ - **Scriptable Output** - Multiple output formats (table, json, jsonc) for PowerShell/bash automation
79
80
  - Entity management (create, update, bulk, import/export)
80
81
  - Glossary and term management
81
82
  - Lineage operations
@@ -83,65 +84,87 @@ Requires-Dist: requests-mock>=1.9.0; extra == "test"
83
84
  - Advanced search and discovery
84
85
  - Data product management (legacy compatibility)
85
86
  - Classification, label, and status management
86
- - And more (see command reference)
87
87
 
88
88
  The CLI is designed for data engineers, stewards, architects, and platform teams to automate, scale, and enhance their Microsoft Purview experience.
89
89
 
90
90
  ---
91
91
 
92
- ## Quick Start (pip install)
92
+ ## Getting Started
93
93
 
94
- Get started with PVW CLI in minutes:
94
+ Follow this short flow to get PVW CLI installed and running quickly.
95
95
 
96
- 1. **Install the CLI**
96
+ 1. Install (from PyPI):
97
97
 
98
- ```bash
99
- pip install pvw-cli
100
- ```
98
+ ```bash
99
+ pip install pvw-cli
100
+ ```
101
101
 
102
- 2. **Set Required Environment Variables**
102
+ For the bleeding edge or development:
103
103
 
104
- ```bash
105
- # Required for Purview API access
106
- set PURVIEW_ACCOUNT_NAME=your-purview-account
107
- set PURVIEW_ACCOUNT_ID=your-purview-account-id-guid
108
- set PURVIEW_RESOURCE_GROUP=your-resource-group-name
109
-
110
- # Optional
111
- set AZURE_REGION= # (optional, e.g. 'china', 'usgov')
112
- ```
104
+ ```bash
105
+ pip install git+https://github.com/Keayoub/Purview_cli.git
106
+ # or for editable development
107
+ git clone https://github.com/Keayoub/Purview_cli.git
108
+ cd Purview_cli
109
+ pip install -r requirements.txt
110
+ pip install -e .
111
+ ```
113
112
 
114
- 3. **Authenticate**
113
+ 2. Set required environment variables (examples for cmd, PowerShell, and pwsh)
115
114
 
116
- - Run `az login` (recommended)
117
- - Or set Service Principal credentials as environment variables
115
+ Windows cmd (example):
118
116
 
119
- 4. **List Your Governance Domains (UC)**
117
+ ```cmd
118
+ set PURVIEW_ACCOUNT_NAME=your-purview-account
119
+ set PURVIEW_ACCOUNT_ID=your-purview-account-id-guid
120
+ set PURVIEW_RESOURCE_GROUP=your-resource-group-name
121
+ set AZURE_REGION= # optional
122
+ ```
120
123
 
121
- ```bash
122
- pvw uc domain list
123
- ```
124
+ PowerShell (Windows PowerShell):
124
125
 
125
- 5. **Run Your First Search**
126
+ ```powershell
127
+ $env:PURVIEW_ACCOUNT_NAME = "your-purview-account"
128
+ $env:PURVIEW_ACCOUNT_ID = "your-purview-account-id-guid"
129
+ $env:PURVIEW_RESOURCE_GROUP = "your-resource-group-name"
130
+ $env:AZURE_REGION = "" # optional
131
+ ```
126
132
 
127
- ```bash
128
- pvw search query --keywords="customer" --limit=5
129
- ```
133
+ pwsh (PowerShell Core - cross-platform, recommended):
130
134
 
131
- 6. **See All Commands**
135
+ ```pwsh
136
+ $env:PURVIEW_ACCOUNT_NAME = 'your-purview-account'
137
+ $env:PURVIEW_ACCOUNT_ID = 'your-purview-account-id-guid'
138
+ $env:PURVIEW_RESOURCE_GROUP = 'your-resource-group-name'
139
+ $env:AZURE_REGION = '' # optional
140
+ ```
132
141
 
133
- ```bash
134
- pvw --help
135
- pvw uc --help
136
- ```
142
+ 3. Authenticate
143
+
144
+ - Run `az login` (recommended), or
145
+ - Provide Service Principal credentials via environment variables.
146
+
147
+ 4. Try a few commands:
148
+
149
+ ```bash
150
+ # List governance domains
151
+ pvw uc domain list
152
+
153
+ # Search
154
+ pvw search query --keywords="customer" --limit=5
155
+
156
+ # Get help
157
+ pvw --help
158
+ pvw uc --help
159
+ ```
137
160
 
138
- For more advanced usage, see the sections below or visit the [documentation](https://pvw-cli.readthedocs.io/).
161
+ For more advanced usage, see the documentation in `doc/` or the project docs: https://pvw-cli.readthedocs.io/
139
162
 
140
163
  ---
141
164
 
142
165
  ## Overview
143
166
 
144
- **PVW CLI v1.0.12** is a modern command-line interface and Python library for Microsoft Purview, enabling:
167
+ **PVW CLI v1.0.14** is a modern command-line interface and Python library for Microsoft Purview, enabling:
145
168
 
146
169
  - Advanced data catalog search and discovery
147
170
  - Bulk import/export of entities, glossary terms, and lineage
@@ -278,6 +301,95 @@ For more details, see the [Azure Identity documentation](https://learn.microsoft
278
301
 
279
302
  ---
280
303
 
304
+ ## Output Formats & Scripting Integration
305
+
306
+ PVW CLI supports multiple output formats to fit different use cases - from human-readable tables to machine-parseable JSON.
307
+
308
+ ### Output Format Options
309
+
310
+ All `list` commands now support the `--output` parameter with three formats:
311
+
312
+ 1. **`table`** (default) - Rich formatted table with colors for human viewing
313
+ 2. **`json`** - Plain JSON for scripting with PowerShell, bash, jq, etc.
314
+ 3. **`jsonc`** - Colored JSON with syntax highlighting for viewing
315
+
316
+ ### PowerShell Integration
317
+
318
+ The `--output json` format produces plain JSON that works perfectly with PowerShell's `ConvertFrom-Json`:
319
+
320
+ ```powershell
321
+ # Get all terms as PowerShell objects
322
+ $domainId = "59ae27b5-40bc-4c90-abfe-fe1a0638fe3a"
323
+ $terms = py -m purviewcli uc term list --domain-id $domainId --output json | ConvertFrom-Json
324
+
325
+ # Access properties
326
+ Write-Host "Found $($terms.Count) terms"
327
+ foreach ($term in $terms) {
328
+ Write-Host " • $($term.name) - $($term.status)"
329
+ }
330
+
331
+ # Filter and export
332
+ $draftTerms = $terms | Where-Object { $_.status -eq "Draft" }
333
+ $draftTerms | Export-Csv -Path "draft_terms.csv" -NoTypeInformation
334
+
335
+ # Group by status
336
+ $terms | Group-Object status | Format-Table Count, Name
337
+ ```
338
+
339
+ ### Bash/Linux Integration
340
+
341
+ Use `jq` for JSON processing in bash:
342
+
343
+ ```bash
344
+ # Get domain ID
345
+ DOMAIN_ID="59ae27b5-40bc-4c90-abfe-fe1a0638fe3a"
346
+
347
+ # Get term names only
348
+ pvw uc term list --domain-id $DOMAIN_ID --output json | jq -r '.[] | .name'
349
+
350
+ # Count terms
351
+ pvw uc term list --domain-id $DOMAIN_ID --output json | jq 'length'
352
+
353
+ # Filter by status
354
+ pvw uc term list --domain-id $DOMAIN_ID --output json | jq '.[] | select(.status == "Draft")'
355
+
356
+ # Group by status
357
+ pvw uc term list --domain-id $DOMAIN_ID --output json | jq 'group_by(.status) | map({status: .[0].status, count: length})'
358
+
359
+ # Save to file
360
+ pvw uc term list --domain-id $DOMAIN_ID --output json > terms.json
361
+ ```
362
+
363
+ ### Examples by Command
364
+
365
+ ```bash
366
+ # Domains
367
+ pvw uc domain list --output json | jq '.[] | .name'
368
+
369
+ # Terms
370
+ pvw uc term list --domain-id "abc-123" --output json
371
+ pvw uc term list --domain-id "abc-123" --output table # Default
372
+ pvw uc term list --domain-id "abc-123" --output jsonc # Colored for viewing
373
+
374
+ # Data Products
375
+ pvw uc dataproduct list --domain-id "abc-123" --output json
376
+ ```
377
+
378
+ ### Migration from Old --json Flag
379
+
380
+ **Old (deprecated):**
381
+ ```bash
382
+ pvw uc term list --domain-id "abc-123" --json
383
+ ```
384
+
385
+ **New (recommended):**
386
+ ```bash
387
+ pvw uc term list --domain-id "abc-123" --output json # Plain JSON for scripting
388
+ pvw uc term list --domain-id "abc-123" --output jsonc # Colored JSON (old behavior)
389
+ ```
390
+
391
+ ---
392
+
281
393
  ## Required Purview Configuration
282
394
 
283
395
  Before using PVW CLI, you need to set three essential environment variables. Here's how to find them:
@@ -530,17 +642,107 @@ pvw uc domain update --domain-id "abc-123" --description "Updated financial gove
530
642
  ```bash
531
643
  # List all terms in a domain
532
644
  pvw uc term list --domain-id "abc-123"
645
+ pvw uc term list --domain-id "abc-123" --output json # Plain JSON for scripting
646
+ pvw uc term list --domain-id "abc-123" --output jsonc # Colored JSON for viewing
647
+
648
+ # Create a single glossary term
649
+ pvw uc term create --name "Customer" --domain-id "abc-123" --description "A person or entity that purchases products"
650
+
651
+ # Get term details
652
+ pvw uc term show --term-id "term-456"
653
+
654
+ # Update term
655
+ pvw uc term update --term-id "term-456" --description "Updated description"
656
+
657
+ # Delete term
658
+ pvw uc term delete --term-id "term-456" --confirm
659
+ ```
660
+
661
+ **📦 Bulk Import (NEW)**
662
+
663
+ Import multiple terms from CSV or JSON files with validation and progress tracking:
664
+
665
+ ```bash
666
+ # CSV Import - Preview with dry-run
667
+ pvw uc term import-csv --csv-file "samples/csv/uc_terms_bulk_example.csv" --domain-id "abc-123" --dry-run
668
+
669
+ # CSV Import - Actual import
670
+ pvw uc term import-csv --csv-file "samples/csv/uc_terms_bulk_example.csv" --domain-id "abc-123"
533
671
 
534
- # Create a new glossary term
535
- pvw uc term create --name "Customer" --domain-id "abc-123" --definition "A person or entity that purchases products"
672
+ # JSON Import - Preview with dry-run
673
+ pvw uc term import-json --json-file "samples/json/term/uc_terms_bulk_example.json" --dry-run
536
674
 
537
- # Get term details with relationships
538
- pvw uc term get --term-id "term-456" --domain-id "abc-123"
675
+ # JSON Import - Actual import (domain_id from JSON or override with flag)
676
+ pvw uc term import-json --json-file "samples/json/term/uc_terms_bulk_example.json"
677
+ pvw uc term import-json --json-file "samples/json/term/uc_terms_bulk_example.json" --domain-id "abc-123"
678
+ ```
679
+
680
+ **Bulk Import Features:**
681
+ - ✅ Import from CSV or JSON files
682
+ - ✅ Dry-run mode to preview before importing
683
+ - ✅ Support for multiple owners (Entra ID Object IDs), acronyms, and resources
684
+ - ✅ Progress tracking with Rich console output
685
+ - ✅ Detailed error messages and summary reports
686
+ - ✅ Sequential POST requests (no native bulk endpoint available)
687
+
688
+ **CSV Format Example:**
689
+ ```csv
690
+ name,description,status,acronym,owner_id,resource_name,resource_url
691
+ Customer Acquisition Cost,Cost to acquire new customer,Draft,CAC,<guid>,Metrics Guide,https://docs.example.com
692
+ Monthly Recurring Revenue,Predictable monthly revenue,Draft,MRR,<guid>,Finance Dashboard,https://finance.example.com
693
+ ```
539
694
 
540
- # Link terms to data assets
541
- pvw uc term assign --term-id "term-456" --asset-id "asset-789" --domain-id "abc-123"
695
+ **JSON Format Example:**
696
+ ```json
697
+ {
698
+ "terms": [
699
+ {
700
+ "name": "Data Lake",
701
+ "description": "Centralized repository for structured/unstructured data",
702
+ "domain_id": "your-domain-id-here",
703
+ "status": "Draft",
704
+ "acronyms": ["DL"],
705
+ "owner_ids": ["<entra-id-object-id-guid>"],
706
+ "resources": [{"name": "Architecture Guide", "url": "https://example.com"}]
707
+ }
708
+ ]
709
+ }
542
710
  ```
543
711
 
712
+ **Important Notes:**
713
+ - ⚠️ **Owner IDs must be Entra ID Object IDs (GUIDs)**, not email addresses
714
+ - ⚠️ **Terms cannot be "Published" in unpublished domains** - use "Draft" status
715
+ - ✅ Sample files available: `samples/csv/uc_terms_bulk_example.csv`, `samples/json/term/uc_terms_bulk_example.json`
716
+ - 📖 Complete documentation: [`doc/commands/unified-catalog/term-bulk-import.md`](doc/commands/unified-catalog/term-bulk-import.md)
717
+
718
+ **🗑️ Bulk Delete (NEW)**
719
+
720
+ Delete all terms in a domain using PowerShell or Python scripts:
721
+
722
+ ```powershell
723
+ # PowerShell - Delete all terms with confirmation
724
+ .\scripts\delete-all-uc-terms.ps1 -DomainId "abc-123"
725
+
726
+ # PowerShell - Delete without confirmation
727
+ .\scripts\delete-all-uc-terms.ps1 -DomainId "abc-123" -Force
728
+ ```
729
+
730
+ ```bash
731
+ # Python - Delete all terms with confirmation
732
+ python scripts/delete_all_uc_terms_v2.py --domain-id "abc-123"
733
+
734
+ # Python - Delete without confirmation
735
+ python scripts/delete_all_uc_terms_v2.py --domain-id "abc-123" --force
736
+ ```
737
+
738
+ **Bulk Delete Features:**
739
+ - ✅ Interactive confirmation prompts (type "DELETE" to confirm)
740
+ - ✅ Beautiful progress display with colors
741
+ - ✅ Success/failure tracking per term
742
+ - ✅ Detailed summary reports
743
+ - ✅ Rate limiting (200ms delay between deletes)
744
+ - ✅ Graceful error handling and Ctrl+C support
745
+
544
746
  #### 📦 **Data Products Management**
545
747
 
546
748
  ```bash
@@ -877,12 +1079,130 @@ If you need a feature that is not yet implemented, please open an issue or check
877
1079
 
878
1080
  ---
879
1081
 
1082
+ ## Sample Files & Scripts
1083
+
1084
+ PVW CLI includes comprehensive sample files and scripts for bulk operations:
1085
+
1086
+ ### Bulk Import Samples
1087
+
1088
+ - **CSV Samples:** `samples/csv/uc_terms_bulk_example.csv` (8 sample terms)
1089
+ - **JSON Samples:**
1090
+ - `samples/json/term/uc_terms_bulk_example.json` (8 data management terms)
1091
+ - `samples/json/term/uc_terms_sample.json` (8 business terms)
1092
+
1093
+ ### Bulk Delete Scripts
1094
+
1095
+ - **PowerShell:** `scripts/delete-all-uc-terms.ps1` - Full-featured with confirmation prompts
1096
+ - **Python:** `scripts/delete_all_uc_terms_v2.py` - Rich progress bars and error handling
1097
+
1098
+ ### Test Scripts
1099
+
1100
+ - **PowerShell:** `scripts/test-json-output.ps1` - Validates JSON output parsing
1101
+
1102
+ ### Jupyter Notebooks
1103
+
1104
+ - `samples/notebooks (plus)/unified_catalog_terms_examples.ipynb` - Complete examples including:
1105
+ - Examples 10-16: Bulk import demonstrations
1106
+ - Code generation for CSV/JSON files
1107
+ - Dry-run and actual import examples
1108
+ - Term verification workflows
1109
+
1110
+ ---
1111
+
1112
+ ## Documentation
1113
+
1114
+ ### Core Documentation
1115
+
1116
+ - **Main Documentation:** [`doc/README.md`](doc/README.md)
1117
+ - **Unified Catalog:** [`doc/commands/unified-catalog.md`](doc/commands/unified-catalog.md)
1118
+ - **Bulk Import Guide:** [`doc/commands/unified-catalog/term-bulk-import.md`](doc/commands/unified-catalog/term-bulk-import.md)
1119
+ - **Data Products:** [`doc/commands/data-product.md`](doc/commands/data-product.md)
1120
+
1121
+ ### Quick Reference
1122
+
1123
+ - **API Coverage:** All major Purview APIs including Unified Catalog, Data Map, Discovery, Collections
1124
+ - **Authentication:** Azure CLI, Service Principal, Managed Identity support
1125
+ - **Output Formats:** Table (default), JSON (plain), JSONC (colored)
1126
+ - **Bulk Operations:** Import/export terms from CSV/JSON, bulk delete scripts
1127
+
1128
+ ---
1129
+
1130
+ ## Recent Updates (October 2025)
1131
+
1132
+ ### ✅ Bulk Term Import/Export
1133
+ - Import multiple terms from CSV or JSON files
1134
+ - Dry-run mode for validation before import
1135
+ - Support for owners (Entra ID GUIDs), acronyms, resources
1136
+ - Progress tracking and detailed error reporting
1137
+ - 100% success rate in testing (8/8 terms)
1138
+
1139
+ ### ✅ PowerShell & Scripting Integration
1140
+ - New `--output` parameter with table/json/jsonc formats
1141
+ - Plain JSON works with PowerShell's `ConvertFrom-Json`
1142
+ - Compatible with jq, Python json module, and other tools
1143
+ - Migration from deprecated `--json` flag
1144
+
1145
+ ### ✅ Bulk Delete Scripts
1146
+ - PowerShell script with interactive confirmation ("DELETE" to confirm)
1147
+ - Python script with Rich progress bars
1148
+ - Beautiful UI with colored output
1149
+ - Success/failure tracking per term
1150
+ - Rate limiting (200ms delay)
1151
+
1152
+ ### ✅ Critical Fixes
1153
+ - **Owner ID Format:** Must use Entra ID Object IDs (GUIDs), not email addresses
1154
+ - **Domain Status:** Terms cannot be "Published" in unpublished domains - use "Draft"
1155
+ - **Error Validation:** Enhanced error handling shows actual API responses
1156
+
1157
+ ---
1158
+
1159
+ ## Key Features Summary
1160
+
1161
+ ### 🚀 **Unified Catalog (UC) - Complete Management**
1162
+ - Governance domains, glossary terms, data products
1163
+ - Objectives & Key Results (OKRs), Critical Data Elements (CDEs)
1164
+ - Health monitoring and workflow automation
1165
+ - Full CRUD operations with smart partial updates
1166
+
1167
+ ### 📦 **Bulk Operations**
1168
+ - CSV/JSON import with dry-run validation
1169
+ - PowerShell and Python bulk delete scripts
1170
+ - Progress tracking and error handling
1171
+ - Sample files and templates included
1172
+
1173
+ ### 📊 **Multiple Output Formats**
1174
+ - Table format for human viewing (default)
1175
+ - Plain JSON for PowerShell/bash scripting
1176
+ - Colored JSON for visual inspection
1177
+
1178
+ ### 🔧 **Automation & Integration**
1179
+ - Azure CLI, Service Principal, Managed Identity auth
1180
+ - Works in local development, CI/CD, and production
1181
+ - Compatible with PowerShell, bash, Python, jq
1182
+
1183
+ ### 📚 **Comprehensive Documentation**
1184
+ - Complete API coverage documentation
1185
+ - Jupyter notebook examples
1186
+ - Troubleshooting guides
1187
+ - Sample files and templates
1188
+
1189
+ ---
1190
+
880
1191
  ## Contributing & Support
881
1192
 
882
- - [Documentation](https://github.com/Keayoub/Purview_cli/blob/main/doc/README.md)
883
- - [Issue Tracker](https://github.com/Keayoub/Purview_cli/issues)
884
- - [Email Support](mailto:keayoub@msn.com)
1193
+ - **Documentation:** [Full Documentation](https://github.com/Keayoub/Purview_cli/blob/main/doc/README.md)
1194
+ - **Issue Tracker:** [GitHub Issues](https://github.com/Keayoub/Purview_cli/issues)
1195
+ - **Email Support:** [keayoub@msn.com](mailto:keayoub@msn.com)
1196
+ - **Repository:** [GitHub - Keayoub/Purview_cli](https://github.com/Keayoub/Purview_cli)
1197
+
1198
+ ---
1199
+
1200
+ ## License
1201
+
1202
+ See [LICENSE](LICENSE) file for details.
885
1203
 
886
1204
  ---
887
1205
 
888
- **PVW CLI empowers data engineers, stewards, and architects to automate, scale, and enhance their Microsoft Purview experience with powerful command-line and programmatic capabilities.**
1206
+ **PVW CLI v1.0.14 empowers data engineers, stewards, and architects to automate, scale, and enhance their Microsoft Purview experience with powerful command-line and programmatic capabilities.**
1207
+
1208
+ **Latest Features:** Bulk term import/export, PowerShell integration, multiple output formats, and comprehensive bulk delete scripts with beautiful progress tracking.