Cosmos DB Connector
Documentation
Version: 2
Documentation

Cosmos DB Connector - Source Code


<?xml version="1.0" encoding="utf-8"?>
<ApiConfig Name="Cosmos DB"
           Desc="Connect to your Azure Cosmos DB databases to read, query, create, update, and delete documents and more!"
           Version="2"
           Slug="cosmosdb-connector"
           Id="b892d532-b55f-4c6c-b719-96a100bffae6"
           EngineVersion="12"
           Logo="data:image/png;base64,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"
           >
  <VersionHistory>
	<Change Date="2024-04-05" Type="Fix">Change default rows per page (MaxItemCount) from 100 to 1000 for performance improvement</Change>  
	<Change Date="2024-04-05" Type="Fix">Maximum 10000 rows are fetched becuase PagingByUrlMaxPages is set to 100 by default. It needs to be 0 for unlimited pages.</Change>
    <Change Date="2023-08-31" Type="Fix">get_document throws error on UI due to bad options for ConsistencyLevel</Change>
    <Change Date="2023-05-20" Type="New">Initial version</Change>
  </VersionHistory>


  <ServiceUrls>
    <ServiceUrl Name="Cosmos DB Service Url" Url="https://[$Account$].documents.azure.com" />
  </ServiceUrls>


  <Auths>
    <Auth Name="ApiKey"
          Type="Http"
          ConnStr="CredentialType=HashSignature;HashSignatureFormat=[$http-method$]-lc[$lf$][$url-part-regex-(/(?&lt;resourcetype&gt;dbs|colls|docs|users|permissions|sprocs|attachments|pkranges)(/([\w\d-\$\.=])+)?$){{0,resourcetype}}$]-lc[$lf$][$url-part-regex-(?&lt;id&gt;dbs/([\w \d-+=.]+)$)|((?&lt;id&gt;dbs/(.*?))/(colls|docs|users|attachments|permissions||pkranges)$)|(?&lt;id&gt;dbs/(.*)/(colls|docs|users|attachments|permissions)/[\w \d-+.=]+$){{0,id}}$][$lf$][$timestamp$]-lc[$lf$][$lf$];ExtraHeaders=x-ms-date: [$timestamp$]||x-ms-version: [$ApiVersion$]||Authorization:type%3dmaster%26ver%3d1.0%26sig%3d[$signature$]-enc;HashTimestampFormat=r;"
          ContentType="application/json"
          TestEndPoint="get_tables">
      <Notes>
