{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"ba2ccc7b-f329-47c3-8792-83dfe106125b","name":"PVML Documentation","description":"<img src=\"https://pvml.com/wp-content/uploads/2024/11/img-3d-home-hero.png?t=1735745544&amp;t=1735745544\">\n\n# 📄 Get started here!\n\n## Introduction\n\nPVML is an IT infrastructure that lets organizations spin up **Virtual Databases (VDBs)**, logical and policy-controlled data access layers, on top of their existing data stack in seconds, **without moving or duplicating data.**\n\nEach VDB enforces **fine-grained access controls** such as column-level policies, row-level security (RLS), query timeout, dynamic masking, and differential privacy, **independent of the capabilities of the underlying database**.\n\nVDBs are instantly consumable by **any client** through standard protocols, including:\n\n- **ODBC/JDBC** - for BI tools (Tableau, PowerBI, etc.)\n    \n- **MCP** (Model Context Protocol) - for GenAI applications and platforms (ChatGPT, Google AgentSpace, LangChain, etc.)\n    \n- **API -** for custom applications, agents, services, and programmatic integrations via REST/HTTP interfaces\n    \n\n### How it works\n\nA VDB consists of 2 components:\n\n- _**PVML Proxy Engine**_ (reverse-proxy), matches any underlying database technology and can decode any query.\n    \n- _**PVML Security Engine**_ (compiler), dialect-agnostic, can reconstruct any query and re-build it into a secure query. This means that guardrails enforcement is done solely as **pre-processing** via query transformation, making the solution **efficient, secure, and optimized** (under 3ms overhead).\n    \n\nA VDB **does not ingest or store raw data**. It acts like a database from a **connectivity & enforcement** perspective:\n\n- Exposing standard interfaces such as **ODBC/JDBC** for BI tools and **MCP/A2A/API** for GenAI agents.\n    \n- Independently enforcing guardrails at runtime.\n    \n- Built-in user-level authentication (oAuth for MCP)\n    \n- Every data interaction is automatically audited\n    \n\n### What's Our Edge?\n\nWe deliver **bionic security at enterprise scale**, bringing deterministic security to the non-deterministic GenAI era by combining advanced guardrails with runtime enforcement, so every AI interaction with enterprise data is governed and auditable by design.\n\nOur solution is 100% LLM free ✨\n\n### Impact\n\n- **Determinstic Security by Design:** GenAI requires security that is not probabilistic, but predictable and auditable.\n    \n- **No Workflow Changes:** Legacy code from 30 years ago works as-is. Modern AI agents connect just the same.\n    \n- **Enterprise-Grade Scale & Performance:** No more encryption or synthetic data. Get live, secure access with sub-3 ms latency.\n    \n- **No Data Movement or Duplication:** No siloed copies, no stale extracts. On-demand Virtual Databases for any usecase.\n    \n- **Context-Aware Access at Scale:** Infinite virtual databases over the same underlying data, enabling context-specific access identities at scale.\n    \n\n## Guardrails\n\nIT teams can now unify permissions across all data sources through a centralized infrastructure plane. This eliminates inconsistent enforcement across systems, reduces operational complexity, and applies security controls uniformly at enterprise scale.\n\nOur **Security Engine** enables highly granular access control, including:\n\n1. Column level scoping\n    \n2. Row level security (RLS)\n    \n3. Dynamic masking\n    \n4. Differential Privacy\n    \n5. Query Validations\n    \n\n### Differential Privacy - PVML's Proprietary Algorithms\n\nPVML offers a robust data protection technology called Differential Privacy to protect data outputs with mathematical guarantees of individual privacy. This concept is unique since it requires no alterations to the underlying data, ensuring privacy is enforced at the output level of the analysis.\n\n## Audit & Visibility\n\n<img src=\"https://content.pstmn.io/d3213f81-f0b8-4f57-865d-2bf124171348/QXVkaXQucG5n\">\n\nEach virtual DB provides full visibility over all data interactions. You can track queries of all users, succes/failure rates, run duration and even the free text questions used in agentic pipelines.\n\n### Security and Compliance Applications\n\nSecurity and compliance teams gain structured audit and security logs for every data interaction, including query metadata, user metadata, and policy violation attempts. Logs are emitted as JSON via stdout and integrate directly with standard observability and SIEM pipelines such as ELK, CloudWatch, Datadog, and enterprise monitoring platforms for investigations, threat detection, and compliance reporting.\n\n### Product and Business Applications\n\nProduct teams gain visibility into how users and AI agents interact with data through free-text questions, latency metrics, and success/failure tracking. Teams can identify recurring questions, repeated failures, broken workflows, and inefficient queries to improve agent behavior, optimize applications, refine prompts, and prioritize product improvements based on real usage patterns.\n\n## How Does PVML Speed Up My GenAI Initiatives?\n\n- **Security:** VDB guardrails can be tailored to compliance and governance requirements, enabling initiatives previously blocked by security constraints.\n    \n- **Connectivity:** PVML automatically provides an MCP/A2A/API for each virtual database, plug-n-play into any agent building platform (e.g., Anthropic Claude, OpenAI ChatGPT, Microsoft Copilot Studio), AI application (e.g., Cursot, Claude Code) or internal solution (e.g., built on LangChain).\n    \n- **Performace & Accuracy:** Each VDB can be optimally scoped for the GenAI initiative and includes a semantic layer for describing metadata and business context to LLMs, improving query generation, reasoning quality, response reliability, and overall application performance.\n    \n\nNote: **We don’t rely on AI to enforce privacy and security**. Instead, all LLM-generated queries are routed through our dedicated Security Engine, which ensures that results adhere to the VDB guardrails.\n\n## How is PVML Compliant?\n\nPVML provides cutting-edge data protection solutions powered by our proprietary Differential Privacy (DP) technology, recognized by the [EU Data Protection Board](https://pvml.com/blog/differential-privacy-what-is-art-29-wp-really-saying-about-data-anonymization/) as the only method capable of defending against all known data attack vectors. [The EU Act](https://pvml.com/blog/the-european-data-act-a-new-era-for-privacy-regulation/#:~:text=Differential%20privacy%20enables%20secure%20data%20sharing%20while%20providing%20robust%20privacy%20guarantees.&text=Extending%20privacy%20scrutiny%20to%20non,personal%20data%20under%20the%20GDPR.) further underscores the importance of privacy-preserving technologies (PPT) like Differential Privacy. Our approach enables clients to securely access sensitive data without ever compromising privacy. As a SOC2-certified company, we adhere to rigorous standards for security, availability, and confidentiality, reaffirming our commitment to protecting data by design.\n\n<img src=\"https://content.pstmn.io/0e215e0b-7f7a-4d83-bd7a-50ea22947555/UFZNTCAoMSkucG5n\" alt=\"PVML's%20Certifications\" width=\"424\" height=\"140\">\n\n## PVML Architecture\n\nPVML's virtual databases require no installation, data movement, duplication, or modifications. This approach ensures that we do not store any sensitive raw data while providing a quick onboarding process with no changes to the existing workflow of end users.\n\nPVML can be deployed as a SaaS solution in any cloud environment (AWS, GCP, Azure) or on-premises in air-gapped environments.\n\n<img src=\"https://content.pstmn.io/15dd45b4-42ac-4380-8d8a-3b05823470f0/UFZNTCAoMSkucG5n\" alt=\"PVML%20Architecture%20(GCP%20example)\">\n\n## How do I get started?\n\n### Via API\n\nThis documentation thoroughly covers all the essential APIs needed to manage your data access effectively.\n\nTo get your API key and get started, navigate to **Connections > REST API > Create.**\n\nYou can open the documentation on Postman to easily test and run API calls.\n\n<img src=\"https://content.pstmn.io/987b1caf-62b5-4687-bc4c-d864a2152a32/U2NyZWVuc2hvdCAyMDI1LTAyLTI1IGF0IDE0LjM0LjI1LnBuZw==\" alt=\"Test%20and%20execute%20PVML%20API%20calls\">\n\nThe fundamental elements necessary for PVML to function are the **Datasources and Policies**. Once these are configured and users are invited/created, you can use the policies as building blocks to create your desired **Virtual DBs**.\n\nWe'll guide you through each step in the following sections to help you get everything up and running!\n\n### Via Python SDK\n\nThe [PVML Python SDK](https://gitlab.com/pvml-infra/pvml-sdk) streamlines access to all key features of our platform, offering pre-built methods for API operations and efficient handling of data access workflows. It’s designed to help you integrate and automate tasks with minimal setup.\n\n<img src=\"https://content.pstmn.io/4e250a72-1d6f-418c-b379-a68492519e5d/U2NyZWVuc2hvdCAyMDI2LTAyLTE4IGF0IDE0LjU2LjU2LnBuZw==\" alt=\"PVML%20Python%20SDK%20-%20example\">\n\n### Via User Interface (Platform)\n\nPVML is fully available through the API, but we also have a really user-friendly UI platform ([AWS](https://platform.pvml.com)/[GCP](https://gcp.pvml.com)) with a complete walkthrough to guide you through everything hand in hand!\n\n<img src=\"https://content.pstmn.io/e1865b50-92d6-4106-bfe7-bf0b6a9c3a54/VW50aXRsZWQgZGVzaWduICgyKS5wbmc=\" alt=\"PVML%20Platform%20Walkthrough\">\n\n### **Contact and Support**\n\nIn case you have questions, want to report an error or bug, or simply need additional assitance - don't hesitate to contact us at [<b>support@pvml.com</b>](https://mailto:support@pvml.com) or fill out a form [here](https://pvml.com/contact-us/).","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"27304672","team":5680742,"collectionId":"ba2ccc7b-f329-47c3-8792-83dfe106125b","publishedId":"2sAYBPmuPe","public":true,"publicUrl":"https://api.pvml.com","privateUrl":"https://go.postman.co/documentation/27304672-ba2ccc7b-f329-47c3-8792-83dfe106125b","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"7177F8"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":"PVML API"}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/fbc0f98b-6d6b-4ee9-a2d4-4e7e59459680/bG9nbyB0LnBuZw==","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"3FE0D0"}},{"name":"light","logo":"https://content.pstmn.io/f9114f35-1505-47a6-a4d0-cbedabd9b37f/bG9nbyBwLnBuZw==","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"7177F8"}}]}},"version":"8.10.1","publishDate":"2024-11-17T12:42:22.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"PVML API","description":""},"logos":{"logoLight":"https://content.pstmn.io/f9114f35-1505-47a6-a4d0-cbedabd9b37f/bG9nbyBwLnBuZw==","logoDark":"https://content.pstmn.io/fbc0f98b-6d6b-4ee9-a2d4-4e7e59459680/bG9nbyB0LnBuZw=="}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/7c14f421f8143344b1427bc88c953feee17f8c6098ff91da7e16b432f61ac8c8","favicon":"https://pvml.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://api.pvml.com/view/metadata/2sAYBPmuPe"}