// Type definitions for DocumentDB 1.10 // Project: https://github.com/Azure/azure-documentdb-node // Definitions by: Noel Abrahams , Brett Gutstein , Chris Stone , Yifan Wu // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped/documentdb /// /** The feed options and query methods. */ export interface FeedOptions extends RequestOptions { /** Max number of items to be returned in the enumeration operation. */ maxItemCount?: number; /** Opaque token for continuing the enumeration. */ continuation?: string; /** Token for use with Session consistency. */ sessionToken?: string; /** Allow scan on the queries which couldn't be served as indexing was opted out on the requested paths. */ enableScanInQuery?: boolean; } /** Options that can be specified for a request issued to the DocumentDB servers. */ export interface RequestOptions { /** Indicates what is the pre trigger to be invoked before the operation. */ preTriggerInclude?: string; /** Indicates what is the post trigger to be invoked after the operation. */ postTriggerInclude?: string; /** Conditions Associated with the request. */ accessCondition?: { /** Conditional HTTP method header type. */ type: string; /** Conditional HTTP method header value. */ condition: string }; /** Specifies indexing directives (index, do not index ..etc). */ indexingDirective?: string; /** Consistency level required by the client. */ consistencyLevel?: string; /** Token for use with Session consistency. */ sessionToken?: string; /** Expiry time (in seconds) for resource token associated with permission (applicable only for requests on permissions). */ resourceTokenExpirySeconds?: number; /** Offer type when creating document collections. */ offerType?: string; /** * The user-specified throughput when creating document collections. * * Expressed in units of 100 request units per second. This can be between 400 and 250,000 (or higher by requesting a limit increase). * * If the x-ms-offer-throughput is over 10,000, then the collection must include a partitionKey definition. * If the x-ms-offer-throughput is equal to or under 10,000, then the collection must not include a partitionKey definition. * * One of x-ms-offer-throughput or x-ms-offer-type must be specified. Both headers cannot be specified together. */ offerThroughput?: number; /** * The partition key value for the requested document or attachment operation. * * Required for operations against documents and attachments when the collection definition includes a partition key definition. */ partitionKey?: string|string[]; /** * Allow execution across multiple partitions * * If the collection is partitioned, this must be set to True unless the query filters against a single partition key * or if the collection has only a single partition. */ enableCrossPartitionQuery?: boolean; /** If true, parallelize cross-partition queries */ maxDegreeOfParallelism?: boolean; /** If true, populate quota in response */ populateQuotaInfo?: boolean; } export interface DocumentOptions extends RequestOptions { /** Disables the automatic id generation. If id is missing in the body and this option is true, an error will be returned. */ disableAutomaticIdGeneration?: boolean; } /** The Sql query parameter. */ export interface SqlParameter { /** The name of the parameter. */ name: string; /** The value of the parameter. */ value: any; } /** The Sql query specification. */ export interface SqlQuerySpec { /** The body of the query. */ query: string; /** The array of SqlParameters. */ parameters: SqlParameter[]; } /** Represents the error object returned from a failed query. */ export interface QueryError { /** The response code corresponding to the error. */ code: number; /** A string representing the error information. */ body: string; } /** The callback to execute after the request execution. */ export type RequestCallback = (error: QueryError, resource: TResult, responseHeaders: any) => void; /** Reprents an object with a unique identifier. */ export interface UniqueId { /** The user-defined unique identifier for a document or other DocumentDB object (database, collection, procedure...) */ id: string; } /** Represents the common meta data for all DocumentDB objects. */ export interface AbstractMeta extends UniqueId { /** The self link. */ _self: string; /** The time the object was created. */ _ts: number; _rid?: string; _etag?: string; _attachments?: string; } /** Represents a custom document for storing in DocumentDB */ export interface NewDocument extends UniqueId { /** The time to live in seconds of the document. */ ttl?: number; /** Custom properties */ [key: string]: any; } /** Represents a document retrieved from storage. */ export interface RetrievedDocument extends NewDocument, AbstractMeta { } /** Represents the meta data for a database. */ // tslint:disable-next-line:no-empty-interface export interface DatabaseMeta extends AbstractMeta { } /** Represents the meta data for a collection. */ // tslint:disable-next-line:no-empty-interface export interface CollectionMeta extends Collection, AbstractMeta { } /** Represents the meta data for a stored procedure. */ export interface ProcedureMeta extends AbstractMeta { body: string; } /** Represents the meta data for a user-defined function. */ // tslint:disable-next-line:no-empty-interface export interface UserDefinedFunctionMeta extends AbstractMeta { } /** Represents the meta data for a trigger. */ export interface TriggerMeta extends AbstractMeta { body: string; triggerType: string; triggerOperation: string; } /** A user-defined function may either be defined in string form or as a real function */ export type UserFunction = ((...params: any[]) => void) | string; export interface UserScriptable extends UniqueId { /** The user function. Must set one of body or serverscript */ body?: UserFunction; /** The user function. Must set one of body or serverscript */ serverScript?: UserFunction; } /** An object that is used for authenticating requests and must contain one of the options. */ export interface AuthOptions { /** The authorization master key to use to create the client. */ masterKey?: string; /** An object that contains resources tokens. Keys for the object are resource Ids and values are the resource tokens. */ resourceTokens?: {[key: string]: string}; /** An array of {@link Permission} objects. */ permissionFeed?: Permission[]; } /** Represents a DocumentDB stored procecedure. */ // tslint:disable-next-line:no-empty-interface export interface Procedure extends UserScriptable { } /** Represents a DocumentDB user-defined function. */ export interface UserDefinedFunction extends UserScriptable { /** Type of function */ userDefinedFunctionType?: UserDefinedFunctionType; } /** Represents a DocumentDB trigger. */ export interface Trigger extends UserScriptable { /** The type of the trigger. Should be either 'pre' or 'post'. */ triggerType?: TriggerType; /** The trigger operation. Should be one of 'all', 'create', 'update', 'delete', or 'replace'. */ triggerOperation: TriggerOperation; } /** Represents DocumentDB collection. */ export interface Collection extends UniqueId { /** The indexing policy associated with the collection. */ indexingPolicy?: IndexingPolicy; /** The default time to live in seconds for documents in a collection. */ defaultTtl?: number; /** * This value is used to configure the partition key to be used for partitioning data into multiple partitions. * * If the x-ms-offer-throughput is over 10,000, then the collection must include a partitionKey definition. * * If the x-ms-offer-throughput is equal to or under 10,000, then the collection must not include a partitionKey definition. */ partitionKey?: CollectionPartitionKey; } /** Represents a DocumentDB attachment */ export interface Attachment { /** The MIME contentType of the attachment. */ contentType: string; /** Media link associated with the attachment content. */ media: string; /** Other properties */ [name: string]: any; } export interface AttachmentMeta extends Attachment, AbstractMeta { } export interface Permission extends UniqueId { /** The mode of the permission */ permissionMode: PermissionMode; /** The link of the resource that the permission will be applied to. */ resource: string; } export interface PermissionMeta extends Permission, AbstractMeta { } /** The Indexing Policy represents the indexing policy configuration for a collection. */ export interface IndexingPolicy { /** Specifies whether automatic indexing is enabled for a collection. */ automatic: boolean; /** The indexing mode (consistent or lazy) {@link IndexingMode}. */ indexingMode: IndexingMode; /** Represents the paths to be included for indexing. */ IncludedPaths: IncludedPath[]; /** Represents the paths to be excluded from indexing. */ ExcludedPaths: ExcludedPath[]; } export interface ExcludedPath { Path: string; } export interface IncludedPath { /** Path to be indexed */ Path: string; Indexes: Index[]; } /** Specifies the supported Index types. */ export interface Index { Kind: IndexKind; DataType: string; Precision: number; } /** ConnectionPolicy */ export interface ConnectionPolicy { /** Attachment content (aka media) download mode. */ MediaReadMode: MediaReadMode; /** Time to wait for response from network peer for attachment content (aka media) operations. Represented in milliseconds. */ MediaRequestTimeout: number; /** Request timeout (time to wait for response from network peer). Represented in milliseconds. */ RequestTimeout: number; /** Flag to enable/disable automatic redirecting of requests based on read/write operations. */ EnableEndpointDiscovery: boolean; /** List of azure regions to be used as preferred locations for read requests. */ PreferredLocations: any[]; /** RetryOptions instance which defines several configurable properties used during retry. */ RetryOptions: RetryOptions; /** * Flag to disable SSL verification for the requests. * * SSL verification is enabled by default. Don't set this when targeting production endpoints. * * This is intended to be used only when targeting emulator endpoint to avoid failing your requests with SSL related error. */ DisableSSLVerification: boolean; } /** RetryOptions */ export interface RetryOptions { /** Max number of retries to be performed for a request. Default value 9. */ MaxRetryAttemptCount?: number; /** Fixed retry interval in milliseconds to wait between each retry ignoring the retryAfter returned as part of the response. */ FixedRetryIntervalInMilliseconds?: number; /** Max wait time in seconds to wait for a request while the retries are happening. Default value 30 seconds. */ MaxWaitTimeInSeconds?: number; } export interface MediaOptions extends RequestOptions { /** HTTP Slug header value. */ slug?: string; /** HTTP ContentType header value. */ contentType?: string; } export interface DatabaseAccountRequestOptions extends RequestOptions { /** The endpoint url whose database account needs to be retrieved. If not present, current client's url will be used. */ urlConnection?: string; } export interface DatabaseAccount { DatabasesLink: string; MediaLink: string; MaxMediaStorageUsageInMB: number; CurrentMediaStorageUsageInMB: number; ConsistencyPolicy: ConsistencyPolicy; WritableLocations: string[]; ReadableLocations: string[]; } export interface ConsistencyPolicy { defaultConsistencyLevel: ConsistencyLevel; maxStalenessPrefix: number; maxStalenessIntervalInSeconds: number; } export interface RangeOptions { /** The low value in the range. */ low: any; /** The high value in the range. */ high: any; } export interface PartitionKeyMap { link: string; range: Range; } export interface CollectionPartitionKey { /** * 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. */ paths: string[]; /** * The algorithm used for partitioning. Only Hash is supported. */ kind: PartitionKind; } export type DocumentQuery = SqlQuerySpec | string; /** * DEPRECATED * * Support for IPartitionResolver is now obsolete. * It's recommended that you use Partitioned Collections for higher storage and throughput. * @deprecated */ export interface PartitionResolver { /** * Extracts the partition key from the specified document using the partitionKeyExtractor * @param document - The document from which to extract the partition key. */ getPartitionKey(document: any): string; /** * Given a partition key, returns the correct collection link for creating a document. * @param partitionKey - The partition key used to determine the target collection for create */ resolveForCreate(partitionKey: string): string; /** * Given a partition key, returns a list of collection links to read from. * @param partitionKey - The partition key used to determine the target collection for query */ resolveForRead(partitionKey: any): string[]; } /** * DEPRECATED * * Support for IPartitionResolver is now obsolete. * It's recommended that you use Partitioned Collections for higher storage and throughput. * @deprecated */ export interface ConsistentHashRingOptions { /** Function to compute the hash for a given link or partition key */ computeHash?(key: string|number, seed: number): number; /** Number of points in the ring to assign to each collection link */ numberOfVirtualNodesPerCollection?: number; } /** Represents a QueryIterator Object, an implmenetation of feed or query response that enables traversal and iterating over the response in the Azure DocumentDB database service. */ export class QueryIterator { /** * Constructs a QueryIterator object * @param documentclient - The documentclient object. * @param query - A SQL query. * @param options - Represents the feed options. * @param fetchFunctions - A function to retrieve each page of data. An array of functions may be used to query more than one partition. * @param resourceLinkopt - An optional parameter that represents the resourceLink (will be used in orderby/top/parallel query) */ constructor(documentclient: DocumentClient, query: DocumentQuery, options: FeedOptions, fetchFunctions: RequestCallback|Array>, resourceLinkopt?: string); /** * Retrieve the current element on the QueryIterator. * @param callback Function to execute for the current element. */ current(callback: RequestCallback): void; /** * Retrieve the next batch of the feed and pass them as an array to a function * @param callback Function execute on the feed response. */ executeNext(callback: RequestCallback): void; /** * Execute a provided function once per feed element. * @param callback Function to execute for each element. the function takes two parameters error, element. Note: the last element the callback * will be called on will be undefined. If the callback explicitly returned false, the loop gets stopped. */ forEach(callback: RequestCallback): void; /** * DEPRECATED * * Instead check if callback(undefined, undefined) is invoked by nextItem(callback) or current(callback) * * Determine if there are still remaining resources to processs based on the value of the continuation token * or the elements remaining on the current batch in the QueryIterator. * @deprecated */ hasMoreResults(): boolean; /** * Execute a provided function on the next element in the QueryIterator. * @param callback Function to execute for each element. */ nextItem(callback: RequestCallback): void; /** * Reset the QueryIterator to the beginning and clear all the resources inside it */ reset(): void; /** * Retrieve all the elements of the feed and pass them as an array to a function * @param callback Function execute on the feed response. */ toArray(callback: RequestCallback): void; } /** * DEPRECATED * * Support for IPartitionResolver is now obsolete. * It's recommended that you use Partitioned Collections for higher storage and throughput. * @deprecated */ export class HashPartitionResolver implements PartitionResolver { /** * DEPRECATED * * Support for IPartitionResolver is now obsolete. * It's recommended that you use Partitioned Collections for higher storage and throughput. * * @deprecated * @param partitionKeyExtractor - If partitionKeyExtractor is a string, it should be the name of the property in the document to execute the hashing on. * If partitionKeyExtractor is a function, it should be a function to extract the partition key from an object. * @param collectionLink - Array of strings in the format 'dbs/foo/colls/bar' * @param options - Options forr the ConsistentHashRing (MurmurHash) */ constructor(partitionKeyExtractor: string|((obj: any) => any), collectionLinks: string[], options?: ConsistentHashRingOptions); /** * Extracts the partition key from the specified document using the partitionKeyExtractor * @param document - The document from which to extract the partition key. */ getPartitionKey(document: any): string; /** * Given a partition key, returns the correct collection link for creating a document. * @param partitionKey - The partition key used to determine the target collection for create */ resolveForCreate(partitionKey: string): string; /** * Given a partition key, returns a list of collection links to read from. * @param partitionKey - The partition key used to determine the target collection for query */ resolveForRead(partitionKey: string): string[]; } /** * DEPRECATED * * Support for IPartitionResolver is now obsolete. * It's recommended that you use Partitioned Collections for higher storage and throughput. * * @deprecated */ // tslint:disable-next-line no-unnecessary-class export class Range { /** * DEPRECATED * * Support for IPartitionResolver is now obsolete. * It's recommended that you use Partitioned Collections for higher storage and throughput. * * @deprecated * @param options - The Range constructor options. */ constructor(options: RangeOptions); } /** * DEPRECATED * * Support for IPartitionResolver is now obsolete. * It's recommended that you use Partitioned Collections for higher storage and throughput. * * @deprecated */ export class RangePartitionResolver implements PartitionResolver { /** * DEPRECATED * * Support for IPartitionResolver is now obsolete. * It's recommended that you use Partitioned Collections for higher storage and throughput. * * @deprecated * @param partitionKeyExtractor - If partitionKeyExtractor is a string, it should be the name of the property in the document to execute the * hashing on. If partitionKeyExtractor is a function, it should be a function to extract the partition key from an object. * @param partitionKeyMap - The map from Range to collection link that is used for partitioning requests. * @param [compareFunction] - Optional function that accepts two arguments a and b and returns a negative value if a < b, zero if a = b, or a positive value if a > b. */ constructor(partitionKeyExtractor: string|((obj: any) => any), partitionKeyMap: PartitionKeyMap[], compareFunction?: (a: any, b: any) => number); /** * Extracts the partition key from the specified document using the partitionKeyExtractor * @param document - The document from which to extract the partition key. */ getPartitionKey(document: any): string; /** * Given a partition key, returns the correct collection link for creating a document. * @param partitionKey - The partition key used to determine the target collection for create */ resolveForCreate(partitionKey: string): string; /** * Given a partition key, returns a list of collection links to read from. * @param partitionKey - The partition key used to determine the target collection for query */ resolveForRead(partitionKey: string): string[]; } /** Provides a client-side logical representation of the Azure DocumentDB database account. This client is used to configure and execute requests against the service. */ export class DocumentClient { /** * Constructs a DocumentClient. * @param urlConnection - The service endpoint to use to create the client. * @param auth - An object that is used for authenticating requests and must contains one of the options. * @param [connectionPolicy] - An instance of {@link ConnectionPolicy} class. This parameter is optional and the default connectionPolicy will be used if omitted. * @param [consistencyLevel] - An optional parameter that represents the consistency level. It can take any value from {@link ConsistencyLevel}. */ constructor(urlConnection: string, auth: AuthOptions, connectionPolicy?: ConnectionPolicy, consistencyLevel?: ConsistencyLevel); /** * Create an attachment for the document object. *