<![CDATA[Connecting to your Azure Cosmos DB data requires you to authenticate your REST API access. Follow the instructions below:
<ol>
  <li>Go to your Azure portal homepage: <a target="_blank" href="https://portal.azure.com/">https://portal.azure.com/</a></li>
  <li>In the search bar at the top of the homepage, enter <b>Azure Cosmos DB</b>. In the dropdown that appears, select <b>Azure Cosmos DB</b>.</li>
  <li>Click on the name of the database account you want to connect to. (Also copy and paste the name of the database account for later use.)</li>
  <li>On the next page where you can see all of the database account information, look along the left side and select <b>Keys</b>.</li>
  <li>On the <b>Keys</b> page, you will have two tabs: <b>Read-write Keys</b> and <b>Read-only Keys</b>.
      If you are going to write data to your database, you need to remain on the <b>Read-write Keys</b> tab.
      If you are only going to read data from your database, you should select the <b>Read-only Keys</b> tab.</li>
  <li>On the <b>Keys</b> page, copy the <b>PRIMARY KEY</b> value and paste it somewhere for later use. (The <b>SECONDARY KEY</b> value may also be copied and pasted instead of <b>PRIMARY KEY</b>.)</li>
  <li>Back at the connector screen, enter the primary or secondary key you recorded in step 6 into the <b>Primary or Secondary Key</b> field.</li>
  <li>Enter the database account you recorded in step 3 into the <b>Database Account</b> field.</li>
  <li>Enter or select the default database you want to connect to using the <b>Defualt Database</b> field.</li>
  <li>Enter or select the default table (i.e. container/collection) you want to connect to using the <b>Default Table (Container/Collection)</b> field.</li>
  <li>Select the <b>Test Connection</b> button at the bottom of the window to verify proper connectivity with your Azure Devops account.</li>
  <li>If the connection test succeeds, select <b>OK</b>.</li>
</ol>]]>
      </Notes>
      <Params>
        <Param Name="Password" Label="Primary or Secondary Key" Required="True" Secret="True" />
        <Param Name="Account" Label="Account Name (Case-Sensitive)" Required="True" Desc="Login to your Cosmos DB Page and look in the title (copy that name). URL usually ends with /databaseAccounts/your-cosmos-db-account/overview" />
        <Param Name="Database" Required="True" Template="ParaDatabase"/>
		<Param Name="Table" Label="Default Table (needed to invoke #DirectSQL)" Template="ParaTable"/>
        <Param Name="ApiVersion" Label="API Version" Value="2020-07-15" Options="2020-07-15;2015-08-06" Required="True" Hidden="True" />
      </Params>
    </Auth>
  </Auths>


  <Template>
	<Param Name="ParaDatabase" Label="Database Name (keep blank to use default) Case-Sensitive" Desc="Leave blank to use default DB set on connection screen" OptionsEndPoint="get_databases" OptionsEndPointValueColumn="id" />
	<Param Name="ParaTable" Label="Table Name (Case-Sensitive)" Desc="" OptionsEndPoint="get_tables" OptionsEndPointValueColumn="id" OptionsEndPointParameters="Database=[$Database$]"  />
	<Param Name="ParaUser" Label="User Name (Case-Sensitive)" Desc="" OptionsEndPoint="get_users" OptionsEndPointValueColumn="id" OptionsEndPointParameters="Database=[$Database$]"  />
	<Param Name="ParaFilter" Type="Property" Value="$.Documents[*]" Options="$.Documents[*];$.Documents[*].SomeArray[*];$.Documents[*].SomeArray2ndLevel[*].SomeArray3rdLevel[*];$.Documents[*].SomeNestedProp" HelpLink="https://zappysys.com/links/?id=jpath_help" />
	
	<Param Name="ParaPartitionKey" Label="Partition Key Value (default is supplied Id)"  Key="x-ms-documentdb-partitionkey" Type="Header" 
		Value="." 
		Options="Default=.;SingleKeyValue=[&quot;someValue1&quot;];MultiKeyValue=[&quot;some_value1&quot;,&quot;some_value2&quot; ]" 
		ValueTemplate="&lt;&lt;{$value$}|~|Eq|~|.|~|[&quot;[$Id$]&quot;]|~|$1,FUN_IF&gt;&gt;" 
		Desc="The partition key value for the document. Must be included if and only if the collection is created with a partitionKey definition"/>
			
    <EndPoint Name="Pagination">
      <Params>
        <Param Name="PagingMode" Type="Property" Value="ByResponseHeaderContinuationToken" />
        <Param Name="PagingByUrlAttributeName" Type="Property" Value="x-ms-continuation" />
        <Param Name="PagingByUrlMaxPages" Type="Property" Value="0" />
        <Param Name="MaxItemCount" Label="Max Rows Per Page (Adjust for Speed)" Value="1000" Type="Header" Key="x-ms-max-item-count" Desc="An integer indicating the maximum number of items to be returned per page."/>
      </Params>
    </EndPoint>

    
	<EndPoint Name="CommonOutputColumns">
      <OutputColumns>
        <Column Name="id" DataType="DT_WSTR" Label="Id" Length="255" Desc="The unique name that identifies the collection." />
        <Column Name="_rid" DataType="DT_WSTR" Label="ResourceId" Length="2000" Desc="System generated property. The resource ID is a unique identifier that is also hierarchical per the resource stack on the resource model. It is used internally for placement and navigation of the permission resource." />
        <Column Name="_ts" DataType="DT_I4" Label="LastUpdated" Desc="System generated property. Specifies the last updated timestamp of the resource." />
        <Column_unused Name="_self" DataType="DT_WSTR" Label="UniqueUri" Length="2048" Desc="System generated property. The unique addressable URI for the resource." />
        <Column Name="_etag" DataType="DT_WSTR" Label="ETag" Length="4000" Desc="System generated property representing the resource etag required for optimistic concurrency control." />
      </OutputColumns>	
	</EndPoint>
	<EndPoint Name="UserOutputColumns" Template="CommonOutputColumns">
		<OutputColumns>
			<Column Name="_permissions" DataType="DT_WSTR" Label="Permissions" Length="4000" Desc="System generated property that specifies the addressable path of the conflicts resource. During an operation on a resource within a collection, if a conflict occurs, users can inspect the conflicting resources by performing a GET on the conflicts URI path." />
		</OutputColumns>
	</EndPoint>
	<EndPoint Name="DatabaseOutputColumns" Template="CommonOutputColumns">
      <OutputColumns>
        <Column Name="_colls" DataType="DT_WSTR" Label="Collections" Length="4000" />
		<Column Name="_users" DataType="DT_WSTR" Label="Users" Length="4000" />
      </OutputColumns>	
	</EndPoint>	
    <EndPoint Name="TableOutputColumns" Template="CommonOutputColumns">
      <OutputColumns>
        <Column Name="uniqueKeyPolicy.uniqueKeys" DataType="DT_WSTR" Label="UniqueKeys" Length="4000" Desc="Unique keys for the container." />
        <Column Name="indexingPolicy.indexingMode" DataType="DT_WSTR" Label="IndexingPolicyIndexingMode" Length="12" Desc="By default, the indexing mode is Consistent. This means that indexing occurs synchronously during insertion, replacement, or deletion of documents. To have indexing occur asynchronously, set the indexing mode to lazy." />
        <Column Name="indexingPolicy.automatic" DataType="DT_BOOL" Label="IndexingPolicyAutomatic" Desc="Indicates whether automatic indexing is on or off. The default value is True, thus all documents are indexed. Setting the value to False would allow manual configuration of indexing paths." />
        <Column Name="indexingPolicy.includedPaths" DataType="DT_WSTR" Label="IndexingPolicyIncludedPaths" Length="4000" Desc="The array containing document paths to be indexed. By default, two paths are included: the / path which specifies that all document paths be indexed, and the _ts path, which indexes for a timestamp range comparison." />
        <Column Name="indexingPolicy.excludedPaths" DataType="DT_WSTR" Label="IndexingPolicyExcludedPaths" Length="4000" Desc="The array containing document paths to be excluded from being indexed." />
        <Column Name="conflictResolutionPolicy.mode" DataType="DT_WSTR" Label="ConflictResolutionMode" Length="20" Desc="Policy-driven mechanism to resolve write conflicts. You can select from two conflict resolution policies on an Azure Cosmos DB container. (LastWriterWins and Custom)" />
        <Column Name="conflictResolutionPolicy.conflictResolutionPath" DataType="DT_WSTR" Label="ConflictResolutionPath" Length="4000" Desc="Policy-driven mechanism to resolve write conflicts. This is the conflict resolution path." />
        <Column Name="conflictResolutionPolicy.conflictResolutionProcedure" DataType="DT_WSTR" Label="ConflictResolutionProcedure" Length="4000" Desc="Policy-driven mechanism to resolve write conflicts. This is the conflict resolution procedure." />
        <Column Name="geospatialConfig.type" DataType="DT_WSTR" Label="GeospatialConfigType" Length="100" Desc="The type of geospatial data describing the position and shape of objects in space." />
        <Column Name="partitionKey.paths" DataType="DT_WSTR" Label="PartitionKeyPaths" Length="4000" Desc="An array of paths using which data within the collection can be partitioned. Paths must not contain a wildcard or a trailing slash. For example, the JSON property 'AccountNumber' is specified as '/AccountNumber'. The array must contain only a single value." />
        <Column Name="partitionKey.kind" DataType="DT_WSTR" Label="PartitionKeyKind" Length="4000" Desc="The algorithm used for partitioning. Only Hash is supported." />
        <Column Name="partitionKey.version" DataType="DT_I4" Label="PartitionKeyVersion" Desc="The partition key version." />
        <Column Name="_docs" DataType="DT_WSTR" Label="Documents" Length="2048" Desc="System generated property that specifies the addressable path of the documents resource." />
        <Column Name="_sprocs" DataType="DT_WSTR" Label="StoredProcedures" Length="2048" Desc="System generated property that specifies the addressable path of the stored procedures (sprocs) resource." />
        <Column Name="_triggers" DataType="DT_WSTR" Label="Triggers" Length="2048" Desc="System generated property that specifies the addressable path of the triggers resource." />
        <Column Name="_udfs" DataType="DT_WSTR" Label="UserDefinedFunctions" Length="2048" Desc="System generated property that specifies the addressable path of the user-defined functions (udfs) resource." />
        <Column Name="_conflicts" DataType="DT_WSTR" Label="Conflicts" Length="2048" Desc="System generated property that specifies the addressable path of the conflicts resource. During an operation on a resource within a collection, if a conflict occurs, users can inspect the conflicting resources by performing a GET on the conflicts URI path." />
      </OutputColumns>
    </EndPoint>
	
     <EndPoint Name="CreateDocument"
              Url="/dbs/[$Database$]/colls/[$Table$]/docs"
			  OutputHeaders="StatusCode"
			  Body="[$Document$]"
			  Method="POST"
			  >
      
      <Params>        
        <Param Name="Table" Template="ParaTable" Required="True" />
		<Param Name="Database" Template="ParaDatabase"/>
		<Param Name="Document" />
		<Param Name="PartitionKey" Template="ParaPartitionKey" Value="[]"/>
		<Param Name="Upsert" Hidden="True" Label="Enable Upsert Mode (update if document found)" Key="x-ms-documentdb-is-upsert" Type="Header" Options=";true;false"/>
		<Param Name="IsMultiPart" Type="Property" Label="Read Document from File Path" />
      </Params>
	  
	  <InputColumns>
		<Column Name="PartitionKey" MapToParam="True" DataType="DT_WSTR" />
		<Column Name="Document" MapToParam="True" DataType="DT_NTEXT" />
	  </InputColumns>
	  
	  <OutputColumns>
		<Column Name="id" />
		<Column Name="_rid" />
		<Column Name="_ts" DataType="DT_I8"/>
		<Column Name="ResponseHeaders_StatusCode" Label="http_status" DataType="DT_I4" />
	  </OutputColumns>	  
    </EndPoint>

     <EndPoint Name="UpdateDocument"
			  Label="Replace Full Document (PUT) or Specific Part (PATCH)"	
              Url="/dbs/[$Database$]/colls/[$Table$]/docs/[$Id$]"
			  OutputHeaders="StatusCode"
			  Body="[$Document$]"
			  >      
      <Params>        
		<Param Name="RequestMethod" Type="Property" Hidden="False" Label="Full Replace (PUT) or Partial (PATCH)?" Value="PUT" Options="Full Replace=PUT;Partial Replace=PATCH" />
	    <Param Name="Id" Label="Document Id" IsKey="True" />
        <Param Name="Table" Template="ParaTable" Required="True" />
		<Param Name="Database" Template="ParaDatabase"/>		
		<Param Name="Document" Desc="Full Document if RequestMethod=PUT else Partial Document" HelpLink="https://learn.microsoft.com/en-us/azure/cosmos-db/partial-document-update" />
		<Param Name="PartitionKey" Template="ParaPartitionKey" Value="[]"/>
		<Param Name="IsMultiPart" Type="Property" Label="Read Document from File Path" />
      </Params>
	  
	  <InputColumns>		
		<Column Name="RequestMethod" MapToParam="True" DataType="DT_WSTR" />
		<Column Name="PartitionKey" MapToParam="True" DataType="DT_WSTR" />
	    <Column Name="Id" MapToParam="True" Key="True" />
		<Column Name="Document" MapToParam="True" DataType="DT_NTEXT" />
	  </InputColumns> 
	  
	  <OutputColumns>
		<Column Name="id" />
		<Column Name="_rid" />
		<Column Name="_ts" DataType="DT_I8"/>
		<Column Name="ResponseHeaders_StatusCode" Label="http_status" DataType="DT_I4" />
	  </OutputColumns>	  
    </EndPoint>

	
  </Template>


  <EndPoints>

    <EndPoint Name="get_databases"
              Label="Get List of Databases"
              Url="/dbs"
              Method="GET"
              Filter="$.Databases[*]"
              Template="Pagination,DatabaseOutputColumns"
              Desc="Gets a list of the databases in the current database account."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/list-databases"
			  CachedTtl="60"
			  >
    </EndPoint>


    <EndPoint Name="get_database"
              Label="Get Database Information by Id or Name"
              Url="/dbs/[$Id$]"
              Method="GET"
              Template="DatabaseOutputColumns"
              Desc="Gets a database by its Id."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/get-a-database"
			  CachedTtl="60"
			  >
      <Params>
		<Param Name="Id" IsKey="True" Required="True" Template="ParaDatabase"/>
      </Params>
    </EndPoint>


    <EndPoint Name="get_tables"
              Label="Get List of Tables"
              Url="/dbs/[$Database$]/colls"
              Method="GET"
              Filter="$.DocumentCollections[*]"
              Template="Pagination,TableOutputColumns"
              Desc="Gets a list of the tables in the database. (Tables are also called 'containers' or 'collections')"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/list-collections"
			  CachedTtl="10"
			  >
      <Params>
        <Param Name="Database" Template="ParaDatabase"/>
      </Params>
    </EndPoint>


    <EndPoint Name="get_table"
              Label="Get table information by Id or Name"
              Url="/dbs/[$Database$]/colls/[$Id$]"
              Method="GET"
              Template="TableOutputColumns"
              Desc="Gets a table by its Id. (Tables are also called 'containers' or 'collections')"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/get-a-collection"
			  CachedTtl="10"
			  >
      <Params>
        <Param Name="Id" IsKey="True" Required="True"  Template="ParaTable"/>
        <Param Name="Database" Template="ParaDatabase"/>
      </Params>
    </EndPoint>
	
    <EndPoint Name="get_partition_keyranges"
              Label="Get table partition key ranges"
              Url="/dbs/[$Database$]/colls/[$Table$]/pkranges"
              Method="GET"
			  Filter="$.PartitionKeyRanges[*]"
              Desc="Gets Partition Key Ranges for a table. This is useful for query if you want to minimize scan to specific partition (Tables are also called 'containers' or 'collections')"
              HelpLink=""
			  CachedTtl="30"
			  >
      <Params>
        <Param Name="Table" IsKey="True" Required="True"  Template="ParaTable"/>
        <Param Name="Database" Template="ParaDatabase"/>
      </Params>
    </EndPoint>	

    <EndPoint Name="query_documents"
              Label="Query documents using Cosmos DB SQL query language"
              Url="/dbs/[$Database$]/colls/[$Table$]/docs"
              Method="POST"
			  IsSqlEndPoint="True"
              Headers="content-type:application/query+json||x-ms-documentdb-query-enablecrosspartition:true||x-ms-documentdb-query-enable-scan:[$AllowScan$]"
              Filter="$.Documents[*]"
              Template="Pagination"
              Desc="Gets data based on the specified SQL query."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/querying-cosmosdb-resources-using-the-rest-api"
			  CachedTtl="15"
			  >
      <Body>
