{"id":16788,"date":"2024-01-03T23:57:58","date_gmt":"2024-01-04T04:57:58","guid":{"rendered":"https:\/\/www.iri.com\/blog\/?p=16788"},"modified":"2025-09-15T08:39:13","modified_gmt":"2025-09-15T12:39:13","slug":"iri-darkshield-nosql-rpc-api","status":"publish","type":"post","link":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/","title":{"rendered":"IRI DarkShield-NoSQL RPC API"},"content":{"rendered":"<p><a href=\"https:\/\/www.iri.com\/products\/darkshield\"><span style=\"font-weight: 400;\">IRI DarkShield<\/span><\/a><span style=\"font-weight: 400;\"> Version 5 features a Remote Procedure Call (RPC) Application Programming Interface (API) for searching and masking data stored in NoSQL databases. This API supports the execution of DarkShield searching and masking jobs specified in the \u201c<\/span><a href=\"http:\/\/www.iri.com\/products\/workbench\/darkshield-gui\/nosql-masking\"><span style=\"font-weight: 400;\">New NoSQL Search\/Masking Job\u201d wizard<\/span><\/a><span style=\"font-weight: 400;\"> in IRI Workbench. You can also embed the same API as middleware in a pipeline outside of IRI Workbench; e.g., from a CI\/CD workflow or new program.<\/span><\/p>\n<p><em><strong>Editors Note<\/strong>: DarkShield Version 6 also includes a single-endpoint <a href=\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-rest-api\/\">REST API<\/a> that covers RDB, NoSQL DB, files, and streaming text sources.<\/em><\/p>\n<p><span style=\"font-weight: 400;\">Currently supported NoSQL database types <span id='easy-footnote-1-16788' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#easy-footnote-bottom-1-16788' title='&lt;span class=&quot;c6&quot;&gt;Additional NoSQL databases can be supported via the use of custom call programs in conjunction with \u00a0DarkShield Base and Files API; see examples\u00a0&lt;\/span&gt;&lt;span class=&quot;c6 c24&quot;&gt;&lt;a class=&quot;c8&quot; href=&quot;https:\/\/www.google.com\/url?q=https:\/\/github.com\/TeamIRI\/darkshield-api-demos&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1704343820200793&amp;amp;usg=AOvVaw3UmKHh8ipoFiV-gRNzqEKh&quot;&gt;here&lt;\/a&gt;&lt;\/span&gt;&lt;span class=&quot;c33 c6&quot;&gt;.'><sup>1<\/sup><\/a><\/span> <\/span><\/span><span style=\"font-weight: 400;\">include:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Cassandra<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Elasticsearch<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">MongoDB<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">The DarkShield NoSQL API is built as a plugin atop the IRI Web Services Platform (codenamed Plankton), which allows you to pick which services you require while utilizing the same hosting, configuration, and logging capabilities provided through the platform.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-16872 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/plankton-300x300.png\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/plankton-300x300.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/plankton.png 1024w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/plankton-150x150.png 150w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/plankton-768x768.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/plankton-1536x1536.png 1536w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/plankton-70x70.png 70w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Before continuing with this article, please familiarize yourself with the operations of the DarkShield-Files API in <\/span><a href=\"https:\/\/www.iri.com\/blog\/data-protection\/darkshield-files-rpc-api\/\"><span style=\"font-weight: 400;\">this article<\/span><\/a><span style=\"font-weight: 400;\"> and the base DarkShield API in <\/span><a href=\"http:\/\/www.iri.com\/blog\/data-protection\/darkshield-rpc-api\/\"><span style=\"font-weight: 400;\">this article<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The DarkShield-NoSQL API utilizes the DarkShield-Files API to handle binary data, and the base DarkShield API to handle non-binary values extracted from NoSQL sources.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16873\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/DS-api-plugins-300x180.png\" alt=\"\" width=\"425\" height=\"255\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/DS-api-plugins-300x180.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/DS-api-plugins-1024x614.png 1024w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/DS-api-plugins-768x461.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/DS-api-plugins-1536x922.png 1536w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/DS-api-plugins.png 1110w\" sizes=\"(max-width: 425px) 100vw, 425px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">All demos associated with this article can be downloaded from our Git repository <\/span><a href=\"https:\/\/github.com\/TeamIRI\/darkshield-api-demos\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">. To run the demos, you will need a working copy of the DarkShield-NoSQL API hosted locally on your computer. Contact your <\/span><a href=\"https:\/\/www.iri.com\/partners\/resellers\"><span style=\"font-weight: 400;\">IRI representative<\/span><\/a><span style=\"font-weight: 400;\"> for a free trial copy of the software.<\/span><\/p>\n<h5><b>NoSQL Search Contexts<\/b><\/h5>\n<p><span style=\"font-weight: 400;\">The NoSQL API introduces an extension to the File Search Context, called a NoSQL Search Context, for defining search criteria for a NoSQL database. The following snippet of the OpenAPI definition shows the structure of its schema:<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16874\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/nosql-searchcontext-300x71.png\" alt=\"\" width=\"689\" height=\"163\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/nosql-searchcontext-300x71.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/nosql-searchcontext-768x182.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/nosql-searchcontext.png 794w\" sizes=\"(max-width: 689px) 100vw, 689px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The NoSQL Search Context uses a <\/span><i><span style=\"font-weight: 400;\">name <\/span><\/i><span style=\"font-weight: 400;\">attribute to uniquely identify a context for performing search operations. The <\/span><i><span style=\"font-weight: 400;\">fileSearchContextName<\/span><\/i><span style=\"font-weight: 400;\"> attribute indicates a File Search Context that will be associated with the NoSQL Search Context. There is also a <\/span><i><span style=\"font-weight: 400;\">configs <\/span><\/i><span style=\"font-weight: 400;\">attribute used to pass parameters related to connecting and interacting with a NoSQL database.<\/span><\/p>\n<h5><b>NoSQL Mask Contexts<\/b><\/h5>\n<p><span style=\"font-weight: 400;\">The NoSQL API introduces an extension to the File Mask Context, a <\/span><i><span style=\"font-weight: 400;\">NoSQL Mask Context<\/span><\/i><span style=\"font-weight: 400;\">, for defining masking criteria for a NoSQL database. The following snippet of the OpenAPI definition shows the structure of its schema:<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16875\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/nosqlmaskcontext-300x71.png\" alt=\"\" width=\"690\" height=\"163\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/nosqlmaskcontext-300x71.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/nosqlmaskcontext-768x181.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/nosqlmaskcontext.png 790w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The NoSQL Mask Context <\/span><i><span style=\"font-weight: 400;\">name <\/span><\/i><span style=\"font-weight: 400;\">attribute uniquely identifies the context when performing masking operations. The <\/span><i><span style=\"font-weight: 400;\">fileMaskContextName<\/span><\/i><span style=\"font-weight: 400;\"> attribute indicates the File Mask Context that will be associated with the NoSQL Mask Context. There is also a <\/span><i><span style=\"font-weight: 400;\">configs <\/span><\/i><span style=\"font-weight: 400;\">attribute used to pass parameters for connecting and interacting with a NoSQL database.<\/span><\/p>\n<h5><b>NoSQL Search Configs<\/b><\/h5>\n<h6><strong>Cassandra configurations:<\/strong><\/h6>\n<table  class=\" table table-hover\" >\n<tbody>\n<tr>\n<td><\/td>\n<td><em>Key Name<\/em><\/td>\n<td><em>Description<\/em><\/td>\n<td><em>Optional or Required\u00a0<\/em><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Host<\/span><\/td>\n<td><span style=\"font-weight: 400;\">hostname<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Host(s) for connections. Expected as \u201chostA\u201d or \u201chostA,hostB,hostC\u201d.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no host is specified, will default to <\/span><i><span style=\"font-weight: 400;\">localhost<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Port<\/span><\/td>\n<td><span style=\"font-weight: 400;\">port<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Port for connection. Expected as integer (i.e. 123458)<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no port is specified, will default to <\/span><i><span style=\"font-weight: 400;\">9042.<\/span><\/i><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">User<\/span><\/td>\n<td><span style=\"font-weight: 400;\">username<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Username for connection.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no user is specified will connect without authenticating.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Password<\/span><\/td>\n<td><span style=\"font-weight: 400;\">password<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Password for connection.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no password is specified will connect without authenticating.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Data Center<\/span><\/td>\n<td><span style=\"font-weight: 400;\">dataCenter<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Data Center associated with database.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Table<\/span><\/td>\n<td><span style=\"font-weight: 400;\">collectionName<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Specify table name.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no table is specified will search all tables in a database.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">DB Type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Type is <\/span><i><span style=\"font-weight: 400;\">cassandra<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h6><strong>Elasticsearch configurations:<\/strong><\/h6>\n<table  class=\" table table-hover\" >\n<tbody>\n<tr>\n<td><\/td>\n<td><em>Key Name<\/em><\/td>\n<td><em>Description<\/em><\/td>\n<td><em>Optional or Required\u00a0<\/em><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Host<\/span><\/td>\n<td><span style=\"font-weight: 400;\">hostname<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Host(s) for connections. Expected as \u201chostA\u201d or \u201chostA,hostB,hostC\u201d.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no host is specified, will default to <\/span><i><span style=\"font-weight: 400;\">localhost<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Port<\/span><\/td>\n<td><span style=\"font-weight: 400;\">port<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Port for connection. Expected as integer (i.e. 123458)<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no port is specified, will default to <\/span><i><span style=\"font-weight: 400;\">9200.<\/span><\/i><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">User<\/span><\/td>\n<td><span style=\"font-weight: 400;\">username<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Username for connection.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no user is specified will connect without authenticating.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Password<\/span><\/td>\n<td><span style=\"font-weight: 400;\">password<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Password for connection.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no password is specified will connect without authenticating.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Index<\/span><\/td>\n<td><span style=\"font-weight: 400;\">collectionName<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Specify Index name.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">DB Type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Type is <\/span><i><span style=\"font-weight: 400;\">elasticsearch<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h6><strong>MongoDB configurations:<\/strong><\/h6>\n<table  class=\" table table-hover\" >\n<tbody>\n<tr>\n<td style=\"width: 85px;\"><\/td>\n<td style=\"width: 114px;\"><em>Key Name<\/em><\/td>\n<td style=\"width: 256px;\"><em>Description<\/em><\/td>\n<td style=\"width: 236px;\"><em>Optional or Required\u00a0<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 85px;\"><span style=\"font-weight: 400;\">URL<\/span><\/td>\n<td style=\"width: 114px;\"><span style=\"font-weight: 400;\">url<\/span><\/td>\n<td style=\"width: 256px;\"><span style=\"font-weight: 400;\">The url connection string. See MongoDB <\/span><a href=\"https:\/\/www.mongodb.com\/docs\/manual\/reference\/connection-string\/\"><span style=\"font-weight: 400;\">documentation<\/span><\/a><span style=\"font-weight: 400;\"> for supported formats.<\/span><\/td>\n<td style=\"width: 236px;\"><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 85px;\"><span style=\"font-weight: 400;\">Database<\/span><\/td>\n<td style=\"width: 114px;\"><span style=\"font-weight: 400;\">databaseName<\/span><\/td>\n<td style=\"width: 256px;\"><span style=\"font-weight: 400;\">Specify name of database.<\/span><\/td>\n<td style=\"width: 236px;\"><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 85px;\"><span style=\"font-weight: 400;\">Collection<\/span><\/td>\n<td style=\"width: 114px;\"><span style=\"font-weight: 400;\">collectionName<\/span><\/td>\n<td style=\"width: 256px;\"><span style=\"font-weight: 400;\">Specify name of collection.<\/span><\/td>\n<td style=\"width: 236px;\"><span style=\"font-weight: 400;\">Optional: if no collection is specified, will search all collections in the database.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 85px;\"><span style=\"font-weight: 400;\">GridFS Bucket<\/span><\/td>\n<td style=\"width: 114px;\"><span style=\"font-weight: 400;\">gridFSBucket<\/span><\/td>\n<td style=\"width: 256px;\"><span style=\"font-weight: 400;\">Specify GridFS bucket name.<\/span><\/td>\n<td style=\"width: 236px;\"><span style=\"font-weight: 400;\">Optional: if the bucket is specified will ignore collections.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 85px;\"><span style=\"font-weight: 400;\">DB Type<\/span><\/td>\n<td style=\"width: 114px;\"><span style=\"font-weight: 400;\">type<\/span><\/td>\n<td style=\"width: 256px;\"><span style=\"font-weight: 400;\">Type is <\/span><i><span style=\"font-weight: 400;\">mongodb<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/td>\n<td style=\"width: 236px;\"><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5><b>NoSQL Mask Configs<\/b><\/h5>\n<h6><b>Cassandra configurations<\/b><span style=\"font-weight: 400;\">:<\/span><\/h6>\n<table  class=\" table table-hover\" >\n<tbody>\n<tr>\n<td><\/td>\n<td><em><span style=\"font-weight: 400;\">Key Name<\/span><\/em><\/td>\n<td><em><span style=\"font-weight: 400;\">Description<\/span><\/em><\/td>\n<td><em><span style=\"font-weight: 400;\">Optional or Required\u00a0<\/span><\/em><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Host<\/span><\/td>\n<td><span style=\"font-weight: 400;\">hostname<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Host(s) for connections. Expected as \u201chostA\u201d or \u201chostA,hostB,hostC\u201d.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no host is specified it will default to <\/span><i><span style=\"font-weight: 400;\">localhost<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Port<\/span><\/td>\n<td><span style=\"font-weight: 400;\">port<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Port for connection. Expected as integer (i.e. 12345)<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no port is specified, will default to <\/span><i><span style=\"font-weight: 400;\">9042.<\/span><\/i><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">User<\/span><\/td>\n<td><span style=\"font-weight: 400;\">username<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Username for connection.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no user is specified will connect without authenticating.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Password<\/span><\/td>\n<td><span style=\"font-weight: 400;\">password<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Password for connection.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no password is specified will connect without authenticating.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Data Center<\/span><\/td>\n<td><span style=\"font-weight: 400;\">dataCenter<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Data Center associated with database.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Table<\/span><\/td>\n<td><span style=\"font-weight: 400;\">collectionName<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Specify table name.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if table is specified will write all content from source to target table else will Upsert to tables that share the same name as source.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">DB Type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Type is <\/span><i><span style=\"font-weight: 400;\">cassandra.<\/span><\/i><\/td>\n<td><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h6><b>Elasticsearch configurations<\/b><span style=\"font-weight: 400;\">:<\/span><\/h6>\n<table  class=\" table table-hover\" >\n<tbody>\n<tr>\n<td><\/td>\n<td><em><span style=\"font-weight: 400;\">Key Name<\/span><\/em><\/td>\n<td><em><span style=\"font-weight: 400;\">Description<\/span><\/em><\/td>\n<td><em><span style=\"font-weight: 400;\">Optional or Required\u00a0<\/span><\/em><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Host<\/span><\/td>\n<td><span style=\"font-weight: 400;\">hostname<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Host(s) for connections. Expected as \u201chostA\u201d or \u201chostA,hostB,hostC\u201d.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no host is specified it will default to <\/span><i><span style=\"font-weight: 400;\">localhost<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Port<\/span><\/td>\n<td><span style=\"font-weight: 400;\">port<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Port for connection. Expected as integer (i.e. 12345)<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no port is specified it will default to <\/span><i><span style=\"font-weight: 400;\">9200.<\/span><\/i><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">User<\/span><\/td>\n<td><span style=\"font-weight: 400;\">username<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Username for connection.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no user is specified will connect without authenticating.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Password<\/span><\/td>\n<td><span style=\"font-weight: 400;\">password<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Password for connection.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no password is specified will connect without authenticating.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Index<\/span><\/td>\n<td><span style=\"font-weight: 400;\">collectionName<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Specify Index name.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no index name is provided, will write to an index of the same name as source index.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">DB Type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Type is <\/span><i><span style=\"font-weight: 400;\">elasticsearch<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h6><b>MongoDB configurations<\/b><span style=\"font-weight: 400;\">:<\/span><\/h6>\n<table  class=\" table table-hover\" >\n<tbody>\n<tr>\n<td><\/td>\n<td><em><span style=\"font-weight: 400;\">Key Name<\/span><\/em><\/td>\n<td><em><span style=\"font-weight: 400;\">Description<\/span><\/em><\/td>\n<td><em><span style=\"font-weight: 400;\">Optional or Required\u00a0<\/span><\/em><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">URL<\/span><\/td>\n<td><span style=\"font-weight: 400;\">url<\/span><\/td>\n<td><span style=\"font-weight: 400;\">The url connection string. See MongoDB <\/span><a href=\"https:\/\/www.mongodb.com\/docs\/manual\/reference\/connection-string\/\"><span style=\"font-weight: 400;\">documentation<\/span><\/a><span style=\"font-weight: 400;\"> for supported formats.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Database<\/span><\/td>\n<td><span style=\"font-weight: 400;\">databaseName<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Specify name of database.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Collection<\/span><\/td>\n<td><span style=\"font-weight: 400;\">collectionName<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Specify name of collection.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no collection is specified, will write to a collection of the same name as source index.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">GridFS Bucket<\/span><\/td>\n<td><span style=\"font-weight: 400;\">gridFSBucket<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Specify GridFS bucket name.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Optional: if no bucket is specified will upsert to a bucket with the same name as bucket from source.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">DB Type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Type is <\/span><i><span style=\"font-weight: 400;\">mongodb<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5><b>DarkShield-NoSQL API Endpoints<\/b><\/h5>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16877\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/DS-nosql-api-search-mask-job-300x169.jpg\" alt=\"\" width=\"566\" height=\"319\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/DS-nosql-api-search-mask-job-300x169.jpg 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/DS-nosql-api-search-mask-job-1024x576.jpg 1024w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/DS-nosql-api-search-mask-job-768x432.jpg 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/DS-nosql-api-search-mask-job-scaled.jpg 1110w\" sizes=\"(max-width: 566px) 100vw, 566px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The NoSQL API is an extension of the Files API, which is an extension of the DarkShield base API. As such the NoSQL API requires not only NoSQL Search\/Mask Contexts, but File Search\/Mask Contexts and base API Search\/Mask Contexts to be created via their respective endpoints.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A breakdown of API endpoint calls is as follows:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Search Job<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/searchContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/files\/fileSearchContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlSearchContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlSearchContext.search<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlSearchContext.destroy<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/files\/fileSearchContext.destroy<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/searchContext.destroy<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Mask Job<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/maskContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/files\/fileMaskContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlMaskContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlMaskContext.mask<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlMaskContext.destroy<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/files\/fileMaskContext.destroy<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/maskContext.destroy<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Search and Mask Job<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/searchContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/maskContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/files\/fileSearchContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/files\/fileMaskContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlSearchContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlMaskContext.create<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlSearchContext.mask<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlSearchContext.destroy<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/nosql\/nosqlMaskContext.destroy<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/files\/fileSearchContext.destroy<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/files\/fileMaskContext.destroy<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/searchContext.destroy<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">\/api\/darkshield\/maskContext.destroy<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h5><b>Search\/Mask Contexts and File Search\/Mask Contexts Example<\/b><\/h5>\n<p><span style=\"font-weight: 400;\">Below are examples of requests made to generate Search\/Mask Contexts and File Search\/Mask Contexts, using Postman to display the body of the POST request.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16878\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/Search-Context-with-email-matcher-300x153.png\" alt=\"\" width=\"672\" height=\"342\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Search-Context-with-email-matcher-300x153.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Search-Context-with-email-matcher.png 618w\" sizes=\"(max-width: 672px) 100vw, 672px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">Search Context with email matcher<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16879\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/File-Search-Context-1-300x148.png\" alt=\"\" width=\"681\" height=\"336\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/File-Search-Context-1-300x148.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/File-Search-Context-1.png 603w\" sizes=\"(max-width: 681px) 100vw, 681px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">File Search Context<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16880\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/Mask-Context-with-hash-rule-300x226.png\" alt=\"\" width=\"655\" height=\"493\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Mask-Context-with-hash-rule-300x226.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Mask-Context-with-hash-rule.png 607w\" sizes=\"(max-width: 655px) 100vw, 655px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">Mask Context with hash rule<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16881\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/file-mask-context-1-300x146.png\" alt=\"\" width=\"659\" height=\"321\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/file-mask-context-1-300x146.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/file-mask-context-1.png 605w\" sizes=\"(max-width: 659px) 100vw, 659px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">File Mask Context<\/span><\/i><\/p>\n<h5><b>Cassandra NoSQL Search\/Mask Context Example<\/b><\/h5>\n<p><span style=\"font-weight: 400;\">Below are examples of requests made to generate NoSQL Search\/Mask Contexts for Cassandra, using Postman to display the body of the POST request.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16882\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/Cassandra-NoSQL-Search-Context-300x140.png\" alt=\"\" width=\"724\" height=\"338\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Cassandra-NoSQL-Search-Context-300x140.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Cassandra-NoSQL-Search-Context.png 622w\" sizes=\"(max-width: 724px) 100vw, 724px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">Cassandra NoSQL Search Context<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16883\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/Cassandra-NoSQL-Mask-Context-1-300x136.png\" alt=\"\" width=\"705\" height=\"320\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Cassandra-NoSQL-Mask-Context-1-300x136.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Cassandra-NoSQL-Mask-Context-1-768x348.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Cassandra-NoSQL-Mask-Context-1.png 825w\" sizes=\"(max-width: 705px) 100vw, 705px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">Cassandra NoSQL Mask Context<\/span><\/i><\/p>\n<h5><b>Elasticsearch NoSQL Search\/Mask Context Example<\/b><\/h5>\n<p><span style=\"font-weight: 400;\">Below are examples of requests made to generate NoSQL Search\/Mask Contexts for Elasticsearch, using Postman to display the body of the POST request.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16884\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/Elasticsearch-NoSQL-Search-Context-300x164.png\" alt=\"\" width=\"633\" height=\"346\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Elasticsearch-NoSQL-Search-Context-300x164.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Elasticsearch-NoSQL-Search-Context.png 605w\" sizes=\"(max-width: 633px) 100vw, 633px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">Elasticsearch NoSQL Search Context<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16885\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/Elasticsearch-NoSQL-Mask-Context-300x163.png\" alt=\"\" width=\"640\" height=\"348\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Elasticsearch-NoSQL-Mask-Context-300x163.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Elasticsearch-NoSQL-Mask-Context.png 605w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">Elasticsearch NoSQL Mask Context<\/span><\/i><\/p>\n<h5><b>MongoDB NoSQL Search\/Mask Context Example<\/b><\/h5>\n<p><span style=\"font-weight: 400;\">Below are examples of requests made to generate NoSQL Search\/Mask Contexts for MongoDB, using Postman to display the body of the POST request.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16887\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/MongoDB-NoSQL-Search-Context-300x165.png\" alt=\"\" width=\"624\" height=\"343\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/MongoDB-NoSQL-Search-Context-300x165.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/MongoDB-NoSQL-Search-Context.png 603w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">MongoDB NoSQL Search Context<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16888\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/MongoDB-NoSQL-Mask-Context-300x163.png\" alt=\"\" width=\"642\" height=\"349\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/MongoDB-NoSQL-Mask-Context-300x163.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/MongoDB-NoSQL-Mask-Context.png 612w\" sizes=\"(max-width: 642px) 100vw, 642px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">MongoDB NoSQL Mask Context<\/span><\/i><\/p>\n<h5><b>NoSQL Search and Mask Operation<\/b><\/h5>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16889\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/Performing-search-and-mask-operation-1-300x68.png\" alt=\"\" width=\"743\" height=\"168\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Performing-search-and-mask-operation-1-300x68.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Performing-search-and-mask-operation-1.png 721w\" sizes=\"(max-width: 743px) 100vw, 743px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">Performing search and mask operations using Search Contexts and Mask Contexts <\/span><\/i><i><span style=\"font-weight: 400;\">previously created<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16890\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/Original-Mongo-document-300x246.png\" alt=\"\" width=\"567\" height=\"465\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Original-Mongo-document-300x246.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Original-Mongo-document.png 577w\" sizes=\"(max-width: 567px) 100vw, 567px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">Original Mongo document<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16891\" src=\"\/blog\/wp-content\/uploads\/2024\/01\/Emails-were-masked-in-the-Mongo-document-300x249.png\" alt=\"\" width=\"561\" height=\"466\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Emails-were-masked-in-the-Mongo-document-300x249.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Emails-were-masked-in-the-Mongo-document.png 579w\" sizes=\"(max-width: 561px) 100vw, 561px\" \/><\/p>\n<p style=\"text-align: center;\"><i><span style=\"font-weight: 400;\">\u00a0Emails were masked in the Mongo document<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">If you would like help searching or masking data in your NoSQL database \u2013 or in any other data source(s) \u2013 please contact your IRI <\/span><a href=\"https:\/\/www.iri.com\/partners\/resellers\"><span style=\"font-weight: 400;\">representative<\/span><\/a><span style=\"font-weight: 400;\"> or email <\/span><a href=\"mailto:darkshield@iri.com\"><span style=\"font-weight: 400;\">darkshield@iri.com<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>IRI DarkShield Version 5 features a Remote Procedure Call (RPC) Application Programming Interface (API) for searching and masking data stored in NoSQL databases. This API supports the execution of DarkShield searching and masking jobs specified in the \u201cNew NoSQL Search\/Masking Job\u201d wizard in IRI Workbench. You can also embed the same API as middleware in<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/\" title=\"IRI DarkShield-NoSQL RPC API\">Read More<\/a><\/div>\n","protected":false},"author":152,"featured_media":16871,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[8,3],"tags":[1723,1496,1305,1790,17,1727,369,1872,1722,1495,1760,1750],"class_list":["post-16788","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-protection","category-vldb-operations","tag-darkshield-nosql-rpc-api","tag-darkshield-rpc-api","tag-data-masking-tools","tag-data-privacy-tools","tag-data-protection-tool","tag-masking-nosql-db","tag-nosql","tag-nosql-database-security","tag-nosql-rpc-api","tag-rpc-api","tag-sensitive-data-masking","tag-sensitive-data-protection"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.4 (Yoast SEO v23.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>IRI DarkShield-NoSQL RPC API - IRI<\/title>\n<meta name=\"description\" content=\"IRI DarkShield Version 5 features a Remote Procedure Call (RPC) Application Programming Interface (API) for searching and masking data stored in NoSQL databases. This API supports the execution of DarkShield searching and masking jobs specified in the \u201cNew NoSQL Search\/Masking Job\u201d wizard in IRI Workbench. You can also embed the same API as middleware in a pipeline outside of IRI Workbench; e.g., from a CI\/CD workflow or new program.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"IRI DarkShield-NoSQL RPC API\" \/>\n<meta property=\"og:description\" content=\"IRI DarkShield Version 5 features a Remote Procedure Call (RPC) Application Programming Interface (API) for searching and masking data stored in NoSQL databases. This API supports the execution of DarkShield searching and masking jobs specified in the \u201cNew NoSQL Search\/Masking Job\u201d wizard in IRI Workbench. You can also embed the same API as middleware in a pipeline outside of IRI Workbench; e.g., from a CI\/CD workflow or new program.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-04T04:57:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-15T12:39:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png\" \/>\n\t<meta property=\"og:image:width\" content=\"768\" \/>\n\t<meta property=\"og:image:height\" content=\"368\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Adam Lewis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adam Lewis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/\"},\"author\":{\"name\":\"Adam Lewis\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/37c0e5beab094bd61cc521902df2876e\"},\"headline\":\"IRI DarkShield-NoSQL RPC API\",\"datePublished\":\"2024-01-04T04:57:58+00:00\",\"dateModified\":\"2025-09-15T12:39:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/\"},\"wordCount\":1473,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png\",\"keywords\":[\"DarkShield NoSQL RPC API\",\"DarkShield RPC API\",\"data masking tools\",\"data privacy tools\",\"data protection tool\",\"Masking NoSQL DB\",\"NoSQL\",\"NoSQL database security\",\"NoSQL RPC API\",\"RPC API\",\"sensitive data masking\",\"sensitive data protection\"],\"articleSection\":[\"Data Masking\/Protection\",\"VLDB\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/\",\"url\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/\",\"name\":\"IRI DarkShield-NoSQL RPC API - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png\",\"datePublished\":\"2024-01-04T04:57:58+00:00\",\"dateModified\":\"2025-09-15T12:39:13+00:00\",\"description\":\"IRI DarkShield Version 5 features a Remote Procedure Call (RPC) Application Programming Interface (API) for searching and masking data stored in NoSQL databases. This API supports the execution of DarkShield searching and masking jobs specified in the \u201cNew NoSQL Search\/Masking Job\u201d wizard in IRI Workbench. You can also embed the same API as middleware in a pipeline outside of IRI Workbench; e.g., from a CI\/CD workflow or new program.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#primaryimage\",\"url\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png\",\"contentUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png\",\"width\":768,\"height\":368},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"IRI DarkShield-NoSQL RPC API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.iri.com\/blog\/#website\",\"url\":\"https:\/\/www.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/www.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"width\":750,\"height\":206,\"caption\":\"IRI\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/37c0e5beab094bd61cc521902df2876e\",\"name\":\"Adam Lewis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g\",\"caption\":\"Adam Lewis\"},\"url\":\"https:\/\/www.iri.com\/blog\/author\/adaml\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"IRI DarkShield-NoSQL RPC API - IRI","description":"IRI DarkShield Version 5 features a Remote Procedure Call (RPC) Application Programming Interface (API) for searching and masking data stored in NoSQL databases. This API supports the execution of DarkShield searching and masking jobs specified in the \u201cNew NoSQL Search\/Masking Job\u201d wizard in IRI Workbench. You can also embed the same API as middleware in a pipeline outside of IRI Workbench; e.g., from a CI\/CD workflow or new program.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/","og_locale":"en_US","og_type":"article","og_title":"IRI DarkShield-NoSQL RPC API","og_description":"IRI DarkShield Version 5 features a Remote Procedure Call (RPC) Application Programming Interface (API) for searching and masking data stored in NoSQL databases. This API supports the execution of DarkShield searching and masking jobs specified in the \u201cNew NoSQL Search\/Masking Job\u201d wizard in IRI Workbench. You can also embed the same API as middleware in a pipeline outside of IRI Workbench; e.g., from a CI\/CD workflow or new program.","og_url":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/","og_site_name":"IRI","article_published_time":"2024-01-04T04:57:58+00:00","article_modified_time":"2025-09-15T12:39:13+00:00","og_image":[{"width":768,"height":368,"url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png","type":"image\/png"}],"author":"Adam Lewis","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Adam Lewis","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#article","isPartOf":{"@id":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/"},"author":{"name":"Adam Lewis","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/37c0e5beab094bd61cc521902df2876e"},"headline":"IRI DarkShield-NoSQL RPC API","datePublished":"2024-01-04T04:57:58+00:00","dateModified":"2025-09-15T12:39:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/"},"wordCount":1473,"commentCount":0,"publisher":{"@id":"https:\/\/www.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png","keywords":["DarkShield NoSQL RPC API","DarkShield RPC API","data masking tools","data privacy tools","data protection tool","Masking NoSQL DB","NoSQL","NoSQL database security","NoSQL RPC API","RPC API","sensitive data masking","sensitive data protection"],"articleSection":["Data Masking\/Protection","VLDB"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/","url":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/","name":"IRI DarkShield-NoSQL RPC API - IRI","isPartOf":{"@id":"https:\/\/www.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#primaryimage"},"image":{"@id":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png","datePublished":"2024-01-04T04:57:58+00:00","dateModified":"2025-09-15T12:39:13+00:00","description":"IRI DarkShield Version 5 features a Remote Procedure Call (RPC) Application Programming Interface (API) for searching and masking data stored in NoSQL databases. This API supports the execution of DarkShield searching and masking jobs specified in the \u201cNew NoSQL Search\/Masking Job\u201d wizard in IRI Workbench. You can also embed the same API as middleware in a pipeline outside of IRI Workbench; e.g., from a CI\/CD workflow or new program.","breadcrumb":{"@id":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#primaryimage","url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png","contentUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png","width":768,"height":368},{"@type":"BreadcrumbList","@id":"https:\/\/www.iri.com\/blog\/data-protection\/iri-darkshield-nosql-rpc-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"IRI DarkShield-NoSQL RPC API"}]},{"@type":"WebSite","@id":"https:\/\/www.iri.com\/blog\/#website","url":"https:\/\/www.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/www.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.iri.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/www.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","width":750,"height":206,"caption":"IRI"},"image":{"@id":"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/37c0e5beab094bd61cc521902df2876e","name":"Adam Lewis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g","caption":"Adam Lewis"},"url":"https:\/\/www.iri.com\/blog\/author\/adaml\/"}]}},"jetpack_featured_media_url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2024\/01\/Featured-Image-DS-NoSQL-rpc-api.png","_links":{"self":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/16788"}],"collection":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/users\/152"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=16788"}],"version-history":[{"count":11,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/16788\/revisions"}],"predecessor-version":[{"id":18594,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/16788\/revisions\/18594"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/media\/16871"}],"wp:attachment":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=16788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=16788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=16788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}