* Each document may contain zero or more attachments. Attachments can be of any MIME type - text, image, binary data.
* These are stored externally in Azure Blob storage. Attachments are automatically deleted when the parent document is deleted. *

* @param documentLink - The self-link of the document. * @param body - The metadata the defines the attachment media like media, contentType. It can include any other properties as part of the metedata * @param [options] - The request options. * @param callback - The callback for the request. */ createAttachment(documentLink: string, body: Attachment, options: RequestOptions, callback: RequestCallback): void; createAttachment(documentLink: string, body: Attachment, callback: RequestCallback): void; /** * Create an attachment with media file for the document object. * @param documentLink - The self-link of the document. * @param readableStream - The stream that represents the media itself that needs to be uploaded. * @param [options] - The request options. * @param callback - The callback for the request. */ createAttachmentAndUploadMedia(documentLink: string, readableStream: NodeJS.ReadableStream, options: MediaOptions, callback: RequestCallback): void; createAttachmentAndUploadMedia(documentLink: string, readableStream: NodeJS.ReadableStream, callback: RequestCallback): void; /** * Send a request for creating a database. * A database manages users, permissions and a set of collections. * Each Azure DocumentDB Database Account is able to support multiple independent named databases, with the database being the logical container for data. * Each Database consists of one or more collections, each of which in turn contain one or more documents. Since databases are an an administrative * resource, the Service Master Key will be required in order to access and successfully complete any action using the User APIs. * @param body - A json object that represents The database to be created. * @param [options] - The request options. * @param callback - The callback for the request. */ createDatabase(body: UniqueId, options: RequestOptions, callback: RequestCallback): void; createDatabase(body: UniqueId, callback: RequestCallback): void; /** * Creates a collection. *

* A collection is a named logical container for documents.
* A database may contain zero or more named collections and each collection consists of zero or more JSON documents.
* Being schema-free, the documents in a collection do not need to share the same structure or fields.
* Since collections are application resources, they can be authorized using either the master key or resource keys.
*

* @param databaseLink - The self-link of the database. * @param body - Represents the body of the collection. * @param [options] - The request options. * @param callback - The callback for the request. */ createCollection(databaseLink: string, body: Collection, options: RequestOptions, callback: RequestCallback): void; createCollection(databaseLink: string, body: Collection, callback: RequestCallback): void; /** * Create a StoredProcedure. *

* DocumentDB allows stored procedures to be executed in the storage tier, directly against a document collection. The script
* gets executed under ACID transactions on the primary storage partition of the specified collection. For additional details,
* refer to the server-side JavaScript API documentation. *

* @param collectionLink - The self-link of the collection. * @param procedure - Represents the body of the stored procedure. * @param [options] - The request options. * @param callback - The callback for the request. */ createStoredProcedure(collectionLink: string, procedure: Procedure, options: RequestOptions, callback: RequestCallback): void; createStoredProcedure(collectionLink: string, procedure: Procedure, callback: RequestCallback): void; /** * Create a UserDefinedFunction. *

* DocumentDB supports JavaScript UDFs which can be used inside queries, stored procedures and triggers.
* For additional details, refer to the server-side JavaScript API documentation. *

* @param collectionLink - The self-link of the collection. * @param udf - Represents the body of the userDefinedFunction. * @param [options] - The request options. * @param callback - The callback for the request. */ createUserDefinedFunction(collectionLink: string, udf: UserDefinedFunction, options: RequestOptions, callback: RequestCallback): void; createUserDefinedFunction(collectionLink: string, udf: UserDefinedFunction, callback: RequestCallback): void; /** * Create a trigger. *

* DocumentDB supports pre and post triggers defined in JavaScript to be executed on creates, updates and deletes.
* For additional details, refer to the server-side JavaScript API documentation. *

* @param collectionLink - The self-link of the collection. * @param trigger - Represents the body of the trigger. * @param [options] - The request options. * @param callback - The callback for the request. */ createTrigger(collectionLink: string, trigger: Trigger, options: RequestOptions, callback: RequestCallback): void; createTrigger(collectionLink: string, trigger: Trigger, callback: RequestCallback): void; /** * Create a document. *

* There is no set schema for JSON documents. They may contain any number of custom properties as well as an optional list of attachments.
* A Document is an application resource and can be authorized using the master key or resource keys *

* @param documentsFeedOrDatabaseLink - The self-link of the collection. * @param document - Represents the body of the document. Can contain any number of user defined properties. * @param [options] - The request options. * @param callback - The callback for the request. */ createDocument(documentsFeedOrDatabaseLink: string, document: NewDocument, options: DocumentOptions, callback: RequestCallback): void; createDocument(documentsFeedOrDatabaseLink: string, document: NewDocument, callback: RequestCallback): void; /** * Create a permission. A permission represents a per-User Permission to access a specific resource e.g. Document or Collection. * @param userLink - Self-link of the user. * @param body - Permission body * @param options - Request options * @param callback - Callback for the request */ createPermission(userLink: string, body: Permission, options: RequestOptions, callback: RequestCallback): void; createPermission(userLink: string, body: Permission, callback: RequestCallback): void; /** * Create a user * @param databaseLink - The self-link of the database. * @param body - Represents the body of the user. * @param options - The request options. * @param callback - The callback for the request. */ createUser(databaseLink: string, body: UniqueId, options: RequestOptions, callback: RequestCallback): void; createUser(databaseLink: string, body: UniqueId, callback: RequestCallback): void; /** * Execute the StoredProcedure represented by the object. * @param procedureLink - The self-link of the stored procedure. * @param [params] - Represents the parameters of the stored procedure. * @param options - The request options * @param callback - The callback for the request. */ executeStoredProcedure(procedureLink: string, params: any[], options: RequestOptions, callback: RequestCallback): void; executeStoredProcedure(procedureLink: string, paramsOrOptions: any[] | RequestOptions, callback: RequestCallback): void; /** * Lists all databases that satisfy a query. * @param query - A SQL query string. * @param [options] - The feed options. * @returns - An instance of QueryIterator to handle reading feed. */ queryDatabases(query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Query the collections for the database. * @param databaseLink - The self-link of the database. * @param query - A SQL query string. * @param [options] - Represents the feed options. * @returns - An instance of queryIterator to handle reading feed. */ queryCollections(databaseLink: string, query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Query the storedProcedures for the collection. * @param collectionLink - The self-link of the collection. * @param query - A SQL query string. * @param [options] - Represents the feed options. * @returns - An instance of queryIterator to handle reading feed. */ queryStoredProcedures(collectionLink: string, query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Query the user-defined functions for the collection. * @param collectionLink - The self-link of the collection. * @param query - A SQL query string. * @param [options] - Represents the feed options. * @returns - An instance of queryIterator to handle reading feed. */ queryUserDefinedFunctions(collectionLink: string, query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Query the documents for the collection. * @param collectionLink - The self-link of the collection. * @param query - A SQL query string. * @param [options] - Represents the feed options. * @returns - An instance of queryIterator to handle reading feed. */ queryDocuments(collectionLink: string, query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Query the triggers for the collection. * @param collectionLink - The self-link of the collection. * @param query - A SQL query. * @param [options] - Represents the feed options. * @returns - An instance of queryIterator to handle reading feed. */ queryTriggers(collectionLink: string, query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Query the attachments for the document. * @param documentLink - The self-link of the document. * @param query - A SQL query. * @param [options] - Represents the feed options. */ queryAttachments(documentLink: string, query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Query the conflicts for the collection. * @param collectionLink - The self-link of the collection. * @param query - A SQL query. * @param [options] - Represents the feed options. */ queryConflicts(collectionLink: string, query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Lists all offers that satisfy a query. * @param query - A SQL query. * @param options - The feed options. */ queryOffers(query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Query the permission for the user. * @param userLink - The self-link of the user. * @param query - A SQL query. * @param options - Feed options. */ queryPermissions(userLink: string, query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Query the users for the database. * @param databaseLink - The self-link of the database. * @param query - A SQL query. * @param options - Represents the feed options. */ queryUsers(databaseLink: string, query: DocumentQuery, options?: FeedOptions): QueryIterator; /** * Delete the document object. * @param documentLink - The self-link of the document. * @param [options] - The request options. * @param callback - The callback for the request. */ deleteDocument(documentLink: string, options: RequestOptions, callback: RequestCallback): void; deleteDocument(documentLink: string, callback: RequestCallback): void; /** * Delete the database object. * @param databaseLink - The self-link of the database. * @param [options] - The request options. * @param callback - The callback for the request. */ deleteDatabase(databaseLink: string, options: RequestOptions, callback: RequestCallback): void; deleteDatabase(databaseLink: string, callback: RequestCallback): void; /** * Delete the collection object. * @param collectionLink - The self-link of the collection. * @param [options] - The request options. * @param callback - The callback for the request. */ deleteCollection(collectionLink: string, options: RequestOptions, callback: RequestCallback): void; deleteCollection(collectionLink: string, callback: RequestCallback): void; /** * Delete the StoredProcedure object. * @param procedureLink - The self-link of the stored procedure. * @param [options] - The request options. * @param callback - The callback for the request. */ deleteStoredProcedure(procedureLink: string, options: RequestOptions, callback: RequestCallback): void; deleteStoredProcedure(procedureLink: string, callback: RequestCallback): void; /** * Delete an attachment * @param attachmentLink - The self-link of the attachment. * @param options - The request options. * @param callback - The callback for the request. */ deleteAttachment(attachmentLink: string, options: RequestOptions, callback: RequestCallback): void; deleteAttachment(attachmentLink: string, callback: RequestCallback): void; /** * Delete a conflict * @param conflictLink - The self-link of the conflict. * @param options - The request options. * @param callback - The callback for the request. */ deleteConflict(conflictLink: string, options: RequestOptions, callback: RequestCallback): void; deleteConflict(conflictLink: string, callback: RequestCallback): void; /** * Delete a permission * @param permissionLink - The self-link of the permission. * @param options - The request options. * @param callback - The callback for the request. */ deletePermission(permissionLink: string, options: RequestOptions, callback: RequestCallback): void; deletePermission(permissionLink: string, callback: RequestCallback): void; /** * Delete a trigger * @param triggerLink - The self-link of the trigger. * @param options - The request options. * @param callback - The callback for the request. */ deleteTrigger(triggerLink: string, options: RequestOptions, callback: RequestCallback): void; deleteTrigger(triggerLink: string, callback: RequestCallback): void; /** * Delete a user * @param userLink - The self-link of the user. * @param options - The request options. * @param callback - The callback for the request. */ deleteUser(userLink: string, options: RequestOptions, callback: RequestCallback): void; deleteUser(userLink: string, callback: RequestCallback): void; /** * Delete a user-defined function * @param udfLink - The self-link of the user defined function. * @param options - The request options. * @param callback - The callback for the request. */ deleteUserDefinedFunction(udfLink: string, options: RequestOptions, callback: RequestCallback): void; deleteUserDefinedFunction(udfLink: string, callback: RequestCallback): void; /** * Replace the document object. * @param documentLink - The self-link of the document. * @param document - Represent the new document body. * @param [options] - The request options. * @param callback - The callback for the request. */ replaceDocument(documentLink: string, document: NewDocument, options: RequestOptions, callback: RequestCallback): void; replaceDocument(documentLink: string, document: NewDocument, callback: RequestCallback): void; /** * Replace the StoredProcedure object. * @param procedureLink - The self-link of the stored procedure. * @param procedure - Represent the new procedure body. * @param [options] - The request options. * @param callback - The callback for the request. */ replaceStoredProcedure(procedureLink: string, procedure: Procedure, options: RequestOptions, callback: RequestCallback): void; replaceStoredProcedure(procedureLink: string, procedure: Procedure, callback: RequestCallback): void; /** * Replace the attachment object. * @param attachmentLink - The self-link of the attachment. * @param attachment - Represent the new attachment body. * @param options - The request options. * @param callback - The callback for the request. */ replaceAttachment(attachmentLink: string, attachment: Attachment, options: RequestOptions, callback: RequestCallback): void; replaceAttachment(attachmentLink: string, attachment: Attachment, callback: RequestCallback): void; /** * Replace the document collection. * @param collectionLink - The self-link of the document collection. * @param collection - Represent the new document collection body. * @param options - The request options. * @param callback - The callback for the request. */ replaceCollection(collectionLink: string, collection: Collection, options: RequestOptions, callback: RequestCallback): void; replaceCollection(collectionLink: string, collection: Collection, callback: RequestCallback): void; /** * Replace the offer object. * @param offerLink - The self-link of the offer. * @param offer - Represent the new offer body. * @param callback - The callback for the request. */ replaceOffer(offerLink: string, offer: any, callback: RequestCallback): void; /** * Replace the permission object. * @param permissionLink - The self-link of the permission. * @param permission - Represent the new permission body. * @param options - The request options. * @param callback - The callback for the request. */ replacePermission(permissionLink: string, permission: Permission, options: RequestOptions, callback: RequestCallback): void; replacePermission(permissionLink: string, permission: Permission, callback: RequestCallback): void; /** * Replace the trigger object. * @param triggerLink - The self-link of the trigger. * @param trigger - Represent the new trigger body. * @param options - The request options. * @param callback - The callback for the request. */ replaceTrigger(triggerLink: string, trigger: Trigger, options: RequestOptions, callback: RequestCallback): void; replaceTrigger(triggerLink: string, trigger: Trigger, callback: RequestCallback): void; /** * Replace the user object. * @param userLink - The self-link of the user. * @param user - Represent the new user body. * @param options - The request options. * @param callback - The callback for the request. */ replaceUser(userLink: string, user: UniqueId, options: RequestOptions, callback: RequestCallback): void; replaceUser(userLink: string, user: UniqueId, callback: RequestCallback): void; /** * Replace the UserDefinedFunction object. * @param udfLink - The self-link of the user defined function. * @param udf - Represent the new udf body. * @param options - The request options. * @param callback - The callback for the request. */ replaceUserDefinedFunction(udfLink: string, udf: UserDefinedFunction, options: RequestOptions, callback: RequestCallback): void; replaceUserDefinedFunction(udfLink: string, udf: UserDefinedFunction, callback: RequestCallback): void; /** * Read an Attachment object. * @param attachmentLink - The self-link of the attachment. * @param options - The request options. * @param callback - The callback for the request. */ readAttachment(attachmentLink: string, options: RequestOptions, callback: RequestCallback): void; readAttachment(attachmentLink: string, callback: RequestCallback): void; /** * Get all attachments for this document. * @param documentLink - The self-link of the document. * @param options - The feed options. */ readAttachments(documentLink: string, options?: FeedOptions): QueryIterator; /** * Read a collection. * @param collectionLink - The self-link of the collection. * @param options - The request options. * @param callback - The callback for the request. */ readCollection(collectionLink: string, options: RequestOptions, callback: RequestCallback): void; readCollection(collectionLink: string, callback: RequestCallback): void; /** * Get all collections in this database. * @param databaseLink - The self-link of the database. * @param options - The feed options. */ readCollections(databaseLink: string, options?: FeedOptions): QueryIterator; /** * Read a conflict. * @param conflictLink - The self-link of the conflict. * @param options - The request options. * @param callback - The callback for the request. */ readConflict(conflictLink: string, options: RequestOptions, callback: RequestCallback): void; readConflict(conflictLink: string, callback: RequestCallback): void; /** * Get all conflicts in this collection. * @param collectionLink - The self-link of the collection. * @param options - The feed options. */ readConflicts(collectionLink: string, options?: FeedOptions): QueryIterator; /** * Read a database. * @param databaseLink - The self-link of the database. * @param options - The request options. * @param callback - The callback for the request. */ readDatabase(databaseLink: string, options: RequestOptions, callback: RequestCallback): void; readDatabase(databaseLink: string, callback: RequestCallback): void; /** * List all databases. * @param options - The request options. */ readDatabases(options?: FeedOptions): QueryIterator; /** * Read a document. * @param documentLink - The self-link of the document. * @param options - The request options. * @param callback - The callback for the request. */ readDocument(documentLink: string, options: RequestOptions, callback: RequestCallback): void; readDocument(documentLink: string, callback: RequestCallback): void; /** * Get all documents in this collection. * @param collectionLink - The self-link of the collection. * @param options - The feed options. */ readDocuments(collectionLink: string, options?: FeedOptions): QueryIterator; /** * Read the media for the attachment object. * @param mediaLink - The media link of the media in the attachment. * @param callback - The callback for the request, the result parameter can be a buffer or a stream depending on the value of MediaReadMode */ readMedia(mediaLink: string, callback: RequestCallback): void; /** * Read an offer. * @param offerLink - The self-link of the offer. * @param callback - The callback for the request. */ readOffer(offerLink: string, callback: RequestCallback): void; /** * List all offers * @param options - The feed options. */ readOffers(options?: FeedOptions): QueryIterator; /** * Read a permission. * @param permissionLink - The self-link of the permission. * @param options - The request options. * @param callback - The callback for the request. */ readPermission(permissionLink: string, options: RequestOptions, callback: RequestCallback): void; readPermission(permissionLink: string, callback: RequestCallback): void; /** * Get all permissions for this user. * @param userLink - The self-link of the user. * @param feedOptions - The feed options */ readPermissions(userLink: string, feedOptions?: FeedOptions): QueryIterator; /** * Read a stored procedure * @param sprocLink - The self-link of the stored procedure. * @param options - The request options. * @param callback - The callback for the request. */ readStoredProcedure(sprocLink: string, options: RequestOptions, callback: RequestCallback): void; readStoredProcedure(sprocLink: string, callback: RequestCallback): void; /** * Get all StoredProcedures in this collection. * @param collectionLink - The self-link of the collection. * @param options - The feed options. */ readStoredProcedures(collectionLink: string, options?: RequestOptions): QueryIterator; /** * Reads a trigger object. * @param triggerLink - The self-link of the trigger. * @param options - The request options. * @param callback - The callback for the request. */ readTrigger(triggerLink: string, options: RequestOptions, callback: RequestCallback): void; readTrigger(triggerLink: string, callback: RequestCallback): void; /** * Get all triggers in this collection. * @param collectionLink - The self-link of the collection. * @param options - The feed options. */ readTriggers(collectionLink: string, options?: FeedOptions): QueryIterator; /** * Reads a user. * @param userLink - The self-link of the user. * @param options - The request options. * @param callback - The callback for the request. */ readUser(userLink: string, options: RequestOptions, callback: RequestCallback): void; readUser(userLink: string, callback: RequestCallback): void; /** * Reads a udf object. * @param udfLink - The self-link of the user defined function. * @param options - The request options. * @param callback - The callback for the request. */ readUserDefinedFunction(udfLink: string, options: RequestOptions, callback: RequestCallback): void; readUserDefinedFunction(udfLink: string, callback: RequestCallback): void; /** * Get all UserDefinedFunctions in this collection. * @param collectionLink - The self-link of the collection. * @param options - The feed options. */ readUserDefinedFunctions(collectionLink: string, options?: FeedOptions): QueryIterator; /** * Get all users in this database. * @param databaseLink - The self-link of the database. * @param feedOptions - The feed options. */ readUsers(databaseLink: string, feedOptions?: FeedOptions): QueryIterator; /** * Update media for the attachment * @param mediaLink - The media link of the media in the attachment. * @param readableStream - The stream that represents the media itself that needs to be uploaded. * @param options - options for the media * @param callback - The callback for the request. */ updateMedia(mediaLink: string, readableStream: NodeJS.ReadableStream, options: MediaOptions, callback: RequestCallback): void; updateMedia(mediaLink: string, readableStream: NodeJS.ReadableStream, callback: RequestCallback): void; /** * Upsert an attachment for the document object. *

* Each document may contain zero or more attachments. Attachments can be of any MIME type - text, image, binary data. * These are stored externally in Azure Blob storage. Attachments are automatically deleted when the parent document is deleted. *

* @param documentLink - The self-link of the document. * @param body - The metadata the defines the attachment media like media, contentType. It can include any other properties as part of the metedata. * @param options - The request options. * @param callback - The callback for the request. */ upsertAttachment(documentLink: string, body: Attachment, options: RequestOptions, callback: RequestCallback): void; upsertAttachment(documentLink: string, body: Attachment, callback: RequestCallback): void; /** * Upsert an attachment for the document object. * @param documentLink - The self-link of the document. * @param readableStream - the stream that represents the media itself that needs to be uploaded. * @param options - The request options. * @param callback - The callback for the request. */ upsertAttachmentAndUploadMedia(documentLink: string, readableStream: NodeJS.ReadableStream, options: MediaOptions, callback: RequestCallback): void; upsertAttachmentAndUploadMedia(documentLink: string, readableStream: NodeJS.ReadableStream, callback: RequestCallback): void; /** * Upsert a document. *

* There is no set schema for JSON documents. They may contain any number of custom properties as well as an optional list of attachments. * A Document is an application resource and can be authorized using the master key or resource keys *

* @param documentsFeedOrDatabaseLink - The collection link or database link if using a partition resolver * @param body - Represents the body of the document. Can contain any number of user defined properties. * @param options - The request options. * @param callback - The callback for the request. */ upsertDocument(documentsFeedOrDatabaseLink: string, body: NewDocument, options: DocumentOptions, callback: RequestCallback): void; upsertDocument(documentsFeedOrDatabaseLink: string, body: NewDocument, callback: RequestCallback): void; /** * Upsert a permission. *

* A permission represents a per-User Permission to access a specific resource e.g. Document or Collection. *

* @param userLink - The self-link of the user. * @param body - Represents the body of the permission. * @param options - The request options. * @param callback - The callback for the request. */ upsertPermission(userLink: string, body: Permission, options: RequestOptions, callback: RequestCallback): void; upsertPermission(userLink: string, body: Permission, callback: RequestCallback): void; /** * Upsert a StoredProcedure. *

* DocumentDB allows stored procedures to be executed in the storage tier, directly against a document collection. The script * gets executed under ACID transactions on the primary storage partition of the specified collection. For additional details, * refer to the server-side JavaScript API documentation. *

* @param collectionLink - The self-link of the collection. * @param sproc - Represents the body of the stored procedure. * @param options - The request options. * @param callback - The callback for the request. */ upsertStoredProcedure(collectionLink: string, sproc: Procedure, options: RequestOptions, callback: RequestCallback): void; upsertStoredProcedure(collectionLink: string, sproc: Procedure, callback: RequestCallback): void; /** * Upsert a trigger. *

* DocumentDB supports pre and post triggers defined in JavaScript to be executed on creates, updates and deletes. * For additional details, refer to the server-side JavaScript API documentation. *

* @param collectionLink - The self-link of the collection. * @param trigger - Represents the body of the trigger. * @param options - The request options. * @param callback - The callback for the request. */ upsertTrigger(collectionLink: string, trigger: Trigger, options: RequestOptions, callback: RequestCallback): void; upsertTrigger(collectionLink: string, trigger: Trigger, callback: RequestCallback): void; /** * Upsert a database user. * @param databaseLink - The self-link of the database. * @param body - Represents the body of the user. * @param options - The request options. * @param callback - The callback for the request. */ upsertUser(databaseLink: string, body: UniqueId, options: RequestOptions, callback: RequestCallback): void; upsertUser(databaseLink: string, body: UniqueId, callback: RequestCallback): void; /** * Upsert a UserDefinedFunction. *

* DocumentDB supports JavaScript UDFs which can be used inside queries, stored procedures and triggers. * For additional details, refer to the server-side JavaScript API documentation. *

* @param collectionLink - The self-link of the collection. * @param udf - Represents the body of the userDefinedFunction. * @param options - The request options. * @param callback - The callback for the request. */ upsertUserDefinedFunction(collectionLink: string, udf: UserDefinedFunction, options: RequestOptions, callback: RequestCallback): void; upsertUserDefinedFunction(collectionLink: string, udf: UserDefinedFunction, callback: RequestCallback): void; /** * Gets the Database account information. * @param options - The request options * @param callback - The callback for the request */ getDatabaseAccount(options: DatabaseAccountRequestOptions, callback: RequestCallback): void; getDatabaseAccount(callback: RequestCallback): void; /** * Gets the curent read endpoint for a geo-replicated database account. * @param callback - The callback for the request */ getReadEndpoint(callback: RequestCallback): void; /** * Gets the curent write endpoint for a geo-replicated database account. * @param callback - The callback for the request */ getWriteEndpoint(callback: RequestCallback): void; } export namespace UriFactory { /** * Given a database id, this creates a database link. * @param databaseId -The database id * @returns -A database link in the format of dbs/{0} with {0} being a Uri escaped version of the databaseId * @description Would be used when creating or deleting a DocumentCollection or a User in Azure DocumentDB database service */ function createDatabaseUri(databaseId: string): string; /** * Given a database and collection id, this creates a collection link. * @param databaseId -The database id * @param collectionId -The collection id * @returns A collection link in the format of dbs/{0}/colls/{1} with {0} being a Uri escaped version of the databaseId and {1} being collectionId * @description Would be used when updating or deleting a DocumentCollection, creating a Document, a StoredProcedure, a * Trigger, a UserDefinedFunction, or when executing a query with CreateDocumentQuery in Azure DocumentDB database service. */ function createDocumentCollectionUri(databaseId: string, collectionId: string): string; /** * Given a database and collection id, this creates a collection link. * @param databaseId -The database id * @param collectionId -The collection id * @param documentId -The document id * @returns -A document link in the format of dbs/{0}/colls/{1}/docs/{2} with {0} * being a Uri escaped version of the databaseId, {1} being collectionId and {2} being the documentId * @description Would be used when creating an Attachment, or when replacing or deleting a Document in Azure DocumentDB database service */ function createDocumentUri(databaseId: string, collectionId: string, documentId: string): string; /** * Given a database, collection and document id, this creates a document link. * @param databaseId -The database Id * @param userId -The user Id * @param permissionId - The permissionId * @returns A permission link in the format of dbs/{0}/users/{1}/permissions/{2} with {0} being a Uri escaped version of the databaseId, {1} being userId and {2} being permissionId * @description Would be used when replacing or deleting a Permission in Azure DocumentDB database service. */ function createPermissionUri(databaseId: string, userId: string, permissionId: string): string; /** * Given a database, collection and stored proc id, this creates a stored proc link. * @param databaseId -The database Id * @param collectionId -The collection Id * @param storedProcedureId -The stored procedure Id * @returns -A stored procedure link in the format of dbs/{0}/colls/{1}/sprocs/{2} * with {0} being a Uri escaped version of the databaseId, * {1} being collectionId and {2} being the storedProcedureId * @description Would be used when replacing, executing, or deleting a StoredProcedure in Azure DocumentDB database service. */ function createStoredProcedureUri(databaseId: string, collectionId: string, storedProcedureId: string): string; /** * @summary Given a database, collection and trigger id, this creates a trigger link. * @param databaseId -The database Id * @param collectionId -The collection Id * @param triggerId -The trigger Id * @returns -A trigger link in the format of dbs/{0}/colls/{1}/triggers/{2} * with {0} being a Uri escaped version of the databaseId, * {1} being collectionId and {2} being the triggerId * @description Would be used when replacing, executing, or deleting a Trigger in Azure DocumentDB database service */ function createTriggerUri(databaseId: string, collectionId: string, triggerId: string): string; /** * @summary Given a database, collection and udf id, this creates a udf link. * @param databaseId -The database Id * @param collectionId -The collection Id * @param udfId -The User Defined Function Id * @returns -A udf link in the format of dbs/{0}/colls/{1}/udfs/{2} with {0} being a Uri escaped version of the databaseId, {1} being collectionId and {2} being the udfId * @description Would be used when replacing, executing, or deleting a UserDefinedFunction in Azure DocumentDB database service */ function createUserDefinedFunctionUri(databaseId: string, collectionId: string, udfId: string): string; /** * @summary * @param databaseId -The database Id * @param collectionId -The collection Id * @param conflictId -The conflict Id * @returns -A conflict link in the format of dbs/{0}/colls/{1}/conflicts/{2} * with {0} being a Uri escaped version of the databaseId, {1} being collectionId and {2} being the conflictId * @description Would be used when creating a Conflict in Azure DocumentDB database service. */ function createConflictUri(databaseId: string, collectionId: string, conflictId: string): string; /** * @summary Given a database, collection and conflict id, this creates a conflict link. * @param databaseId -The database Id * @param collectionId -The collection Id * @param documentId -The document Id\ * @param attachmentId -The attachment Id * @returns -A conflict link in the format of dbs/{0}/colls/{1}/conflicts/{2} with {0} being a Uri escaped version of the databaseId, * {1} being collectionId and {2} being the conflictId * @description Would be used when creating a Conflict in Azure DocumentDB database service. */ function createAttachmentUri(databaseId: string, collectionId: string, documentId: string, attachmentId: string): string; /** * @summary Given a database and collection, this creates a partition key ranges link in the Azure DocumentDB database service. * @param databaseId -The database Id * @param collectionId -The collection Id * @returns -A partition key ranges link in the format of dbs/{0}/colls/{1}/pkranges with {0} being a Uri escaped version of the databaseId and {1} being collectionId */ function createPartitionKeyRangesUri(databaseId: string, collectionId: string): string; } export type MediaReadMode = 'Buffered' | 'Streamed'; export type ConsistencyLevel = 'Strong' | 'BoundedStaleness' | 'Session' | 'Eventual'; export type IndexingMode = 'Consistent' | 'Lazy'; export type IndexKind = 'Hash' | 'Range' | 'Spatial'; export type PermissionMode = 'None' | 'Read' | 'All'; export type TriggerType = 'Pre' | 'Post' | 'pre' | 'post'; export type TriggerOperation = 'All' | 'Create' | 'Update' | 'Delete' | 'Replace' | 'all' | 'create' | 'update' | 'delete' | 'replace'; export type UserDefinedFunctionType = 'Javascript'; export type PartitionKind = 'Hash';