<![CDATA[{
    "query": "[$Query$]"
}
]]>
      </Body>
      <Params>
        <Param Name="Table" Template="ParaTable" Required="True" />
        <Param Name="Query" IsSqlParameter="True" Value="select * from root" Label="SQL Query" Required="True" Editor="MultiLine" Desc="Query for Cosmos DB" HelpLink="https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/query/select"/>
		<Param Name="Filter" Template="ParaFilter" Required="True" />
		<Param Name="Database" Template="ParaDatabase" />
		<Param Name="AllowScan" Label="Allow Query Scan" Value="true" Options="true;false"/>
		<Param Name="AllowCrossPartition" Label="Allow Cross Partition Query" Value="true" Options="true;false"/>
		<Param Name="PartitionKeyRangeId" Type="Header" Key="x-ms-documentdb-partitionkeyrangeid" Label="Cross Partition Key Range Id" Value="0" OptionsEndPoint="get_partition_keyranges"  
			OptionsEndPointValueColumn="id" OptionsEndPointLabelColumn="minInclusive,maxExclusive" OptionsEndPointParameters="Database=[$Database$];Table=[$Table$]"  />
      </Params>
    </EndPoint>
	
    <EndPoint Name="get_documents"
              Label="Get All Documents for a Table"
              Url="/dbs/[$Database$]/colls/[$Table$]/docs"
              Method="GET"
			  Template="Pagination"
              Filter="$.Documents[*]"
              Desc="Gets all documents for a Table."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/list-documents">
      
      <Params>        
        <Param Name="Table" Template="ParaTable" Required="True" />
		<Param Name="Database" Template="ParaDatabase"/>
      </Params>
    </EndPoint>
	
    <EndPoint Name="get_document"
              Label="Get Document by Id"
              Url="/dbs/[$Database$]/colls/[$Table$]/docs/[$Id$]"
              Method="GET"
			  Headers="x-ms-documentdb-query-enablecrosspartition:[$EnableCrossPartition$]"
              Desc="Gets Document by Id."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/get-a-document"
			  CachedTtl="5"
			  >
      
      <Params>        
	    <Param Name="Id" Label="Document Id" Required="True" IsKey="True" />
		
        <Param Name="Table" Template="ParaTable" Required="True" />
		<Param Name="Database" Template="ParaDatabase"/>
		<Param Name="EnableCrossPartition" Value="true" Options="true;false"/>
		<Param Name="PartitionKey" Template="ParaPartitionKey"/>
		<Param Name="ConsistencyLevel"  Key="x-ms-consistency-level" Type="Header" Options=";Strong;Bounded;Session;Eventual"  Desc="This is the consistency level override. The valid values are: Strong, Bounded, Session, or Eventual (in order of strongest to weakest). The override must be the same or weaker than the account’s configured consistency level."/>
		
      </Params>
    </EndPoint>	
	
    <EndPoint Name="delete_document"
              Label="Delete a Document by Id"
              Url="/dbs/[$Database$]/colls/[$Table$]/docs/[$Id$]"
              Method="DELETE"
			  Headers="x-ms-documentdb-query-enablecrosspartition:[$EnableCrossPartition$]"
              Desc="Deletes a Document by Id."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/delete-a-document">
      
      <Params>        
	    <Param Name="Id" Label="Document Id" Required="True" IsKey="True"/>
        <Param Name="Table" Template="ParaTable" Required="True" />
		<Param Name="Database" Template="ParaDatabase"/>
		<Param Name="EnableCrossPartition" Value="true" Options="true;false"/>
		<Param Name="PartitionKey" Template="ParaPartitionKey"/>
		
		<Param Name="RawOutputDataRowTemplate" Value="{}" ValueTemplate="{Status:'Deleted', Id:'[$Id$]', Table: [$Table$]}" Type="Property" />
        <Param Name="EnableRawOutputModeSingleRow" Value="True"  Type="Property" />
		<Param Name="ContineOnErrorForStatusCode" Value="True" Type="Property" />		
		<Param Name="ErrorStatusCodeToMatchRegex" Value="404|405" Type="Property" />		
      </Params>
	 <InputColumns>		
	    <Column Name="Id" MapToParam="True" Key="True" />
	  </InputColumns> 	  
	 <OutputColumns>		
		<Column Name="Id" />
		<Column Name="Status" />
		<Column Name="Table" />
	    <Column Name="ResponseHeaders_StatusCode" Label="StatusCode" DataType="DT_I4" />		  
	  </OutputColumns> 	  	  
    </EndPoint>		
	
    <EndPoint Name="get_users"
              Label="Get All Users for a Database"
              Url="/dbs/[$Database$]/users"
              Method="GET"
			  Template="Pagination,UserOutputColumns"
              Filter="$.Users[*]"
              Desc="Gets all users for a Database."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/list-users">
      
      <Params>        
		<Param Name="Database" Template="ParaDatabase"/>
      </Params>
    </EndPoint> 
	<EndPoint Name="get_user"
              Label="Get User by Id or Name"
              Url="/dbs/[$Database$]/users/[$Id$]"
              Method="GET"
			  Template="UserOutputColumns"
              Desc="Gets database user information for a specific Id"
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/get-a-user">
      
      <Params>        
		<Param Name="Id" Required="True" Template="ParaUser" IsKey="True"/>
		<Param Name="Database" Template="ParaDatabase"/>
      </Params>
    </EndPoint> 
    <EndPoint Name="create_user"
              Label="Create User for Database"
              Url="/dbs/[$Database$]/users"
              Method="POST"
			  Template="UserOutputColumns"
			  Body="[$RequestBody$]"
              Desc="Create a new user which you can later use to create permission set and obtain resource token."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/list-users">
      <Params>        
		<Param Name="Database" Template="ParaDatabase"/>
		<Param Name="RequestBody" Editor="MultiLine" Value="{&quot;id&quot;: &quot;TYPE_USERNAME_HERE&quot;}"/>
      </Params>
    </EndPoint> 

     <EndPoint Name="create_document" Template="CreateDocument"
              Label="Create a document in the container"
              Desc="Insert JSON document in Cosmos DB Container."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/create-a-document"	>
      <Params>
		
	  </Params>	  
     </EndPoint>
	 
     <EndPoint Name="upsert_document" Template="CreateDocument"
              Label="Upsert a document in the container"
              Desc="Insert JSON document in Cosmos DB Container."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/create-a-document">
      <Params>        
		<Param Name="Upsert" Value="true" />
      </Params>
    </EndPoint>
	
     <EndPoint Name="update_document" Template="UpdateDocument"
              Label="Update Document in the Container"
              Desc="Update full or part of the document in Cosmos DB Container."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/replace-a-document">
      <Params>        
      </Params>
    </EndPoint>
	
    
    <EndPoint Name="create_token"
              Label="Create Permission Token for a User (One Table)"
              Url="/dbs/[$Database$]/users/[$User$]/permissions"
              Method="POST"
              Desc="Create a new user which you can later use to create permission set and obtain resource token."
              HelpLink="https://learn.microsoft.com/en-us/rest/api/cosmos-db/list-users">
      <Body>{"id": "[$PermissionName$]","permissionMode": "[$PermissionMode$]","resource": "[$Table$]"}</Body>
	  <Params>        
		<Param Name="PermissionName" Label="Permission Name (e.g. read_orders)"  Required="True" />
		<Param Name="Database" Template="ParaDatabase"/>
		<Param Name="User" Template="ParaUser" Required="True" />
		<Param Name="PermissionMode"  Required="True" Value="all" Options="All;Read;Write;Delete"/>

		<Param Name="Table" Template="ParaTable" Label="Table (Add Permission for this)"  Required="True" ValueTemplate="dbs/[$Database$]/colls/{$value$}"/>
		<Param Name="ExpiresInSecond" Value="3600" Type="Header" Key="x-ms-documentdb-expiry-seconds" Desc="The validity period of the resource token returned by the operation. By default, a resource token is valid for one hour. To override the default, set this header with the desired validity period in seconds. The max override value is 18000, which is five hours." /> 
      </Params>
	  <OutputColumns>
		<Column Name="id" Label="Id" />
		<Column Name="permissionMode" Label="PermissionMode" />
		<Column Name="resource" Label="Resource" />
		<Column Name="_token" Label="Token" />
	  </OutputColumns>
    </EndPoint>	
  </EndPoints>

  <Tables>
	<Table Name="SysDatabases" SelectEndPoint="get_databases" LookupEndPoint="get_database" />
	<Table Name="SysTables" SelectEndPoint="get_tables" LookupEndPoint="get_table" />	
	<Table Name="SysUsers" SelectEndPoint="get_users" LookupEndPoint="get_user" />
    <Table Name="[$parent.id$]" 
		SelectEndPoint="get_documents" 
		LookupEndPoint="get_document"  
		InsertEndPoint="create_document"  
		UpdateEndPoint="update_document"  
		UpsertEndPoint="upsert_document" 
		DeleteEndPoint="delete_document" 
		
		DataEndPoint="get_tables" Expand="True" >
		<Params>
			<Param Name="Table" Value="[$parent.id$]" />
			<Param Name="Query" Value="SELECT * FROM [$parent.id$]" />
		</Params>		
	</Table>
  </Tables>


  <Examples>
  
	<Example Group="ODBC" Default="True" Label="Query using Cosmos DB (Using Default Table)" Desc="Lists all containers from the default database specified (Specified for the connection settings). Check this URL for more information on query syntax: https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/query/select">
      <Code><![CDATA[#DirectSQL SELECT * FROM root where root.id !=null order by root._ts desc]]></Code>
    </Example>  
	<Example Group="ODBC" Label="Read all documents for a collection in Cosmos DB" Desc="Read all documents for a collection in Cosmos DB.">
      <Code><![CDATA[SELECT * FROM TestContainer]]></Code>
    </Example>  	
	<Example Group="ODBC" Label="Read a document by Id from a collection in Cosmos DB" Desc="Read a single document by Id from a collection in Cosmos DB.">
      <Code><![CDATA[SELECT * FROM TestContainer Where Id='user2']]></Code>
    </Example>  		
	
	<Example Group="ODBC" Label="Query Documents from Cosmos DB Table (Container) using SQL " Desc="Lists all users Cosmos DB Database">
      <Code><![CDATA[SELECT *
FROM query_documents
WITH(
  --  Database='TestDB', --if you dont supply connection level Default Database name is used
	  Table='TestContainer',  
	  Query='select * from root Where root.id!=null order by root._ts desc',
	  Meta='id:string(50);name:string(50);city;age'
	  --Meta='id; name; city; age' -- no types at all. Default is string(2000)
	  --Meta='id; name:string(50); city; age: int'   --Mixed types. If type is missing default string(2000) used
	  --check below URL for more information on Qyery Language Syntax
	  --https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/query/select
)
]]></Code>
    </Example>	
	<Example Group="ODBC" Label="Create a new document with Partition Key supplied" Desc="Loads a new document into specified container with partition key. If you created container with Partition Key requirement then must supply it. Partition Key must be valid value from Document Attribute used as Partition Key.">
      <Code><![CDATA[
INSERT INTO TestContainer (PartitionKey, Document)
VALUES(
'["user2"]', --partition key value must match its attribute from document else it will throw error. In this example container PartitionKey is /id so we used its value. For multiple key use JSON array ["val1","val2"]
'{
  "id": "user2",
  "name": "John Doe",
  "email": "jdoe@contoso.com",
  "phone": ["12345"],
  "level": "platinum"
}'
)
WITH(Upsert='true')  
]]></Code>
    </Example>

	<Example Group="ODBC" Label="Create a new document from a file path (Upload from local disk file)" Desc="Loads a new document into specified container from local file path. File path must start with @ symbol">
      <Code><![CDATA[
INSERT INTO TestContainer (PartitionKey, Document)
VALUES(
'["user2"]', --partition key value must match its attribute from document else it will throw error. In this example container PartitionKey is /id so we used its value. For multiple key use JSON array ["val1","val2"]
'@c:\data\order.json'   --path must start with @ symbol
)
WITH(Upsert='true', IsMultiPart=1)  
]]></Code>
    </Example>
	
	
	<Example Group="ODBC" Label="Upsert a document (Insert or Update if exists)" Desc="Upsert a document (Update if id exists else create new one).">
      <Code><![CDATA[
INSERT INTO TestContainer (PartitionKey, Document)
VALUES(
'["user2"]', --partition key value must match its attribute from document else it will throw error. In this example container PartitionKey is /id so we used its value. For multiple key use JSON array ["val1","val2"]
'{
  "id": "user2",
  "name": "John Doe",
  "email": "jdoe@contoso.com",
  "phone": ["12345"],
  "level": "platinum"
}')
 WITH(Upsert='true')  
]]></Code>
    </Example>

	<Example Group="ODBC" Label="Upsert a document (Insert or Update if exists) - Use UPSERT Keyword rather than WITH option" 
		Desc="Upsert a document (Update if id exists else create new one). This one uses UPSERT KEY word slight simpler syntax becuase you dont need WITH clause like INSERT... WITH(UPSERT='true') example.">
      <Code><![CDATA[
UPSERT INTO TestContainer (PartitionKey, Document)
VALUES(
'["user2"]', --partition key value must match its attribute from document else it will throw error. In this example container PartitionKey is /id so we used its value. For multiple key use JSON array ["val1","val2"]
'{
  "id": "user2",
  "name": "John Doe",
  "email": "jdoe@contoso.com",
  "phone": ["12345"],
  "level": "platinum"
}')
]]></Code>
    </Example>	

	<Example Group="ODBC" Label="Update (replace) a document (By default Full replace)" Desc="Update a document for a specified Document Id.">
      <Code><![CDATA[
UPDATE TestContainer 
SET  
 PartitionKey='["user2"]'
,Document=
'{
  "id" : "user2",
  "name": "John Doe at <<FUN_NOW>>",
  "email": "jdoe@contoso.com",
  "phone": ["<<FUN_TODAY>>"],
  "level": "platinum"
}'
Where Id='user2'
]]></Code>
    </Example>	

	<Example Group="ODBC" Label="Partial Update a document (Patch)" Desc="Update one or more attributes in a document using PATCH method for a specified Document Id. " HelpLink="	">
      <Code><![CDATA[
UPDATE TestContainer 
SET  
 PartitionKey='["user2"]'
,Document=
'{
  "operations": [
     { "op": "set", "path": "/name", "value": "updated name" }
	,{ "op": "set", "path": "/email", "value": "updated@email.com" }
  ]
}'
Where Id='user2'
WITH(
		RequestMethod='PATCH' --Partial Replace (change name and email only)
    )
	
/*
Example Document Operations
https://learn.microsoft.com/en-us/azure/cosmos-db/partial-document-update
https://learn.microsoft.com/en-us/rest/api/cosmos-db/patch-a-document

[
  { "op": "add", "path": "/color", "value": "silver" },
  { "op": "remove", "path": "/used" },
  { "op": "set", "path": "/price", "value": 355.45 }
  { "op": "incr", "path": "/inventory/quantity", "value": 10 },
  { "op": "add", "path": "/tags/-", "value": "featured-bikes" },
  { "op": "move", "from": "/color", "path": "/inventory/color" }
]

*/	
]]></Code>
    </Example>

<Example Group="ODBC" Label="Partial Update a document (Patch) from a file path (Upload from local disk file)" Desc="Update one or more attributes in a document using PATCH method for a specified Document Id read operations from local disk file. " HelpLink="	">
      <Code><![CDATA[
UPDATE TestContainer 
SET  
 PartitionKey='["user2"]'
,Document='@c:\temp\b.txt'  --path must start with @ symbol
Where Id='user2'
WITH(
		 RequestMethod='PATCH' --Partial Replace (change name and email only)
	    ,IsMultiPart=1 --this enables file upload	
    )
	
/*
Example Document Operations
https://learn.microsoft.com/en-us/azure/cosmos-db/partial-document-update
https://learn.microsoft.com/en-us/rest/api/cosmos-db/patch-a-document

[
  { "op": "add", "path": "/color", "value": "silver" },
  { "op": "remove", "path": "/used" },
  { "op": "set", "path": "/price", "value": 355.45 }
  { "op": "incr", "path": "/inventory/quantity", "value": 10 },
  { "op": "add", "path": "/tags/-", "value": "featured-bikes" },
  { "op": "move", "from": "/color", "path": "/inventory/color" }
]

*/	
]]></Code>
    </Example>
	
	<Example Group="ODBC" Label="List Databases" Desc="Lists all databases for specified Cosmos DB Account">
      <Code><![CDATA[SELECT * FROM SysDatabases]]></Code>
    </Example>  
	<Example Group="ODBC" Label="List Tables (i.e. Containers)" Desc="Lists all containers from the default database specified (Specified for the connection settings)">
      <Code><![CDATA[SELECT * FROM SysTables]]></Code>
    </Example>
	<Example Group="ODBC" Label="List Tables (i.e. Containers) for a specific database" Desc="Lists all containers from the specified Database">
      <Code><![CDATA[SELECT * FROM SysTables WITH (Database='MyCosmos DB')]]></Code>
    </Example>	
	<Example Group="ODBC" Label="List Users for the Database" Desc="Lists all users Cosmos DB Database">
      <Code><![CDATA[SELECT * FROM SysUsers]]></Code>
    </Example>

  </Examples>

</ApiConfig>