mirror of
https://github.com/musix-org/musix-oss
synced 2024-11-14 16:00:17 +00:00
5454 lines
188 KiB
TypeScript
5454 lines
188 KiB
TypeScript
|
/*! firebase-admin v8.5.0 */
|
|||
|
/*!
|
|||
|
* Copyright 2017 Google Inc.
|
|||
|
*
|
|||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|||
|
* you may not use this file except in compliance with the License.
|
|||
|
* You may obtain a copy of the License at
|
|||
|
*
|
|||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|||
|
*
|
|||
|
* Unless required by applicable law or agreed to in writing, software
|
|||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
|
* See the License for the specific language governing permissions and
|
|||
|
* limitations under the License.
|
|||
|
*/
|
|||
|
|
|||
|
import {Bucket} from '@google-cloud/storage';
|
|||
|
import * as _firestore from '@google-cloud/firestore';
|
|||
|
import {Agent} from 'http';
|
|||
|
|
|||
|
/**
|
|||
|
* `admin` is a global namespace from which all Firebase Admin
|
|||
|
* services are accessed.
|
|||
|
*/
|
|||
|
declare namespace admin {
|
|||
|
|
|||
|
/**
|
|||
|
* `FirebaseError` is a subclass of the standard JavaScript `Error` object. In
|
|||
|
* addition to a message string and stack trace, it contains a string code.
|
|||
|
*/
|
|||
|
interface FirebaseError {
|
|||
|
|
|||
|
/**
|
|||
|
* Error codes are strings using the following format: `"service/string-code"`.
|
|||
|
* Some examples include `"auth/invalid-uid"` and
|
|||
|
* `"messaging/invalid-recipient"`.
|
|||
|
*
|
|||
|
* While the message for a given error can change, the code will remain the same
|
|||
|
* between backward-compatible versions of the Firebase SDK.
|
|||
|
*/
|
|||
|
code: string;
|
|||
|
|
|||
|
/**
|
|||
|
* An explanatory message for the error that just occurred.
|
|||
|
*
|
|||
|
* This message is designed to be helpful to you, the developer. Because
|
|||
|
* it generally does not convey meaningful information to end users,
|
|||
|
* this message should not be displayed in your application.
|
|||
|
*/
|
|||
|
message: string;
|
|||
|
|
|||
|
/**
|
|||
|
* A string value containing the execution backtrace when the error originally
|
|||
|
* occurred.
|
|||
|
*
|
|||
|
* This information can be useful to you and can be sent to
|
|||
|
* {@link https://firebase.google.com/support/ Firebase Support} to help
|
|||
|
* explain the cause of an error.
|
|||
|
*/
|
|||
|
stack: string;
|
|||
|
|
|||
|
/**
|
|||
|
* @return A JSON-serializable representation of this object.
|
|||
|
*/
|
|||
|
toJSON(): Object;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Composite type which includes both a `FirebaseError` object and an index
|
|||
|
* which can be used to get the errored item.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var registrationTokens = [token1, token2, token3];
|
|||
|
* admin.messaging().subscribeToTopic(registrationTokens, 'topic-name')
|
|||
|
* .then(function(response) {
|
|||
|
* if (response.failureCount > 0) {
|
|||
|
* console.log("Following devices unsucessfully subscribed to topic:");
|
|||
|
* response.errors.forEach(function(error) {
|
|||
|
* var invalidToken = registrationTokens[error.index];
|
|||
|
* console.log(invalidToken, error.error);
|
|||
|
* });
|
|||
|
* } else {
|
|||
|
* console.log("All devices successfully subscribed to topic:", response);
|
|||
|
* }
|
|||
|
* })
|
|||
|
* .catch(function(error) {
|
|||
|
* console.log("Error subscribing to topic:", error);
|
|||
|
* });
|
|||
|
*```
|
|||
|
*/
|
|||
|
interface FirebaseArrayIndexError {
|
|||
|
|
|||
|
/**
|
|||
|
* The index of the errored item within the original array passed as part of the
|
|||
|
* called API method.
|
|||
|
*/
|
|||
|
index: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The error object.
|
|||
|
*/
|
|||
|
error: FirebaseError;
|
|||
|
}
|
|||
|
|
|||
|
interface ServiceAccount {
|
|||
|
projectId?: string;
|
|||
|
clientEmail?: string;
|
|||
|
privateKey?: string;
|
|||
|
}
|
|||
|
|
|||
|
interface GoogleOAuthAccessToken {
|
|||
|
access_token: string;
|
|||
|
expires_in: number;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Available options to pass to [`initializeApp()`](admin#.initializeApp).
|
|||
|
*/
|
|||
|
interface AppOptions {
|
|||
|
|
|||
|
/**
|
|||
|
* A {@link admin.credential.Credential `Credential`} object used to
|
|||
|
* authenticate the Admin SDK.
|
|||
|
*
|
|||
|
* See [Initialize the SDK](/docs/admin/setup#initialize_the_sdk) for detailed
|
|||
|
* documentation and code samples.
|
|||
|
*/
|
|||
|
credential?: admin.credential.Credential;
|
|||
|
|
|||
|
/**
|
|||
|
* The object to use as the [`auth`](/docs/reference/security/database/#auth)
|
|||
|
* variable in your Realtime Database Rules when the Admin SDK reads from or
|
|||
|
* writes to the Realtime Database. This allows you to downscope the Admin SDK
|
|||
|
* from its default full read and write privileges.
|
|||
|
*
|
|||
|
* You can pass `null` to act as an unauthenticated client.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Authenticate with limited privileges](/docs/database/admin/start#authenticate-with-limited-privileges)
|
|||
|
* for detailed documentation and code samples.
|
|||
|
*/
|
|||
|
databaseAuthVariableOverride?: Object;
|
|||
|
|
|||
|
/**
|
|||
|
* The URL of the Realtime Database from which to read and write data.
|
|||
|
*/
|
|||
|
databaseURL?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The ID of the service account to be used for signing custom tokens. This
|
|||
|
* can be found in the `client_email` field of a service account JSON file.
|
|||
|
*/
|
|||
|
serviceAccountId?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The ID of the service account to be used for signing custom tokens. This
|
|||
|
* can be found in the `client_email` field of a service account JSON file.
|
|||
|
*/
|
|||
|
storageBucket?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The ID of the Google Cloud project associated with the App.
|
|||
|
*/
|
|||
|
projectId?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* An [HTTP Agent](https://nodejs.org/api/http.html#http_class_http_agent)
|
|||
|
* to be used when making outgoing HTTP calls. This Agent instance is used
|
|||
|
* by all services that make REST calls (e.g. `auth`, `messaging`,
|
|||
|
* `projectManagement`).
|
|||
|
*
|
|||
|
* Realtime Database and Firestore use other means of communicating with
|
|||
|
* the backend servers, so they do not use this HTTP Agent. `Credential`
|
|||
|
* instances also do not use this HTTP Agent, but instead support
|
|||
|
* specifying an HTTP Agent in the corresponding factory methods.
|
|||
|
*/
|
|||
|
httpAgent?: Agent;
|
|||
|
}
|
|||
|
|
|||
|
var SDK_VERSION: string;
|
|||
|
var apps: (admin.app.App|null)[];
|
|||
|
|
|||
|
function app(name?: string): admin.app.App;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the {@link admin.auth.Auth `Auth`} service for the default app or a
|
|||
|
* given app.
|
|||
|
*
|
|||
|
* `admin.auth()` can be called with no arguments to access the default app's
|
|||
|
* {@link admin.auth.Auth `Auth`} service or as `admin.auth(app)` to access the
|
|||
|
* {@link admin.auth.Auth `Auth`} service associated with a specific app.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the Auth service for the default app
|
|||
|
* var defaultAuth = admin.auth();
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the Auth service for a given app
|
|||
|
* var otherAuth = admin.auth(otherApp);
|
|||
|
* ```
|
|||
|
*
|
|||
|
*/
|
|||
|
function auth(app?: admin.app.App): admin.auth.Auth;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the {@link admin.database.Database `Database`} service for the default
|
|||
|
* app or a given app.
|
|||
|
*
|
|||
|
* `admin.database()` can be called with no arguments to access the default
|
|||
|
* app's {@link admin.database.Database `Database`} service or as
|
|||
|
* `admin.database(app)` to access the
|
|||
|
* {@link admin.database.Database `Database`} service associated with a specific
|
|||
|
* app.
|
|||
|
*
|
|||
|
* `admin.database` is also a namespace that can be used to access global
|
|||
|
* constants and methods associated with the `Database` service.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the Database service for the default app
|
|||
|
* var defaultDatabase = admin.database();
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the Database service for a specific app
|
|||
|
* var otherDatabase = admin.database(app);
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param App whose `Database` service to
|
|||
|
* return. If not provided, the default `Database` service will be returned.
|
|||
|
*
|
|||
|
* @return The default `Database` service if no app
|
|||
|
* is provided or the `Database` service associated with the provided app.
|
|||
|
*/
|
|||
|
function database(app?: admin.app.App): admin.database.Database;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the {@link admin.messaging.Messaging `Messaging`} service for the
|
|||
|
* default app or a given app.
|
|||
|
*
|
|||
|
* `admin.messaging()` can be called with no arguments to access the default
|
|||
|
* app's {@link admin.messaging.Messaging `Messaging`} service or as
|
|||
|
* `admin.messaging(app)` to access the
|
|||
|
* {@link admin.messaging.Messaging `Messaging`} service associated with a
|
|||
|
* specific app.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the Messaging service for the default app
|
|||
|
* var defaultMessaging = admin.messaging();
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the Messaging service for a given app
|
|||
|
* var otherMessaging = admin.messaging(otherApp);
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param app Optional app whose `Messaging` service to
|
|||
|
* return. If not provided, the default `Messaging` service will be returned.
|
|||
|
*
|
|||
|
* @return The default `Messaging` service if no
|
|||
|
* app is provided or the `Messaging` service associated with the provided
|
|||
|
* app.
|
|||
|
*/
|
|||
|
function messaging(app?: admin.app.App): admin.messaging.Messaging;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the {@link admin.storage.Storage `Storage`} service for the
|
|||
|
* default app or a given app.
|
|||
|
*
|
|||
|
* `admin.storage()` can be called with no arguments to access the default
|
|||
|
* app's {@link admin.storage.Storage `Storage`} service or as
|
|||
|
* `admin.storage(app)` to access the
|
|||
|
* {@link admin.storage.Storage `Storage`} service associated with a
|
|||
|
* specific app.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the Storage service for the default app
|
|||
|
* var defaultStorage = admin.storage();
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the Storage service for a given app
|
|||
|
* var otherStorage = admin.storage(otherApp);
|
|||
|
* ```
|
|||
|
*/
|
|||
|
function storage(app?: admin.app.App): admin.storage.Storage;
|
|||
|
|
|||
|
/**
|
|||
|
*
|
|||
|
* @param app A Firebase App instance
|
|||
|
* @returns A [Firestore](https://cloud.google.com/nodejs/docs/reference/firestore/latest/Firestore)
|
|||
|
* instance as defined in the `@google-cloud/firestore` package.
|
|||
|
*/
|
|||
|
function firestore(app?: admin.app.App): admin.firestore.Firestore;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the {@link admin.instanceId.InstanceId `InstanceId`} service for the
|
|||
|
* default app or a given app.
|
|||
|
*
|
|||
|
* `admin.instanceId()` can be called with no arguments to access the default
|
|||
|
* app's {@link admin.instanceId.InstanceId `InstanceId`} service or as
|
|||
|
* `admin.instanceId(app)` to access the
|
|||
|
* {@link admin.instanceId.InstanceId `InstanceId`} service associated with a
|
|||
|
* specific app.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the Instance ID service for the default app
|
|||
|
* var defaultInstanceId = admin.instanceId();
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the Instance ID service for a given app
|
|||
|
* var otherInstanceId = admin.instanceId(otherApp);
|
|||
|
*```
|
|||
|
*
|
|||
|
* @param app Optional app whose `InstanceId` service to
|
|||
|
* return. If not provided, the default `InstanceId` service will be
|
|||
|
* returned.
|
|||
|
*
|
|||
|
* @return The default `InstanceId` service if
|
|||
|
* no app is provided or the `InstanceId` service associated with the
|
|||
|
* provided app.
|
|||
|
*/
|
|||
|
function instanceId(app?: admin.app.App): admin.instanceId.InstanceId;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the {@link admin.projectManagement.ProjectManagement
|
|||
|
* `ProjectManagement`} service for the default app or a given app.
|
|||
|
*
|
|||
|
* `admin.projectManagement()` can be called with no arguments to access the
|
|||
|
* default app's {@link admin.projectManagement.ProjectManagement
|
|||
|
* `ProjectManagement`} service, or as `admin.projectManagement(app)` to access
|
|||
|
* the {@link admin.projectManagement.ProjectManagement `ProjectManagement`}
|
|||
|
* service associated with a specific app.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the ProjectManagement service for the default app
|
|||
|
* var defaultProjectManagement = admin.projectManagement();
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get the ProjectManagement service for a given app
|
|||
|
* var otherProjectManagement = admin.projectManagement(otherApp);
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param app Optional app whose `ProjectManagement` service
|
|||
|
* to return. If not provided, the default `ProjectManagement` service will
|
|||
|
* be returned. *
|
|||
|
* @return The default `ProjectManagement` service if no app is provided or the
|
|||
|
* `ProjectManagement` service associated with the provided app.
|
|||
|
*/
|
|||
|
function projectManagement(app?: admin.app.App): admin.projectManagement.ProjectManagement;
|
|||
|
function initializeApp(options?: admin.AppOptions, name?: string): admin.app.App;
|
|||
|
}
|
|||
|
|
|||
|
declare namespace admin.app {
|
|||
|
/**
|
|||
|
* A Firebase app holds the initialization information for a collection of
|
|||
|
* services.
|
|||
|
*
|
|||
|
* Do not call this constructor directly. Instead, use
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/reference/admin/node/admin#.initializeApp
|
|||
|
* `admin.initializeApp()`}
|
|||
|
* to create an app.
|
|||
|
*/
|
|||
|
interface App {
|
|||
|
|
|||
|
/**
|
|||
|
* The (read-only) name for this app.
|
|||
|
*
|
|||
|
* The default app's name is `"[DEFAULT]"`.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // The default app's name is "[DEFAULT]"
|
|||
|
* admin.initializeApp(defaultAppConfig);
|
|||
|
* console.log(admin.app().name); // "[DEFAULT]"
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // A named app's name is what you provide to initializeApp()
|
|||
|
* var otherApp = admin.initializeApp(otherAppConfig, "other");
|
|||
|
* console.log(otherApp.name); // "other"
|
|||
|
* ```
|
|||
|
*/
|
|||
|
name: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The (read-only) configuration options for this app. These are the original
|
|||
|
* parameters given in
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/reference/admin/node/admin#.initializeApp
|
|||
|
* `admin.initializeApp()`}.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var app = admin.initializeApp(config);
|
|||
|
* console.log(app.options.credential === config.credential); // true
|
|||
|
* console.log(app.options.databaseURL === config.databaseURL); // true
|
|||
|
* ```
|
|||
|
*/
|
|||
|
options: admin.AppOptions;
|
|||
|
|
|||
|
|
|||
|
auth(): admin.auth.Auth;
|
|||
|
database(url?: string): admin.database.Database;
|
|||
|
firestore(): admin.firestore.Firestore;
|
|||
|
instanceId(): admin.instanceId.InstanceId;
|
|||
|
messaging(): admin.messaging.Messaging;
|
|||
|
projectManagement(): admin.projectManagement.ProjectManagement;
|
|||
|
storage(): admin.storage.Storage;
|
|||
|
|
|||
|
/**
|
|||
|
* Renders this local `FirebaseApp` unusable and frees the resources of
|
|||
|
* all associated services (though it does *not* clean up any backend
|
|||
|
* resources). When running the SDK locally, this method
|
|||
|
* must be called to ensure graceful termination of the process.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* app.delete()
|
|||
|
* .then(function() {
|
|||
|
* console.log("App deleted successfully");
|
|||
|
* })
|
|||
|
* .catch(function(error) {
|
|||
|
* console.log("Error deleting app:", error);
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*/
|
|||
|
delete(): Promise<void>;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
declare namespace admin.auth {
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing a user's metadata.
|
|||
|
*/
|
|||
|
interface UserMetadata {
|
|||
|
|
|||
|
/**
|
|||
|
* The date the user last signed in, formatted as a UTC string.
|
|||
|
*/
|
|||
|
lastSignInTime: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The date the user was created, formatted as a UTC string.
|
|||
|
*
|
|||
|
*/
|
|||
|
creationTime: string;
|
|||
|
|
|||
|
/**
|
|||
|
* @return A JSON-serializable representation of this object.
|
|||
|
*/
|
|||
|
toJSON(): Object;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing a user's info from a third-party identity provider
|
|||
|
* such as Google or Facebook.
|
|||
|
*/
|
|||
|
interface UserInfo {
|
|||
|
|
|||
|
/**
|
|||
|
* The user identifier for the linked provider.
|
|||
|
*/
|
|||
|
uid: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The display name for the linked provider.
|
|||
|
*/
|
|||
|
displayName: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The email for the linked provider.
|
|||
|
*/
|
|||
|
email: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The phone number for the linked provider.
|
|||
|
*/
|
|||
|
phoneNumber: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The photo URL for the linked provider.
|
|||
|
*/
|
|||
|
photoURL: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The linked provider ID (for example, "google.com" for the Google provider).
|
|||
|
*/
|
|||
|
providerId: string;
|
|||
|
|
|||
|
/**
|
|||
|
* @return A JSON-serializable representation of this object.
|
|||
|
*/
|
|||
|
toJSON(): Object;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing a user.
|
|||
|
*/
|
|||
|
interface UserRecord {
|
|||
|
|
|||
|
/**
|
|||
|
* The user's `uid`.
|
|||
|
*/
|
|||
|
uid: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's primary email, if set.
|
|||
|
*/
|
|||
|
email?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether or not the user's primary email is verified.
|
|||
|
*/
|
|||
|
emailVerified: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's display name.
|
|||
|
*/
|
|||
|
displayName?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's primary phone number, if set.
|
|||
|
*/
|
|||
|
phoneNumber?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's photo URL.
|
|||
|
*/
|
|||
|
photoURL?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether or not the user is disabled: `true` for disabled; `false` for
|
|||
|
* enabled.
|
|||
|
*/
|
|||
|
disabled: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Additional metadata about the user.
|
|||
|
*/
|
|||
|
metadata: admin.auth.UserMetadata;
|
|||
|
|
|||
|
/**
|
|||
|
* An array of providers (for example, Google, Facebook) linked to the user.
|
|||
|
*/
|
|||
|
providerData: admin.auth.UserInfo[];
|
|||
|
|
|||
|
/**
|
|||
|
* The user’s hashed password (base64-encoded), only if Firebase Auth hashing
|
|||
|
* algorithm (SCRYPT) is used. If a different hashing algorithm had been used
|
|||
|
* when uploading this user, as is typical when migrating from another Auth
|
|||
|
* system, this will be an empty string. If no password is set, this is
|
|||
|
* null. This is only available when the user is obtained from
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#listUsers `listUsers()`}.
|
|||
|
*
|
|||
|
*/
|
|||
|
passwordHash?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The user’s password salt (base64-encoded), only if Firebase Auth hashing
|
|||
|
* algorithm (SCRYPT) is used. If a different hashing algorithm had been used to
|
|||
|
* upload this user, typical when migrating from another Auth system, this will
|
|||
|
* be an empty string. If no password is set, this is null. This is only
|
|||
|
* available when the user is obtained from
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#listUsers `listUsers()`}.
|
|||
|
*
|
|||
|
*/
|
|||
|
passwordSalt?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's custom claims object if available, typically used to define
|
|||
|
* user roles and propagated to an authenticated user's ID token.
|
|||
|
* This is set via
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#setCustomUserClaims `setCustomUserClaims()`}
|
|||
|
*/
|
|||
|
customClaims?: Object;
|
|||
|
|
|||
|
/**
|
|||
|
* The date the user's tokens are valid after, formatted as a UTC string.
|
|||
|
* This is updated every time the user's refresh token are revoked either
|
|||
|
* from the {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#revokeRefreshTokens `revokeRefreshTokens()`}
|
|||
|
* API or from the Firebase Auth backend on big account changes (password
|
|||
|
* resets, password or email updates, etc).
|
|||
|
*/
|
|||
|
tokensValidAfterTime?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The ID of the tenant the user belongs to, if available.
|
|||
|
*/
|
|||
|
tenantId?: string | null;
|
|||
|
|
|||
|
/**
|
|||
|
* @return A JSON-serializable representation of this object.
|
|||
|
*/
|
|||
|
toJSON(): Object;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the properties to update on the provided user.
|
|||
|
*/
|
|||
|
interface UpdateRequest {
|
|||
|
|
|||
|
/**
|
|||
|
* Whether or not the user is disabled: `true` for disabled;
|
|||
|
* `false` for enabled.
|
|||
|
*/
|
|||
|
disabled?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's display name.
|
|||
|
*/
|
|||
|
displayName?: string | null;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's primary email.
|
|||
|
*/
|
|||
|
email?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether or not the user's primary email is verified.
|
|||
|
*/
|
|||
|
emailVerified?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's unhashed password.
|
|||
|
*/
|
|||
|
password?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's primary phone number.
|
|||
|
*/
|
|||
|
phoneNumber?: string | null;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's photo URL.
|
|||
|
*/
|
|||
|
photoURL?: string | null;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the properties to set on a new user record to be
|
|||
|
* created.
|
|||
|
*/
|
|||
|
interface CreateRequest extends UpdateRequest {
|
|||
|
|
|||
|
/**
|
|||
|
* The user's `uid`.
|
|||
|
*/
|
|||
|
uid?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing a decoded Firebase ID token, returned from the
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#verifyIdToken `verifyIdToken()`} method.
|
|||
|
*
|
|||
|
* Firebase ID tokens are OpenID Connect spec-compliant JSON Web Tokens (JWTs).
|
|||
|
* See the
|
|||
|
* [ID Token section of the OpenID Connect spec](http://openid.net/specs/openid-connect-core-1_0.html#IDToken)
|
|||
|
* for more information about the specific properties below.
|
|||
|
*/
|
|||
|
interface DecodedIdToken {
|
|||
|
|
|||
|
/**
|
|||
|
* The audience for which this token is intended.
|
|||
|
*
|
|||
|
* This value is a string equal to your Firebase project ID, the unique
|
|||
|
* identifier for your Firebase project, which can be found in [your project's
|
|||
|
* settings](https://console.firebase.google.com/project/_/settings/general/android:com.random.android).
|
|||
|
*/
|
|||
|
aud: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Time, in seconds since the Unix epoch, when the end-user authentication
|
|||
|
* occurred.
|
|||
|
*
|
|||
|
* This value is not set when this particular ID token was created, but when the
|
|||
|
* user initially logged in to this session. In a single session, the Firebase
|
|||
|
* SDKs will refresh a user's ID tokens every hour. Each ID token will have a
|
|||
|
* different [`iat`](#iat) value, but the same `auth_time` value.
|
|||
|
*/
|
|||
|
auth_time: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The ID token's expiration time, in seconds since the Unix epoch. That is, the
|
|||
|
* time at which this ID token expires and should no longer be considered valid.
|
|||
|
*
|
|||
|
* The Firebase SDKs transparently refresh ID tokens every hour, issuing a new
|
|||
|
* ID token with up to a one hour expiration.
|
|||
|
*/
|
|||
|
exp: number;
|
|||
|
|
|||
|
/**
|
|||
|
* Information about the sign in event, including which sign in provider was
|
|||
|
* used and provider-specific identity details.
|
|||
|
*
|
|||
|
* This data is provided by the Firebase Authentication service and is a
|
|||
|
* reserved claim in the ID token.
|
|||
|
*/
|
|||
|
firebase: {
|
|||
|
|
|||
|
/**
|
|||
|
* Provider-specific identity details corresponding
|
|||
|
* to the provider used to sign in the user.
|
|||
|
*/
|
|||
|
identities: {
|
|||
|
[key: string]: any;
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* The ID of the provider used to sign in the user.
|
|||
|
* One of `"anonymous"`, `"password"`, `"facebook.com"`, `"github.com"`,
|
|||
|
* `"google.com"`, `"twitter.com"`, or `"custom"`.
|
|||
|
*/
|
|||
|
sign_in_provider: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The ID of the tenant the user belongs to, if available.
|
|||
|
*/
|
|||
|
tenant?: string;
|
|||
|
[key: string]: any;
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* The ID token's issued-at time, in seconds since the Unix epoch. That is, the
|
|||
|
* time at which this ID token was issued and should start to be considered
|
|||
|
* valid.
|
|||
|
*
|
|||
|
* The Firebase SDKs transparently refresh ID tokens every hour, issuing a new
|
|||
|
* ID token with a new issued-at time. If you want to get the time at which the
|
|||
|
* user session corresponding to the ID token initially occurred, see the
|
|||
|
* [`auth_time`](#auth_time) property.
|
|||
|
*/
|
|||
|
iat: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The issuer identifier for the issuer of the response.
|
|||
|
*
|
|||
|
* This value is a URL with the format
|
|||
|
* `https://securetoken.google.com/<PROJECT_ID>`, where `<PROJECT_ID>` is the
|
|||
|
* same project ID specified in the [`aud`](#aud) property.
|
|||
|
*/
|
|||
|
iss: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The `uid` corresponding to the user who the ID token belonged to.
|
|||
|
*
|
|||
|
* As a convenience, this value is copied over to the [`uid`](#uid) property.
|
|||
|
*/
|
|||
|
sub: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The `uid` corresponding to the user who the ID token belonged to.
|
|||
|
*
|
|||
|
* This value is not actually in the JWT token claims itself. It is added as a
|
|||
|
* convenience, and is set as the value of the [`sub`](#sub) property.
|
|||
|
*/
|
|||
|
uid: string;
|
|||
|
[key: string]: any;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the object returned from a
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#listUsers `listUsers()`} operation. Contains the list
|
|||
|
* of users for the current batch and the next page token if available.
|
|||
|
*/
|
|||
|
interface ListUsersResult {
|
|||
|
|
|||
|
/**
|
|||
|
* The list of {@link admin.auth.UserRecord `UserRecord`} objects for the
|
|||
|
* current downloaded batch.
|
|||
|
*/
|
|||
|
users: admin.auth.UserRecord[];
|
|||
|
|
|||
|
/**
|
|||
|
* The next page token if available. This is needed for the next batch download.
|
|||
|
*/
|
|||
|
pageToken?: string;
|
|||
|
}
|
|||
|
|
|||
|
type HashAlgorithmType = 'SCRYPT' | 'STANDARD_SCRYPT' | 'HMAC_SHA512' |
|
|||
|
'HMAC_SHA256' | 'HMAC_SHA1' | 'HMAC_MD5' | 'MD5' | 'PBKDF_SHA1' | 'BCRYPT' |
|
|||
|
'PBKDF2_SHA256' | 'SHA512' | 'SHA256' | 'SHA1';
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the user import options needed for
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#importUsers `importUsers()`} method. This is used to
|
|||
|
* provide the password hashing algorithm information.
|
|||
|
*/
|
|||
|
interface UserImportOptions {
|
|||
|
|
|||
|
/**
|
|||
|
* The password hashing information.
|
|||
|
*/
|
|||
|
hash: {
|
|||
|
|
|||
|
/**
|
|||
|
* The password hashing algorithm identifier. The following algorithm
|
|||
|
* identifiers are supported:
|
|||
|
* `SCRYPT`, `STANDARD_SCRYPT`, `HMAC_SHA512`, `HMAC_SHA256`, `HMAC_SHA1`,
|
|||
|
* `HMAC_MD5`, `MD5`, `PBKDF_SHA1`, `BCRYPT`, `PBKDF2_SHA256`, `SHA512`,
|
|||
|
* `SHA256` and `SHA1`.
|
|||
|
*/
|
|||
|
algorithm: HashAlgorithmType;
|
|||
|
|
|||
|
/**
|
|||
|
* The signing key used in the hash algorithm in buffer bytes.
|
|||
|
* Required by hashing algorithms `SCRYPT`, `HMAC_SHA512`, `HMAC_SHA256`,
|
|||
|
* `HAMC_SHA1` and `HMAC_MD5`.
|
|||
|
*/
|
|||
|
key?: Buffer;
|
|||
|
|
|||
|
/**
|
|||
|
* The salt separator in buffer bytes which is appended to salt when
|
|||
|
* verifying a password. This is only used by the `SCRYPT` algorithm.
|
|||
|
*/
|
|||
|
saltSeparator?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The number of rounds for hashing calculation.
|
|||
|
* Required for `SCRYPT`, `MD5`, `SHA512`, `SHA256`, `SHA1`, `PBKDF_SHA1` and
|
|||
|
* `PBKDF2_SHA256`.
|
|||
|
*/
|
|||
|
rounds?: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The memory cost required for `SCRYPT` algorithm, or the CPU/memory cost.
|
|||
|
* Required for `STANDARD_SCRYPT` algorithm.
|
|||
|
*/
|
|||
|
memoryCost?: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The parallelization of the hashing algorithm. Required for the
|
|||
|
* `STANDARD_SCRYPT` algorithm.
|
|||
|
*/
|
|||
|
parallelization?: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The block size (normally 8) of the hashing algorithm. Required for the
|
|||
|
* `STANDARD_SCRYPT` algorithm.
|
|||
|
*/
|
|||
|
blockSize?: number;
|
|||
|
/**
|
|||
|
* The derived key length of the hashing algorithm. Required for the
|
|||
|
* `STANDARD_SCRYPT` algorithm.
|
|||
|
*/
|
|||
|
derivedKeyLength?: number;
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the response from the
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#importUsers `importUsers()`} method for batch
|
|||
|
* importing users to Firebase Auth.
|
|||
|
*/
|
|||
|
interface UserImportResult {
|
|||
|
|
|||
|
/**
|
|||
|
* The number of user records that failed to import to Firebase Auth.
|
|||
|
*/
|
|||
|
failureCount: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The number of user records that successfully imported to Firebase Auth.
|
|||
|
*/
|
|||
|
successCount: number;
|
|||
|
|
|||
|
/**
|
|||
|
* An array of errors corresponding to the provided users to import. The
|
|||
|
* length of this array is equal to [`failureCount`](#failureCount).
|
|||
|
*/
|
|||
|
errors: admin.FirebaseArrayIndexError[];
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing a user to import to Firebase Auth via the
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#importUsers `importUsers()`} method.
|
|||
|
*/
|
|||
|
interface UserImportRecord {
|
|||
|
|
|||
|
/**
|
|||
|
* The user's `uid`.
|
|||
|
*/
|
|||
|
uid: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's primary email, if set.
|
|||
|
*/
|
|||
|
email?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether or not the user's primary email is verified.
|
|||
|
*/
|
|||
|
emailVerified: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's display name.
|
|||
|
*/
|
|||
|
displayName?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's primary phone number, if set.
|
|||
|
*/
|
|||
|
phoneNumber?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The user's photo URL.
|
|||
|
*/
|
|||
|
photoURL?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether or not the user is disabled: `true` for disabled; `false` for
|
|||
|
* enabled.
|
|||
|
*/
|
|||
|
disabled: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Additional metadata about the user.
|
|||
|
*/
|
|||
|
metadata: admin.auth.UserMetadata;
|
|||
|
|
|||
|
/**
|
|||
|
* An array of providers (for example, Google, Facebook) linked to the user.
|
|||
|
*/
|
|||
|
providerData?: admin.auth.UserInfo[];
|
|||
|
|
|||
|
/**
|
|||
|
* The user's custom claims object if available, typically used to define
|
|||
|
* user roles and propagated to an authenticated user's ID token.
|
|||
|
*/
|
|||
|
customClaims?: Object;
|
|||
|
|
|||
|
/**
|
|||
|
* The buffer of bytes representing the user’s hashed password.
|
|||
|
* When a user is to be imported with a password hash,
|
|||
|
* {@link admin.auth.UserImportOptions `UserImportOptions`} are required to be
|
|||
|
* specified to identify the hashing algorithm used to generate this hash.
|
|||
|
*/
|
|||
|
passwordHash?: Buffer;
|
|||
|
|
|||
|
/**
|
|||
|
* The buffer of bytes representing the user’s password salt.
|
|||
|
*/
|
|||
|
passwordSalt?: Buffer;
|
|||
|
|
|||
|
/**
|
|||
|
* The identifier of the tenant where user is to be imported to.
|
|||
|
* When not provided in an `admin.auth.Auth` context, the user is uploaded to
|
|||
|
* the default parent project.
|
|||
|
* When not provided in an `admin.auth.TenantAwareAuth` context, the user is uploaded
|
|||
|
* to the tenant corresponding to that `TenantAwareAuth` instance's tenant ID.
|
|||
|
*/
|
|||
|
tenantId?: string | null;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the session cookie options needed for the
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#createSessionCookie `createSessionCookie()`} method.
|
|||
|
*/
|
|||
|
interface SessionCookieOptions {
|
|||
|
|
|||
|
/**
|
|||
|
* The session cookie custom expiration in milliseconds. The minimum allowed is
|
|||
|
* 5 minutes and the maxium allowed is 2 weeks.
|
|||
|
*/
|
|||
|
expiresIn: number;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* This is the interface that defines the required continue/state URL with
|
|||
|
* optional Android and iOS bundle identifiers.
|
|||
|
*/
|
|||
|
interface ActionCodeSettings {
|
|||
|
|
|||
|
/**
|
|||
|
* Defines the link continue/state URL, which has different meanings in
|
|||
|
* different contexts:
|
|||
|
* <ul>
|
|||
|
* <li>When the link is handled in the web action widgets, this is the deep
|
|||
|
* link in the `continueUrl` query parameter.</li>
|
|||
|
* <li>When the link is handled in the app directly, this is the `continueUrl`
|
|||
|
* query parameter in the deep link of the Dynamic Link.</li>
|
|||
|
* </ul>
|
|||
|
*/
|
|||
|
url: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether to open the link via a mobile app or a browser.
|
|||
|
* The default is false. When set to true, the action code link is sent
|
|||
|
* as a Universal Link or Android App Link and is opened by the app if
|
|||
|
* installed. In the false case, the code is sent to the web widget first
|
|||
|
* and then redirects to the app if installed.
|
|||
|
*/
|
|||
|
handleCodeInApp?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Defines the iOS bundle ID. This will try to open the link in an iOS app if it
|
|||
|
* is installed.
|
|||
|
*/
|
|||
|
iOS?: {
|
|||
|
|
|||
|
/**
|
|||
|
* Defines the required iOS bundle ID of the app where the link should be
|
|||
|
* handled if the application is already installed on the device.
|
|||
|
*/
|
|||
|
bundleId: string;
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* Defines the Android package name. This will try to open the link in an
|
|||
|
* android app if it is installed. If `installApp` is passed, it specifies
|
|||
|
* whether to install the Android app if the device supports it and the app is
|
|||
|
* not already installed. If this field is provided without a `packageName`, an
|
|||
|
* error is thrown explaining that the `packageName` must be provided in
|
|||
|
* conjunction with this field. If `minimumVersion` is specified, and an older
|
|||
|
* version of the app is installed, the user is taken to the Play Store to
|
|||
|
* upgrade the app.
|
|||
|
*/
|
|||
|
android?: {
|
|||
|
|
|||
|
/**
|
|||
|
* Defines the required Android package name of the app where the link should be
|
|||
|
* handled if the Android app is installed.
|
|||
|
*/
|
|||
|
packageName: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether to install the Android app if the device supports it and the app is
|
|||
|
* not already installed.
|
|||
|
*/
|
|||
|
installApp?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* The Android minimum version if available. If the installed app is an older
|
|||
|
* version, the user is taken to the GOogle Play Store to upgrade the app.
|
|||
|
*/
|
|||
|
minimumVersion?: string;
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* Defines the dynamic link domain to use for the current link if it is to be
|
|||
|
* opened using Firebase Dynamic Links, as multiple dynamic link domains can be
|
|||
|
* configured per project. This field provides the ability to explicitly choose
|
|||
|
* configured per project. This fields provides the ability explicitly choose
|
|||
|
* one. If none is provided, the oldest domain is used by default.
|
|||
|
*/
|
|||
|
dynamicLinkDomain?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing a tenant configuration.
|
|||
|
*
|
|||
|
* Multi-tenancy support requires Google Cloud's Identity Platform
|
|||
|
* (GCIP). To learn more about GCIP, including pricing and features,
|
|||
|
* see the [GCIP documentation](https://cloud.google.com/identity-platform)
|
|||
|
*
|
|||
|
* Before multi-tenancy can be used on a Google Cloud Identity Platform project,
|
|||
|
* tenants must be allowed on that project via the Cloud Console UI.
|
|||
|
*
|
|||
|
* A tenant configuration provides information such as the display name, tenant
|
|||
|
* identifier and email authentication configuration.
|
|||
|
* For OIDC/SAML provider configuration management, `TenantAwareAuth` instances should
|
|||
|
* be used instead of a `Tenant` to retrieve the list of configured IdPs on a tenant.
|
|||
|
* When configuring these providers, note that tenants will inherit
|
|||
|
* whitelisted domains and authenticated redirect URIs of their parent project.
|
|||
|
*
|
|||
|
* All other settings of a tenant will also be inherited. These will need to be managed
|
|||
|
* from the Cloud Console UI.
|
|||
|
*/
|
|||
|
interface Tenant {
|
|||
|
|
|||
|
/**
|
|||
|
* The tenant identifier.
|
|||
|
*/
|
|||
|
tenantId: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The tenant display name.
|
|||
|
*/
|
|||
|
displayName?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The email sign in provider configuration.
|
|||
|
*/
|
|||
|
emailSignInConfig?: {
|
|||
|
|
|||
|
/**
|
|||
|
* Whether email provider is enabled.
|
|||
|
*/
|
|||
|
enabled: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether password is required for email sign-in. When not required,
|
|||
|
* email sign-in can be performed with password or via email link sign-in.
|
|||
|
*/
|
|||
|
passwordRequired?: boolean
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* @return A JSON-serializable representation of this object.
|
|||
|
*/
|
|||
|
toJSON(): Object;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the properties to update on the provided tenant.
|
|||
|
*/
|
|||
|
interface UpdateTenantRequest {
|
|||
|
|
|||
|
/**
|
|||
|
* The tenant display name.
|
|||
|
*/
|
|||
|
displayName?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The email sign in configuration.
|
|||
|
*/
|
|||
|
emailSignInConfig?: {
|
|||
|
|
|||
|
/**
|
|||
|
* Whether email provider is enabled.
|
|||
|
*/
|
|||
|
enabled: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether password is required for email sign-in. When not required,
|
|||
|
* email sign-in can be performed with password or via email link sign-in.
|
|||
|
*/
|
|||
|
passwordRequired?: boolean;
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the properties to set on a new tenant.
|
|||
|
*/
|
|||
|
interface CreateTenantRequest extends UpdateTenantRequest {
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the object returned from a
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#listTenants `listTenants()`}
|
|||
|
* operation.
|
|||
|
* Contains the list of tenants for the current batch and the next page token if available.
|
|||
|
*/
|
|||
|
interface ListTenantsResult {
|
|||
|
|
|||
|
/**
|
|||
|
* The list of {@link admin.auth.Tenant `Tenant`} objects for the downloaded batch.
|
|||
|
*/
|
|||
|
tenants: admin.auth.Tenant[];
|
|||
|
|
|||
|
/**
|
|||
|
* The next page token if available. This is needed for the next batch download.
|
|||
|
*/
|
|||
|
pageToken?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* The filter interface used for listing provider configurations. This is used
|
|||
|
* when specifying how to list configured identity providers via
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#listProviderConfigs `listProviderConfigs()`}.
|
|||
|
*/
|
|||
|
interface AuthProviderConfigFilter {
|
|||
|
|
|||
|
/**
|
|||
|
* The Auth provider configuration filter. This can be either `saml` or `oidc`.
|
|||
|
* The former is used to look up SAML providers only, while the latter is used
|
|||
|
* for OIDC providers.
|
|||
|
*/
|
|||
|
type: 'saml' | 'oidc';
|
|||
|
|
|||
|
/**
|
|||
|
* The maximum number of results to return per page. The default and maximum is
|
|||
|
* 100.
|
|||
|
*/
|
|||
|
maxResults?: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The next page token. When not specified, the lookup starts from the beginning
|
|||
|
* of the list.
|
|||
|
*/
|
|||
|
pageToken?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* The base Auth provider configuration interface.
|
|||
|
*/
|
|||
|
interface AuthProviderConfig {
|
|||
|
|
|||
|
/**
|
|||
|
* The provider ID defined by the developer.
|
|||
|
* For a SAML provider, this is always prefixed by `saml.`.
|
|||
|
* For an OIDC provider, this is always prefixed by `oidc.`.
|
|||
|
*/
|
|||
|
providerId: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The user-friendly display name to the current configuration. This name is
|
|||
|
* also used as the provider label in the Cloud Console.
|
|||
|
*/
|
|||
|
displayName: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether the provider configuration is enabled or disabled. A user
|
|||
|
* cannot sign in using a disabled provider.
|
|||
|
*/
|
|||
|
enabled: boolean;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* The
|
|||
|
* [SAML](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html)
|
|||
|
* Auth provider configuration interface. A SAML provider can be created via
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#createProviderConfig `createProviderConfig()`}.
|
|||
|
*/
|
|||
|
interface SAMLAuthProviderConfig extends admin.auth.AuthProviderConfig {
|
|||
|
|
|||
|
/**
|
|||
|
* The SAML IdP entity identifier.
|
|||
|
*/
|
|||
|
idpEntityId: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The SAML IdP SSO URL. This must be a valid URL.
|
|||
|
*/
|
|||
|
ssoURL: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The list of SAML IdP X.509 certificates issued by CA for this provider.
|
|||
|
* Multiple certificates are accepted to prevent outages during
|
|||
|
* IdP key rotation (for example ADFS rotates every 10 days). When the Auth
|
|||
|
* server receives a SAML response, it will match the SAML response with the
|
|||
|
* certificate on record. Otherwise the response is rejected.
|
|||
|
* Developers are expected to manage the certificate updates as keys are
|
|||
|
* rotated.
|
|||
|
*/
|
|||
|
x509Certificates: string[];
|
|||
|
|
|||
|
/**
|
|||
|
* The SAML relying party (service provider) entity ID.
|
|||
|
* This is defined by the developer but needs to be provided to the SAML IdP.
|
|||
|
*/
|
|||
|
rpEntityId: string;
|
|||
|
|
|||
|
/**
|
|||
|
* This is fixed and must always be the same as the OAuth redirect URL
|
|||
|
* provisioned by Firebase Auth,
|
|||
|
* `https://project-id.firebaseapp.com/__/auth/handler` unless a custom
|
|||
|
* `authDomain` is used.
|
|||
|
* The callback URL should also be provided to the SAML IdP during
|
|||
|
* configuration.
|
|||
|
*/
|
|||
|
callbackURL?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* The [OIDC](https://openid.net/specs/openid-connect-core-1_0-final.html) Auth
|
|||
|
* provider configuration interface. An OIDC provider can be created via
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#createProviderConfig `createProviderConfig()`}.
|
|||
|
*/
|
|||
|
interface OIDCAuthProviderConfig extends admin.auth.AuthProviderConfig {
|
|||
|
|
|||
|
/**
|
|||
|
* This is the required client ID used to confirm the audience of an OIDC
|
|||
|
* provider's
|
|||
|
* [ID token](https://openid.net/specs/openid-connect-core-1_0-final.html#IDToken).
|
|||
|
*/
|
|||
|
clientId: string;
|
|||
|
|
|||
|
/**
|
|||
|
* This is the required provider issuer used to match the provider issuer of
|
|||
|
* the ID token and to determine the corresponding OIDC discovery document, eg.
|
|||
|
* [`/.well-known/openid-configuration`](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig).
|
|||
|
* This is needed for the following:
|
|||
|
* <ul>
|
|||
|
* <li>To verify the provided issuer.</li>
|
|||
|
* <li>Determine the authentication/authorization endpoint during the OAuth
|
|||
|
* `id_token` authentication flow.</li>
|
|||
|
* <li>To retrieve the public signing keys via `jwks_uri` to verify the OIDC
|
|||
|
* provider's ID token's signature.</li>
|
|||
|
* <li>To determine the claims_supported to construct the user attributes to be
|
|||
|
* returned in the additional user info response.</li>
|
|||
|
* </ul>
|
|||
|
* ID token validation will be performed as defined in the
|
|||
|
* [spec](https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation).
|
|||
|
*/
|
|||
|
issuer: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* The request interface for updating a SAML Auth provider. This is used
|
|||
|
* when updating a SAML provider's configuration via
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#updateProviderConfig `updateProviderConfig()`}.
|
|||
|
*/
|
|||
|
interface SAMLUpdateAuthProviderRequest {
|
|||
|
|
|||
|
/**
|
|||
|
* The SAML provider's updated display name. If not provided, the existing
|
|||
|
* configuration's value is not modified.
|
|||
|
*/
|
|||
|
displayName?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether the SAML provider is enabled or not. If not provided, the existing
|
|||
|
* configuration's setting is not modified.
|
|||
|
*/
|
|||
|
enabled?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* The SAML provider's updated IdP entity ID. If not provided, the existing
|
|||
|
* configuration's value is not modified.
|
|||
|
*/
|
|||
|
idpEntityId?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The SAML provider's updated SSO URL. If not provided, the existing
|
|||
|
* configuration's value is not modified.
|
|||
|
*/
|
|||
|
ssoURL?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The SAML provider's updated list of X.509 certificated. If not provided, the
|
|||
|
* existing configuration list is not modified.
|
|||
|
*/
|
|||
|
x509Certificates?: string[];
|
|||
|
|
|||
|
/**
|
|||
|
* The SAML provider's updated RP entity ID. If not provided, the existing
|
|||
|
* configuration's value is not modified.
|
|||
|
*/
|
|||
|
rpEntityId?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The SAML provider's callback URL. If not provided, the existing
|
|||
|
* configuration's value is not modified.
|
|||
|
*/
|
|||
|
callbackURL?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* The request interface for updating an OIDC Auth provider. This is used
|
|||
|
* when updating an OIDC provider's configuration via
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#updateProviderConfig `updateProviderConfig()`}.
|
|||
|
*/
|
|||
|
interface OIDCUpdateAuthProviderRequest {
|
|||
|
|
|||
|
/**
|
|||
|
* The OIDC provider's updated display name. If not provided, the existing
|
|||
|
* configuration's value is not modified.
|
|||
|
*/
|
|||
|
displayName?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Whether the OIDC provider is enabled or not. If not provided, the existing
|
|||
|
* configuration's setting is not modified.
|
|||
|
*/
|
|||
|
enabled?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* The OIDC provider's updated client ID. If not provided, the existing
|
|||
|
* configuration's value is not modified.
|
|||
|
*/
|
|||
|
clientId?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The OIDC provider's updated issuer. If not provided, the existing
|
|||
|
* configuration's value is not modified.
|
|||
|
*/
|
|||
|
issuer?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* The response interface for listing provider configs. This is only available
|
|||
|
* when listing all identity providers' configurations via
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#listProviderConfigs `listProviderConfigs()`}.
|
|||
|
*/
|
|||
|
interface ListProviderConfigResults {
|
|||
|
|
|||
|
/**
|
|||
|
* The list of providers for the specified type in the current page.
|
|||
|
*/
|
|||
|
providerConfigs: admin.auth.AuthProviderConfig[];
|
|||
|
|
|||
|
/**
|
|||
|
* The next page token, if available.
|
|||
|
*/
|
|||
|
pageToken?: string;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
type UpdateAuthProviderRequest =
|
|||
|
admin.auth.SAMLUpdateAuthProviderRequest | admin.auth.OIDCUpdateAuthProviderRequest;
|
|||
|
|
|||
|
interface BaseAuth {
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new Firebase custom token (JWT) that can be sent back to a client
|
|||
|
* device to use to sign in with the client SDKs' `signInWithCustomToken()`
|
|||
|
* methods.
|
|||
|
*
|
|||
|
* See [Create Custom Tokens](/docs/auth/admin/create-custom-tokens) for code
|
|||
|
* samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param uid The `uid` to use as the custom token's subject.
|
|||
|
* @param developerClaims Optional additional claims to include
|
|||
|
* in the custom token's payload.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with a custom token for the
|
|||
|
* provided `uid` and payload.
|
|||
|
*/
|
|||
|
createCustomToken(uid: string, developerClaims?: Object): Promise<string>;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new user.
|
|||
|
*
|
|||
|
* See [Create a user](/docs/auth/admin/manage-users#create_a_user) for code
|
|||
|
* samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param properties The properties to set on the
|
|||
|
* new user record to be created.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the user
|
|||
|
* data corresponding to the newly created user.
|
|||
|
*/
|
|||
|
createUser(properties: admin.auth.CreateRequest): Promise<admin.auth.UserRecord>;
|
|||
|
|
|||
|
/**
|
|||
|
* Deletes an existing user.
|
|||
|
*
|
|||
|
* See [Delete a user](/docs/auth/admin/manage-users#delete_a_user) for code
|
|||
|
* samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param uid The `uid` corresponding to the user to delete.
|
|||
|
*
|
|||
|
* @return An empty promise fulfilled once the user has been
|
|||
|
* deleted.
|
|||
|
*/
|
|||
|
deleteUser(uid: string): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the user data for the user corresponding to a given `uid`.
|
|||
|
*
|
|||
|
* See [Retrieve user data](/docs/auth/admin/manage-users#retrieve_user_data)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param uid The `uid` corresponding to the user whose data to fetch.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the user
|
|||
|
* data corresponding to the provided `uid`.
|
|||
|
*/
|
|||
|
getUser(uid: string): Promise<admin.auth.UserRecord>;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the user data for the user corresponding to a given email.
|
|||
|
*
|
|||
|
* See [Retrieve user data](/docs/auth/admin/manage-users#retrieve_user_data)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param email The email corresponding to the user whose data to
|
|||
|
* fetch.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the user
|
|||
|
* data corresponding to the provided email.
|
|||
|
*/
|
|||
|
getUserByEmail(email: string): Promise<admin.auth.UserRecord>;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the user data for the user corresponding to a given phone number. The
|
|||
|
* phone number has to conform to the E.164 specification.
|
|||
|
*
|
|||
|
* See [Retrieve user data](/docs/auth/admin/manage-users#retrieve_user_data)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param phoneNumber The phone number corresponding to the user whose
|
|||
|
* data to fetch.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the user
|
|||
|
* data corresponding to the provided phone number.
|
|||
|
*/
|
|||
|
getUserByPhoneNumber(phoneNumber: string): Promise<admin.auth.UserRecord>;
|
|||
|
|
|||
|
/**
|
|||
|
* Retrieves a list of users (single batch only) with a size of `maxResults`
|
|||
|
* starting from the offset as specified by `pageToken`. This is used to
|
|||
|
* retrieve all the users of a specified project in batches.
|
|||
|
*
|
|||
|
* See [List all users](/docs/auth/admin/manage-users#list_all_users)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param maxResults The page size, 1000 if undefined. This is also
|
|||
|
* the maximum allowed limit.
|
|||
|
* @param pageToken The next page token. If not specified, returns
|
|||
|
* users starting without any offset.
|
|||
|
* @return A promise that resolves with
|
|||
|
* the current batch of downloaded users and the next page token.
|
|||
|
*/
|
|||
|
listUsers(maxResults?: number, pageToken?: string): Promise<admin.auth.ListUsersResult>;
|
|||
|
|
|||
|
/**
|
|||
|
* Updates an existing user.
|
|||
|
*
|
|||
|
* See [Update a user](/docs/auth/admin/manage-users#update_a_user) for code
|
|||
|
* samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param uid The `uid` corresponding to the user to delete.
|
|||
|
* @param properties The properties to update on
|
|||
|
* the provided user.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the
|
|||
|
* updated user data.
|
|||
|
*/
|
|||
|
updateUser(uid: string, properties: admin.auth.UpdateRequest): Promise<admin.auth.UserRecord>;
|
|||
|
|
|||
|
/**
|
|||
|
* Verifies a Firebase ID token (JWT). If the token is valid, the promise is
|
|||
|
* fulfilled with the token's decoded claims; otherwise, the promise is
|
|||
|
* rejected.
|
|||
|
* An optional flag can be passed to additionally check whether the ID token
|
|||
|
* was revoked.
|
|||
|
*
|
|||
|
* See [Verify ID Tokens](/docs/auth/admin/verify-id-tokens) for code samples
|
|||
|
* and detailed documentation.
|
|||
|
*
|
|||
|
* @param idToken The ID token to verify.
|
|||
|
* @param checkRevoked Whether to check if the ID token was revoked.
|
|||
|
* This requires an extra request to the Firebase Auth backend to check
|
|||
|
* the `tokensValidAfterTime` time for the corresponding user.
|
|||
|
* When not specified, this additional check is not applied.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the
|
|||
|
* token's decoded claims if the ID token is valid; otherwise, a rejected
|
|||
|
* promise.
|
|||
|
*/
|
|||
|
verifyIdToken(idToken: string, checkRevoked?: boolean): Promise<admin.auth.DecodedIdToken>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sets additional developer claims on an existing user identified by the
|
|||
|
* provided `uid`, typically used to define user roles and levels of
|
|||
|
* access. These claims should propagate to all devices where the user is
|
|||
|
* already signed in (after token expiration or when token refresh is forced)
|
|||
|
* and the next time the user signs in. If a reserved OIDC claim name
|
|||
|
* is used (sub, iat, iss, etc), an error is thrown. They are set on the
|
|||
|
* authenticated user's ID token JWT.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Defining user roles and access levels](/docs/auth/admin/custom-claims)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param uid The `uid` of the user to edit.
|
|||
|
* @param customUserClaims The developer claims to set. If null is
|
|||
|
* passed, existing custom claims are deleted. Passing a custom claims payload
|
|||
|
* larger than 1000 bytes will throw an error. Custom claims are added to the
|
|||
|
* user's ID token which is transmitted on every authenticated request.
|
|||
|
* For profile non-access related user attributes, use database or other
|
|||
|
* separate storage systems.
|
|||
|
* @return A promise that resolves when the operation completes
|
|||
|
* successfully.
|
|||
|
*/
|
|||
|
setCustomUserClaims(uid: string, customUserClaims: Object): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Revokes all refresh tokens for an existing user.
|
|||
|
*
|
|||
|
* This API will update the user's
|
|||
|
* {@link admin.auth.UserRecord#tokensValidAfterTime `tokensValidAfterTime`} to
|
|||
|
* the current UTC. It is important that the server on which this is called has
|
|||
|
* its clock set correctly and synchronized.
|
|||
|
*
|
|||
|
* While this will revoke all sessions for a specified user and disable any
|
|||
|
* new ID tokens for existing sessions from getting minted, existing ID tokens
|
|||
|
* may remain active until their natural expiration (one hour). To verify that
|
|||
|
* ID tokens are revoked, use
|
|||
|
* {@link admin.auth.Auth#verifyIdToken `verifyIdToken(idToken, true)`}
|
|||
|
* where `checkRevoked` is set to true.
|
|||
|
*
|
|||
|
* @param uid The `uid` corresponding to the user whose refresh tokens
|
|||
|
* are to be revoked.
|
|||
|
*
|
|||
|
* @return An empty promise fulfilled once the user's refresh
|
|||
|
* tokens have been revoked.
|
|||
|
*/
|
|||
|
revokeRefreshTokens(uid: string): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Imports the provided list of users into Firebase Auth.
|
|||
|
* A maximum of 1000 users are allowed to be imported one at a time.
|
|||
|
* When importing users with passwords,
|
|||
|
* {@link admin.auth.UserImportOptions `UserImportOptions`} are required to be
|
|||
|
* specified.
|
|||
|
* This operation is optimized for bulk imports and will ignore checks on `uid`,
|
|||
|
* `email` and other identifier uniqueness which could result in duplications.
|
|||
|
*
|
|||
|
* @param users The list of user records to import to Firebase Auth.
|
|||
|
* @param options The user import options, required when the users provided include
|
|||
|
* password credentials.
|
|||
|
* @return A promise that resolves when
|
|||
|
* the operation completes with the result of the import. This includes the
|
|||
|
* number of successful imports, the number of failed imports and their
|
|||
|
* corresponding errors.
|
|||
|
*/
|
|||
|
importUsers(
|
|||
|
users: admin.auth.UserImportRecord[],
|
|||
|
options?: admin.auth.UserImportOptions,
|
|||
|
): Promise<admin.auth.UserImportResult>
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new Firebase session cookie with the specified options. The created
|
|||
|
* JWT string can be set as a server-side session cookie with a custom cookie
|
|||
|
* policy, and be used for session management. The session cookie JWT will have
|
|||
|
* the same payload claims as the provided ID token.
|
|||
|
*
|
|||
|
* See [Manage Session Cookies](/docs/auth/admin/manage-cookies) for code
|
|||
|
* samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param idToken The Firebase ID token to exchange for a session
|
|||
|
* cookie.
|
|||
|
* @param sessionCookieOptions The session
|
|||
|
* cookie options which includes custom session duration.
|
|||
|
*
|
|||
|
* @return A promise that resolves on success with the
|
|||
|
* created session cookie.
|
|||
|
*/
|
|||
|
createSessionCookie(
|
|||
|
idToken: string,
|
|||
|
sessionCookieOptions: admin.auth.SessionCookieOptions,
|
|||
|
): Promise<string>;
|
|||
|
|
|||
|
/**
|
|||
|
* Verifies a Firebase session cookie. Returns a Promise with the cookie claims.
|
|||
|
* Rejects the promise if the cookie could not be verified. If `checkRevoked` is
|
|||
|
* set to true, verifies if the session corresponding to the session cookie was
|
|||
|
* revoked. If the corresponding user's session was revoked, an
|
|||
|
* `auth/session-cookie-revoked` error is thrown. If not specified the check is
|
|||
|
* not performed.
|
|||
|
*
|
|||
|
* See [Verify Session Cookies](/docs/auth/admin/manage-cookies#verify_session_cookie_and_check_permissions)
|
|||
|
* for code samples and detailed documentation
|
|||
|
*
|
|||
|
* @param sessionCookie The session cookie to verify.
|
|||
|
* @param checkForRevocation Whether to check if the session cookie was
|
|||
|
* revoked. This requires an extra request to the Firebase Auth backend to
|
|||
|
* check the `tokensValidAfterTime` time for the corresponding user.
|
|||
|
* When not specified, this additional check is not performed.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the
|
|||
|
* session cookie's decoded claims if the session cookie is valid; otherwise,
|
|||
|
* a rejected promise.
|
|||
|
*/
|
|||
|
verifySessionCookie(
|
|||
|
sessionCookie: string,
|
|||
|
checkForRevocation?: boolean,
|
|||
|
): Promise<admin.auth.DecodedIdToken>;
|
|||
|
|
|||
|
/**
|
|||
|
* Generates the out of band email action link to reset a user's password.
|
|||
|
* The link is generated for the user with the specified email address. The
|
|||
|
* optional {@link admin.auth.ActionCodeSettings `ActionCodeSettings`} object
|
|||
|
* defines whether the link is to be handled by a mobile app or browser and the
|
|||
|
* additional state information to be passed in the deep link, etc.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var actionCodeSettings = {
|
|||
|
* url: 'https://www.example.com/?email=user@example.com',
|
|||
|
* iOS: {
|
|||
|
* bundleId: 'com.example.ios'
|
|||
|
* },
|
|||
|
* android: {
|
|||
|
* packageName: 'com.example.android',
|
|||
|
* installApp: true,
|
|||
|
* minimumVersion: '12'
|
|||
|
* },
|
|||
|
* handleCodeInApp: true,
|
|||
|
* dynamicLinkDomain: 'custom.page.link'
|
|||
|
* };
|
|||
|
* admin.auth()
|
|||
|
* .generatePasswordResetLink('user@example.com', actionCodeSettings)
|
|||
|
* .then(function(link) {
|
|||
|
* // The link was successfully generated.
|
|||
|
* })
|
|||
|
* .catch(function(error) {
|
|||
|
* // Some error occurred, you can inspect the code: error.code
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param email The email address of the user whose password is to be
|
|||
|
* reset.
|
|||
|
* @param actionCodeSettings The action
|
|||
|
* code settings. If specified, the state/continue URL is set as the
|
|||
|
* "continueUrl" parameter in the password reset link. The default password
|
|||
|
* reset landing page will use this to display a link to go back to the app
|
|||
|
* if it is installed.
|
|||
|
* If the actionCodeSettings is not specified, no URL is appended to the
|
|||
|
* action URL.
|
|||
|
* The state URL provided must belong to a domain that is whitelisted by the
|
|||
|
* developer in the console. Otherwise an error is thrown.
|
|||
|
* Mobile app redirects are only applicable if the developer configures
|
|||
|
* and accepts the Firebase Dynamic Links terms of service.
|
|||
|
* The Android package name and iOS bundle ID are respected only if they
|
|||
|
* are configured in the same Firebase Auth project.
|
|||
|
* @return A promise that resolves with the generated link.
|
|||
|
*/
|
|||
|
generatePasswordResetLink(
|
|||
|
email: string,
|
|||
|
actionCodeSettings?: admin.auth.ActionCodeSettings,
|
|||
|
): Promise<string>;
|
|||
|
|
|||
|
/**
|
|||
|
* Generates the out of band email action link to verify the user's ownership
|
|||
|
* of the specified email. The
|
|||
|
* {@link admin.auth.ActionCodeSettings `ActionCodeSettings`} object provided
|
|||
|
* as an argument to this method defines whether the link is to be handled by a
|
|||
|
* mobile app or browser along with additional state information to be passed in
|
|||
|
* the deep link, etc.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var actionCodeSettings = {
|
|||
|
* url: 'https://www.example.com/cart?email=user@example.com&cartId=123',
|
|||
|
* iOS: {
|
|||
|
* bundleId: 'com.example.ios'
|
|||
|
* },
|
|||
|
* android: {
|
|||
|
* packageName: 'com.example.android',
|
|||
|
* installApp: true,
|
|||
|
* minimumVersion: '12'
|
|||
|
* },
|
|||
|
* handleCodeInApp: true,
|
|||
|
* dynamicLinkDomain: 'custom.page.link'
|
|||
|
* };
|
|||
|
* admin.auth()
|
|||
|
* .generateEmailVerificationLink('user@example.com', actionCodeSettings)
|
|||
|
* .then(function(link) {
|
|||
|
* // The link was successfully generated.
|
|||
|
* })
|
|||
|
* .catch(function(error) {
|
|||
|
* // Some error occurred, you can inspect the code: error.code
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param email The email account to verify.
|
|||
|
* @param actionCodeSettings The action
|
|||
|
* code settings. If specified, the state/continue URL is set as the
|
|||
|
* "continueUrl" parameter in the email verification link. The default email
|
|||
|
* verification landing page will use this to display a link to go back to
|
|||
|
* the app if it is installed.
|
|||
|
* If the actionCodeSettings is not specified, no URL is appended to the
|
|||
|
* action URL.
|
|||
|
* The state URL provided must belong to a domain that is whitelisted by the
|
|||
|
* developer in the console. Otherwise an error is thrown.
|
|||
|
* Mobile app redirects are only applicable if the developer configures
|
|||
|
* and accepts the Firebase Dynamic Links terms of service.
|
|||
|
* The Android package name and iOS bundle ID are respected only if they
|
|||
|
* are configured in the same Firebase Auth project.
|
|||
|
* @return A promise that resolves with the generated link.
|
|||
|
*/
|
|||
|
generateEmailVerificationLink(
|
|||
|
email: string,
|
|||
|
actionCodeSettings?: admin.auth.ActionCodeSettings,
|
|||
|
): Promise<string>;
|
|||
|
|
|||
|
/**
|
|||
|
* Generates the out of band email action link to sign in or sign up the owner
|
|||
|
* of the specified email. The
|
|||
|
* {@link admin.auth.ActionCodeSettings `ActionCodeSettings`} object provided
|
|||
|
* as an argument to this method defines whether the link is to be handled by a
|
|||
|
* mobile app or browser along with additional state information to be passed in
|
|||
|
* the deep link, etc.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var actionCodeSettings = {
|
|||
|
* // The URL to redirect to for sign-in completion. This is also the deep
|
|||
|
* // link for mobile redirects. The domain (www.example.com) for this URL
|
|||
|
* // must be whitelisted in the Firebase Console.
|
|||
|
* url: 'https://www.example.com/finishSignUp?cartId=1234',
|
|||
|
* iOS: {
|
|||
|
* bundleId: 'com.example.ios'
|
|||
|
* },
|
|||
|
* android: {
|
|||
|
* packageName: 'com.example.android',
|
|||
|
* installApp: true,
|
|||
|
* minimumVersion: '12'
|
|||
|
* },
|
|||
|
* // This must be true.
|
|||
|
* handleCodeInApp: true,
|
|||
|
* dynamicLinkDomain: 'custom.page.link'
|
|||
|
* };
|
|||
|
* admin.auth()
|
|||
|
* .generateSignInWithEmailLink('user@example.com', actionCodeSettings)
|
|||
|
* .then(function(link) {
|
|||
|
* // The link was successfully generated.
|
|||
|
* })
|
|||
|
* .catch(function(error) {
|
|||
|
* // Some error occurred, you can inspect the code: error.code
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param email The email account to sign in with.
|
|||
|
* @param actionCodeSettings The action
|
|||
|
* code settings. These settings provide Firebase with instructions on how
|
|||
|
* to construct the email link. This includes the sign in completion URL or
|
|||
|
* the deep link for redirects and the mobile apps to use when the
|
|||
|
* sign-in link is opened on an Android or iOS device.
|
|||
|
* Mobile app redirects are only applicable if the developer configures
|
|||
|
* and accepts the Firebase Dynamic Links terms of service.
|
|||
|
* The Android package name and iOS bundle ID are respected only if they
|
|||
|
* are configured in the same Firebase Auth project.
|
|||
|
* @return A promise that resolves with the generated link.
|
|||
|
*/
|
|||
|
generateSignInWithEmailLink(
|
|||
|
email: string,
|
|||
|
actionCodeSettings: admin.auth.ActionCodeSettings,
|
|||
|
): Promise<string>;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns the list of existing provider configurations matching the filter
|
|||
|
* provided. At most, 100 provider configs can be listed at a time.
|
|||
|
*
|
|||
|
* SAML and OIDC provider support requires Google Cloud's Identity Platform
|
|||
|
* (GCIP). To learn more about GCIP, including pricing and features,
|
|||
|
* see the [GCIP documentation](https://cloud.google.com/identity-platform).
|
|||
|
*
|
|||
|
* @param options The provider config filter to apply.
|
|||
|
* @return A promise that resolves with the list of provider configs meeting the
|
|||
|
* filter requirements.
|
|||
|
*/
|
|||
|
listProviderConfigs(
|
|||
|
options: admin.auth.AuthProviderConfigFilter
|
|||
|
): Promise<admin.auth.ListProviderConfigResults>;
|
|||
|
|
|||
|
/**
|
|||
|
* Looks up an Auth provider configuration by the provided ID.
|
|||
|
* Returns a promise that resolves with the provider configuration
|
|||
|
* corresponding to the provider ID specified. If the specified ID does not
|
|||
|
* exist, an `auth/configuration-not-found` error is thrown.
|
|||
|
*
|
|||
|
* SAML and OIDC provider support requires Google Cloud's Identity Platform
|
|||
|
* (GCIP). To learn more about GCIP, including pricing and features,
|
|||
|
* see the [GCIP documentation](https://cloud.google.com/identity-platform).
|
|||
|
*
|
|||
|
* @param providerId The provider ID corresponding to the provider
|
|||
|
* config to return.
|
|||
|
* @return A promise that resolves
|
|||
|
* with the configuration corresponding to the provided ID.
|
|||
|
*/
|
|||
|
getProviderConfig(providerId: string): Promise<admin.auth.AuthProviderConfig>;
|
|||
|
|
|||
|
/**
|
|||
|
* Deletes the provider configuration corresponding to the provider ID passed.
|
|||
|
* If the specified ID does not exist, an `auth/configuration-not-found` error
|
|||
|
* is thrown.
|
|||
|
*
|
|||
|
* SAML and OIDC provider support requires Google Cloud's Identity Platform
|
|||
|
* (GCIP). To learn more about GCIP, including pricing and features,
|
|||
|
* see the [GCIP documentation](https://cloud.google.com/identity-platform).
|
|||
|
*
|
|||
|
* @param providerId The provider ID corresponding to the provider
|
|||
|
* config to delete.
|
|||
|
* @return A promise that resolves on completion.
|
|||
|
*/
|
|||
|
deleteProviderConfig(providerId: string): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns a promise that resolves with the updated `AuthProviderConfig`
|
|||
|
* corresponding to the provider ID specified.
|
|||
|
* If the specified ID does not exist, an `auth/configuration-not-found` error
|
|||
|
* is thrown.
|
|||
|
*
|
|||
|
* SAML and OIDC provider support requires Google Cloud's Identity Platform
|
|||
|
* (GCIP). To learn more about GCIP, including pricing and features,
|
|||
|
* see the [GCIP documentation](https://cloud.google.com/identity-platform).
|
|||
|
*
|
|||
|
* @param providerId The provider ID corresponding to the provider
|
|||
|
* config to update.
|
|||
|
* @param updatedConfig The updated configuration.
|
|||
|
* @return A promise that resolves with the updated provider configuration.
|
|||
|
*/
|
|||
|
updateProviderConfig(
|
|||
|
providerId: string, updatedConfig: admin.auth.UpdateAuthProviderRequest
|
|||
|
): Promise<admin.auth.AuthProviderConfig>;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns a promise that resolves with the newly created `AuthProviderConfig`
|
|||
|
* when the new provider configuration is created.
|
|||
|
*
|
|||
|
* SAML and OIDC provider support requires Google Cloud's Identity Platform
|
|||
|
* (GCIP). To learn more about GCIP, including pricing and features,
|
|||
|
* see the [GCIP documentation](https://cloud.google.com/identity-platform).
|
|||
|
*
|
|||
|
* @param config The provider configuration to create.
|
|||
|
* @return A promise that resolves with the created provider configuration.
|
|||
|
*/
|
|||
|
createProviderConfig(
|
|||
|
config: admin.auth.AuthProviderConfig
|
|||
|
): Promise<admin.auth.AuthProviderConfig>;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Tenant-aware `Auth` interface used for managing users, configuring SAML/OIDC providers,
|
|||
|
* generating email links for password reset, email verification, etc for specific tenants.
|
|||
|
*
|
|||
|
* Multi-tenancy support requires Google Cloud's Identity Platform
|
|||
|
* (GCIP). To learn more about GCIP, including pricing and features,
|
|||
|
* see the [GCIP documentation](https://cloud.google.com/identity-platform)
|
|||
|
*
|
|||
|
* Each tenant contains its own identity providers, settings and sets of users.
|
|||
|
* Using `TenantAwareAuth`, users for a specific tenant and corresponding OIDC/SAML
|
|||
|
* configurations can also be managed, ID tokens for users signed in to a specific tenant
|
|||
|
* can be verified, and email action links can also be generated for users belonging to the
|
|||
|
* tenant.
|
|||
|
*
|
|||
|
* `TenantAwareAuth` instances for a specific `tenantId` can be instantiated by calling
|
|||
|
* `auth.tenantManager().authForTenant(tenantId)`.
|
|||
|
*/
|
|||
|
interface TenantAwareAuth extends BaseAuth {
|
|||
|
|
|||
|
/**
|
|||
|
* The tenant identifier corresponding to this `TenantAwareAuth` instance.
|
|||
|
* All calls to the user management APIs, OIDC/SAML provider management APIs, email link
|
|||
|
* generation APIs, etc will only be applied within the scope of this tenant.
|
|||
|
*/
|
|||
|
tenantId: string;
|
|||
|
}
|
|||
|
|
|||
|
interface Auth extends admin.auth.BaseAuth {
|
|||
|
app: admin.app.App;
|
|||
|
|
|||
|
/**
|
|||
|
* @return The tenant manager instance associated with the current project.
|
|||
|
*/
|
|||
|
tenantManager(): admin.auth.TenantManager;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Defines the tenant manager used to help manage tenant related operations.
|
|||
|
* This includes:
|
|||
|
* <ul>
|
|||
|
* <li>The ability to create, update, list, get and delete tenants for the underlying
|
|||
|
* project.</li>
|
|||
|
* <li>Getting a `TenantAwareAuth` instance for running Auth related operations
|
|||
|
* (user management, provider configuration management, token verification,
|
|||
|
* email link generation, etc) in the context of a specified tenant.</li>
|
|||
|
* </ul>
|
|||
|
*/
|
|||
|
interface TenantManager {
|
|||
|
/**
|
|||
|
* @param tenantId The tenant ID whose `TenantAwareAuth` instance is to be returned.
|
|||
|
*
|
|||
|
* @return The `TenantAwareAuth` instance corresponding to this tenant identifier.
|
|||
|
*/
|
|||
|
authForTenant(tenantId: string): admin.auth.TenantAwareAuth;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the tenant configuration for the tenant corresponding to a given `tenantId`.
|
|||
|
*
|
|||
|
* @param tenantId The tenant identifier corresponding to the tenant whose data to fetch.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the tenant configuration to the provided `tenantId`.
|
|||
|
*/
|
|||
|
getTenant(tenantId: string): Promise<admin.auth.Tenant>;
|
|||
|
|
|||
|
/**
|
|||
|
* Retrieves a list of tenants (single batch only) with a size of `maxResults`
|
|||
|
* starting from the offset as specified by `pageToken`. This is used to
|
|||
|
* retrieve all the tenants of a specified project in batches.
|
|||
|
*
|
|||
|
* @param maxResults The page size, 1000 if undefined. This is also
|
|||
|
* the maximum allowed limit.
|
|||
|
* @param pageToken The next page token. If not specified, returns
|
|||
|
* tenants starting without any offset.
|
|||
|
*
|
|||
|
* @return A promise that resolves with
|
|||
|
* a batch of downloaded tenants and the next page token.
|
|||
|
*/
|
|||
|
listTenants(maxResults?: number, pageToken?: string): Promise<admin.auth.ListTenantsResult>;
|
|||
|
|
|||
|
/**
|
|||
|
* Deletes an existing tenant.
|
|||
|
*
|
|||
|
* @param tenantId The `tenantId` corresponding to the tenant to delete.
|
|||
|
*
|
|||
|
* @return An empty promise fulfilled once the tenant has been deleted.
|
|||
|
*/
|
|||
|
deleteTenant(tenantId: string): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new tenant.
|
|||
|
* When creating new tenants, tenants that use separate billing and quota will require their
|
|||
|
* own project and must be defined as `full_service`.
|
|||
|
*
|
|||
|
* @param tenantOptions The properties to set on the new tenant configuration to be created.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the tenant configuration corresponding to the newly
|
|||
|
* created tenant.
|
|||
|
*/
|
|||
|
createTenant(tenantOptions: admin.auth.CreateTenantRequest): Promise<admin.auth.Tenant>;
|
|||
|
|
|||
|
/**
|
|||
|
* Updates an existing tenant configuration.
|
|||
|
*
|
|||
|
* @param tenantId The `tenantId` corresponding to the tenant to delete.
|
|||
|
* @param tenantOptions The properties to update on the provided tenant.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the update tenant data.
|
|||
|
*/
|
|||
|
updateTenant(tenantId: string, tenantOptions: admin.auth.UpdateTenantRequest): Promise<admin.auth.Tenant>;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
declare namespace admin.credential {
|
|||
|
|
|||
|
/**
|
|||
|
* Interface that provides Google OAuth2 access tokens used to authenticate
|
|||
|
* with Firebase services.
|
|||
|
*
|
|||
|
* In most cases, you will not need to implement this yourself and can instead
|
|||
|
* use the default implementations provided by
|
|||
|
* {@link admin.credential `admin.credential`}.
|
|||
|
*/
|
|||
|
interface Credential {
|
|||
|
|
|||
|
/**
|
|||
|
* Returns a Google OAuth2 access token object used to authenticate with
|
|||
|
* Firebase services.
|
|||
|
*
|
|||
|
* This object contains the following properties:
|
|||
|
* * `access_token` (`string`): The actual Google OAuth2 access token.
|
|||
|
* * `expires_in` (`number`): The number of seconds from when the token was
|
|||
|
* issued that it expires.
|
|||
|
*
|
|||
|
* @return A Google OAuth2 access token object.
|
|||
|
*/
|
|||
|
getAccessToken(): Promise<admin.GoogleOAuthAccessToken>;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Returns a credential created from the
|
|||
|
* {@link
|
|||
|
* https://developers.google.com/identity/protocols/application-default-credentials
|
|||
|
* Google Application Default Credentials}
|
|||
|
* that grants admin access to Firebase services. This credential can be used
|
|||
|
* in the call to
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/reference/admin/node/admin#.initializeApp
|
|||
|
* `admin.initializeApp()`}.
|
|||
|
*
|
|||
|
* Google Application Default Credentials are available on any Google
|
|||
|
* infrastructure, such as Google App Engine and Google Compute Engine.
|
|||
|
*
|
|||
|
* See
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/admin/setup#initialize_the_sdk
|
|||
|
* Initialize the SDK}
|
|||
|
* for more details.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* admin.initializeApp({
|
|||
|
* credential: admin.credential.applicationDefault(),
|
|||
|
* databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param {!Object=} httpAgent Optional [HTTP Agent](https://nodejs.org/api/http.html#http_class_http_agent)
|
|||
|
* to be used when retrieving access tokens from Google token servers.
|
|||
|
*
|
|||
|
* @return {!admin.credential.Credential} A credential authenticated via Google
|
|||
|
* Application Default Credentials that can be used to initialize an app.
|
|||
|
*/
|
|||
|
function applicationDefault(httpAgent?: Agent): admin.credential.Credential;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns a credential created from the provided service account that grants
|
|||
|
* admin access to Firebase services. This credential can be used in the call
|
|||
|
* to
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/reference/admin/node/admin#.initializeApp
|
|||
|
* `admin.initializeApp()`}.
|
|||
|
*
|
|||
|
* See
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/admin/setup#initialize_the_sdk
|
|||
|
* Initialize the SDK}
|
|||
|
* for more details.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Providing a path to a service account key JSON file
|
|||
|
* var serviceAccount = require("path/to/serviceAccountKey.json");
|
|||
|
* admin.initializeApp({
|
|||
|
* credential: admin.credential.cert(serviceAccount),
|
|||
|
* databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Providing a service account object inline
|
|||
|
* admin.initializeApp({
|
|||
|
* credential: admin.credential.cert({
|
|||
|
* projectId: "<PROJECT_ID>",
|
|||
|
* clientEmail: "foo@<PROJECT_ID>.iam.gserviceaccount.com",
|
|||
|
* privateKey: "-----BEGIN PRIVATE KEY-----<KEY>-----END PRIVATE KEY-----\n"
|
|||
|
* }),
|
|||
|
* databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param serviceAccountPathOrObject The path to a service
|
|||
|
* account key JSON file or an object representing a service account key.
|
|||
|
* @param httpAgent Optional [HTTP Agent](https://nodejs.org/api/http.html#http_class_http_agent)
|
|||
|
* to be used when retrieving access tokens from Google token servers.
|
|||
|
*
|
|||
|
* @return A credential authenticated via the
|
|||
|
* provided service account that can be used to initialize an app.
|
|||
|
*/
|
|||
|
function cert(serviceAccountPathOrObject: string|admin.ServiceAccount, httpAgent?: Agent): admin.credential.Credential;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns a credential created from the provided refresh token that grants
|
|||
|
* admin access to Firebase services. This credential can be used in the call
|
|||
|
* to
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/reference/admin/node/admin#.initializeApp
|
|||
|
* `admin.initializeApp()`}.
|
|||
|
*
|
|||
|
* See
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/admin/setup#initialize_the_sdk
|
|||
|
* Initialize the SDK}
|
|||
|
* for more details.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Providing a path to a refresh token JSON file
|
|||
|
* var refreshToken = require("path/to/refreshToken.json");
|
|||
|
* admin.initializeApp({
|
|||
|
* credential: admin.credential.refreshToken(refreshToken),
|
|||
|
* databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param refreshTokenPathOrObject The path to a Google
|
|||
|
* OAuth2 refresh token JSON file or an object representing a Google OAuth2
|
|||
|
* refresh token.
|
|||
|
* @param httpAgent Optional [HTTP Agent](https://nodejs.org/api/http.html#http_class_http_agent)
|
|||
|
* to be used when retrieving access tokens from Google token servers.
|
|||
|
*
|
|||
|
* @return A credential authenticated via the
|
|||
|
* provided service account that can be used to initialize an app.
|
|||
|
*/
|
|||
|
function refreshToken(refreshTokenPathOrObject: string|Object, httpAgent?: Agent): admin.credential.Credential;
|
|||
|
}
|
|||
|
|
|||
|
declare namespace admin.database {
|
|||
|
|
|||
|
/**
|
|||
|
* The Firebase Realtime Database service interface.
|
|||
|
*
|
|||
|
* Do not call this constructor directly. Instead, use
|
|||
|
* [`admin.database()`](admin.database#database).
|
|||
|
*
|
|||
|
* See
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/admin/start/
|
|||
|
* Introduction to the Admin Database API}
|
|||
|
* for a full guide on how to use the Firebase Realtime Database service.
|
|||
|
*/
|
|||
|
interface Database {
|
|||
|
app: admin.app.App;
|
|||
|
|
|||
|
/**
|
|||
|
* Disconnects from the server (all Database operations will be completed
|
|||
|
* offline).
|
|||
|
*
|
|||
|
* The client automatically maintains a persistent connection to the Database
|
|||
|
* server, which will remain active indefinitely and reconnect when
|
|||
|
* disconnected. However, the `goOffline()` and `goOnline()` methods may be used
|
|||
|
* to control the client connection in cases where a persistent connection is
|
|||
|
* undesirable.
|
|||
|
*
|
|||
|
* While offline, the client will no longer receive data updates from the
|
|||
|
* Database. However, all Database operations performed locally will continue to
|
|||
|
* immediately fire events, allowing your application to continue behaving
|
|||
|
* normally. Additionally, each operation performed locally will automatically
|
|||
|
* be queued and retried upon reconnection to the Database server.
|
|||
|
*
|
|||
|
* To reconnect to the Database and begin receiving remote events, see
|
|||
|
* `goOnline()`.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* admin.database().goOffline();
|
|||
|
* ```
|
|||
|
*/
|
|||
|
goOffline(): void;
|
|||
|
|
|||
|
/**
|
|||
|
* Reconnects to the server and synchronizes the offline Database state
|
|||
|
* with the server state.
|
|||
|
*
|
|||
|
* This method should be used after disabling the active connection with
|
|||
|
* `goOffline()`. Once reconnected, the client will transmit the proper data
|
|||
|
* and fire the appropriate events so that your client "catches up"
|
|||
|
* automatically.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* admin.database().goOnline();
|
|||
|
* ```
|
|||
|
*/
|
|||
|
goOnline(): void;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns a `Reference` representing the location in the Database
|
|||
|
* corresponding to the provided path. Also can be invoked with an existing
|
|||
|
* `Reference` as the argument. In that case returns a new `Reference`
|
|||
|
* pointing to the same location. If no path argument is
|
|||
|
* provided, returns a `Reference` that represents the root of the Database.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get a reference to the root of the Database
|
|||
|
* var rootRef = admin.database.ref();
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get a reference to the /users/ada node
|
|||
|
* var adaRef = admin.database().ref("users/ada");
|
|||
|
* // The above is shorthand for the following operations:
|
|||
|
* //var rootRef = admin.database().ref();
|
|||
|
* //var adaRef = rootRef.child("users/ada");
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var adaRef = admin.database().ref("users/ada");
|
|||
|
* // Get a new reference pointing to the same location.
|
|||
|
* var anotherAdaRef = admin.database().ref(adaRef);
|
|||
|
* ```
|
|||
|
*
|
|||
|
*
|
|||
|
* @param path Optional path representing
|
|||
|
* the location the returned `Reference` will point. Alternatively, a
|
|||
|
* `Reference` object to copy. If not provided, the returned `Reference` will
|
|||
|
* point to the root of the Database.
|
|||
|
* @return If a path is provided, a `Reference`
|
|||
|
* pointing to the provided path. Otherwise, a `Reference` pointing to the
|
|||
|
* root of the Database.
|
|||
|
*/
|
|||
|
ref(path?: string | admin.database.Reference): admin.database.Reference;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns a `Reference` representing the location in the Database
|
|||
|
* corresponding to the provided Firebase URL.
|
|||
|
*
|
|||
|
* An exception is thrown if the URL is not a valid Firebase Database URL or it
|
|||
|
* has a different domain than the current `Database` instance.
|
|||
|
*
|
|||
|
* Note that all query parameters (`orderBy`, `limitToLast`, etc.) are ignored
|
|||
|
* and are not applied to the returned `Reference`.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get a reference to the root of the Database
|
|||
|
* var rootRef = admin.database().ref("https://<DATABASE_NAME>.firebaseio.com");
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Get a reference to the /users/ada node
|
|||
|
* var adaRef = admin.database().ref("https://<DATABASE_NAME>.firebaseio.com/users/ada");
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param url The Firebase URL at which the returned `Reference` will
|
|||
|
* point.
|
|||
|
* @return A `Reference` pointing to the provided Firebase URL.
|
|||
|
*/
|
|||
|
refFromURL(url: string): admin.database.Reference;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the currently applied security rules as a string. The return value consists of
|
|||
|
* the rules source including comments.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the rules as a raw string.
|
|||
|
*/
|
|||
|
getRules(): Promise<string>;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the currently applied security rules as a parsed JSON object. Any comments in
|
|||
|
* the original source are stripped away.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the parsed rules object.
|
|||
|
*/
|
|||
|
getRulesJSON(): Promise<object>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sets the specified rules on the Firebase Realtime Database instance. If the rules source is
|
|||
|
* specified as a string or a Buffer, it may include comments.
|
|||
|
*
|
|||
|
* @param source Source of the rules to apply. Must not be `null` or empty.
|
|||
|
* @return Resolves when the rules are set on the Realtime Database.
|
|||
|
*/
|
|||
|
setRules(source: string | Buffer | object): Promise<void>;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* A `DataSnapshot` contains data from a Database location.
|
|||
|
*
|
|||
|
* Any time you read data from the Database, you receive the data as a
|
|||
|
* `DataSnapshot`. A `DataSnapshot` is passed to the event callbacks you attach
|
|||
|
* with `on()` or `once()`. You can extract the contents of the snapshot as a
|
|||
|
* JavaScript object by calling the `val()` method. Alternatively, you can
|
|||
|
* traverse into the snapshot by calling `child()` to return child snapshots
|
|||
|
* (which you could then call `val()` on).
|
|||
|
*
|
|||
|
* A `DataSnapshot` is an efficiently generated, immutable copy of the data at
|
|||
|
* a Database location. It cannot be modified and will never change (to modify
|
|||
|
* data, you always call the `set()` method on a `Reference` directly).
|
|||
|
*/
|
|||
|
interface DataSnapshot {
|
|||
|
key: string|null;
|
|||
|
ref: admin.database.Reference;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets another `DataSnapshot` for the location at the specified relative path.
|
|||
|
*
|
|||
|
* Passing a relative path to the `child()` method of a DataSnapshot returns
|
|||
|
* another `DataSnapshot` for the location at the specified relative path. The
|
|||
|
* relative path can either be a simple child name (for example, "ada") or a
|
|||
|
* deeper, slash-separated path (for example, "ada/name/first"). If the child
|
|||
|
* location has no data, an empty `DataSnapshot` (that is, a `DataSnapshot`
|
|||
|
* whose value is `null`) is returned.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Assume we have the following data in the Database:
|
|||
|
* {
|
|||
|
* "name": {
|
|||
|
* "first": "Ada",
|
|||
|
* "last": "Lovelace"
|
|||
|
* }
|
|||
|
* }
|
|||
|
*
|
|||
|
* // Test for the existence of certain keys within a DataSnapshot
|
|||
|
* var ref = admin.database().ref("users/ada");
|
|||
|
* ref.once("value")
|
|||
|
* .then(function(snapshot) {
|
|||
|
* var name = snapshot.child("name").val(); // {first:"Ada",last:"Lovelace"}
|
|||
|
* var firstName = snapshot.child("name/first").val(); // "Ada"
|
|||
|
* var lastName = snapshot.child("name").child("last").val(); // "Lovelace"
|
|||
|
* var age = snapshot.child("age").val(); // null
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param path A relative path to the location of child data.
|
|||
|
* @return `DataSnapshot` for the location at the specified relative path.
|
|||
|
*/
|
|||
|
child(path: string): admin.database.DataSnapshot;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns true if this `DataSnapshot` contains any data. It is slightly more
|
|||
|
* efficient than using `snapshot.val() !== null`.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Assume we have the following data in the Database:
|
|||
|
* {
|
|||
|
* "name": {
|
|||
|
* "first": "Ada",
|
|||
|
* "last": "Lovelace"
|
|||
|
* }
|
|||
|
* }
|
|||
|
*
|
|||
|
* // Test for the existence of certain keys within a DataSnapshot
|
|||
|
* var ref = admin.database().ref("users/ada");
|
|||
|
* ref.once("value")
|
|||
|
* .then(function(snapshot) {
|
|||
|
* var a = snapshot.exists(); // true
|
|||
|
* var b = snapshot.child("name").exists(); // true
|
|||
|
* var c = snapshot.child("name/first").exists(); // true
|
|||
|
* var d = snapshot.child("name/middle").exists(); // false
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return Whether this `DataSnapshot` contains any data.
|
|||
|
*/
|
|||
|
exists(): boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Exports the entire contents of the DataSnapshot as a JavaScript object.
|
|||
|
*
|
|||
|
* The `exportVal()` method is similar to `val()`, except priority information
|
|||
|
* is included (if available), making it suitable for backing up your data.
|
|||
|
*
|
|||
|
* @return The DataSnapshot's contents as a JavaScript value (Object,
|
|||
|
* Array, string, number, boolean, or `null`).
|
|||
|
*/
|
|||
|
exportVal(): any;
|
|||
|
|
|||
|
/**
|
|||
|
* Enumerates the top-level children in the `DataSnapshot`.
|
|||
|
*
|
|||
|
* Because of the way JavaScript objects work, the ordering of data in the
|
|||
|
* JavaScript object returned by `val()` is not guaranteed to match the ordering
|
|||
|
* on the server nor the ordering of `child_added` events. That is where
|
|||
|
* `forEach()` comes in handy. It guarantees the children of a `DataSnapshot`
|
|||
|
* will be iterated in their query order.
|
|||
|
*
|
|||
|
* If no explicit `orderBy*()` method is used, results are returned
|
|||
|
* ordered by key (unless priorities are used, in which case, results are
|
|||
|
* returned by priority).
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
*
|
|||
|
* // Assume we have the following data in the Database:
|
|||
|
* {
|
|||
|
* "users": {
|
|||
|
* "ada": {
|
|||
|
* "first": "Ada",
|
|||
|
* "last": "Lovelace"
|
|||
|
* },
|
|||
|
* "alan": {
|
|||
|
* "first": "Alan",
|
|||
|
* "last": "Turing"
|
|||
|
* }
|
|||
|
* }
|
|||
|
* }
|
|||
|
*
|
|||
|
* // Loop through users in order with the forEach() method. The callback
|
|||
|
* // provided to forEach() will be called synchronously with a DataSnapshot
|
|||
|
* // for each child:
|
|||
|
* var query = admin.database().ref("users").orderByKey();
|
|||
|
* query.once("value")
|
|||
|
* .then(function(snapshot) {
|
|||
|
* snapshot.forEach(function(childSnapshot) {
|
|||
|
* // key will be "ada" the first time and "alan" the second time
|
|||
|
* var key = childSnapshot.key;
|
|||
|
* // childData will be the actual contents of the child
|
|||
|
* var childData = childSnapshot.val();
|
|||
|
* });
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // You can cancel the enumeration at any point by having your callback
|
|||
|
* // function return true. For example, the following code sample will only
|
|||
|
* // fire the callback function one time:
|
|||
|
* var query = admin.database().ref("users").orderByKey();
|
|||
|
* query.once("value")
|
|||
|
* .then(function(snapshot) {
|
|||
|
* snapshot.forEach(function(childSnapshot) {
|
|||
|
* var key = childSnapshot.key; // "ada"
|
|||
|
*
|
|||
|
* // Cancel enumeration
|
|||
|
* return true;
|
|||
|
* });
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param action A function
|
|||
|
* that will be called for each child `DataSnapshot`. The callback can return
|
|||
|
* true to cancel further enumeration.
|
|||
|
* @return True if enumeration was canceled due to your callback
|
|||
|
* returning true.
|
|||
|
*/
|
|||
|
forEach(action: (a: admin.database.DataSnapshot) => boolean | void): boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the priority value of the data in this `DataSnapshot`.
|
|||
|
*
|
|||
|
* Applications need not use priority but can order collections by
|
|||
|
* ordinary properties (see
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data
|
|||
|
* Sorting and filtering data}).
|
|||
|
*
|
|||
|
* @return The the priority value of the data in this `DataSnapshot`.
|
|||
|
*/
|
|||
|
getPriority(): string|number|null;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns true if the specified child path has (non-null) data.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Assume we have the following data in the Database:
|
|||
|
* {
|
|||
|
* "name": {
|
|||
|
* "first": "Ada",
|
|||
|
* "last": "Lovelace"
|
|||
|
* }
|
|||
|
* }
|
|||
|
*
|
|||
|
* // Determine which child keys in DataSnapshot have data.
|
|||
|
* var ref = admin.database().ref("users/ada");
|
|||
|
* ref.once("value")
|
|||
|
* .then(function(snapshot) {
|
|||
|
* var hasName = snapshot.hasChild("name"); // true
|
|||
|
* var hasAge = snapshot.hasChild("age"); // false
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param path A relative path to the location of a potential child.
|
|||
|
* @return `true` if data exists at the specified child path; else
|
|||
|
* `false`.
|
|||
|
*/
|
|||
|
hasChild(path: string): boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns whether or not the `DataSnapshot` has any non-`null` child
|
|||
|
* properties.
|
|||
|
*
|
|||
|
* You can use `hasChildren()` to determine if a `DataSnapshot` has any
|
|||
|
* children. If it does, you can enumerate them using `forEach()`. If it
|
|||
|
* doesn't, then either this snapshot contains a primitive value (which can be
|
|||
|
* retrieved with `val()`) or it is empty (in which case, `val()` will return
|
|||
|
* `null`).
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Assume we have the following data in the Database:
|
|||
|
* {
|
|||
|
* "name": {
|
|||
|
* "first": "Ada",
|
|||
|
* "last": "Lovelace"
|
|||
|
* }
|
|||
|
* }
|
|||
|
*
|
|||
|
* var ref = admin.database().ref("users/ada");
|
|||
|
* ref.once("value")
|
|||
|
* .then(function(snapshot) {
|
|||
|
* var a = snapshot.hasChildren(); // true
|
|||
|
* var b = snapshot.child("name").hasChildren(); // true
|
|||
|
* var c = snapshot.child("name/first").hasChildren(); // false
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return True if this snapshot has any children; else false.
|
|||
|
*/
|
|||
|
hasChildren(): boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns the number of child properties of this `DataSnapshot`.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Assume we have the following data in the Database:
|
|||
|
* {
|
|||
|
* "name": {
|
|||
|
* "first": "Ada",
|
|||
|
* "last": "Lovelace"
|
|||
|
* }
|
|||
|
* }
|
|||
|
*
|
|||
|
* var ref = admin.database().ref("users/ada");
|
|||
|
* ref.once("value")
|
|||
|
* .then(function(snapshot) {
|
|||
|
* var a = snapshot.numChildren(); // 1 ("name")
|
|||
|
* var b = snapshot.child("name").numChildren(); // 2 ("first", "last")
|
|||
|
* var c = snapshot.child("name/first").numChildren(); // 0
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return The number of child properties of this `DataSnapshot`.
|
|||
|
*/
|
|||
|
numChildren(): number;
|
|||
|
|
|||
|
/**
|
|||
|
* @return A JSON-serializable representation of this object.
|
|||
|
*/
|
|||
|
toJSON(): Object | null;
|
|||
|
|
|||
|
/**
|
|||
|
* Extracts a JavaScript value from a `DataSnapshot`.
|
|||
|
*
|
|||
|
* Depending on the data in a `DataSnapshot`, the `val()` method may return a
|
|||
|
* scalar type (string, number, or boolean), an array, or an object. It may also
|
|||
|
* return null, indicating that the `DataSnapshot` is empty (contains no data).
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Write and then read back a string from the Database.
|
|||
|
* ref.set("hello")
|
|||
|
* .then(function() {
|
|||
|
* return ref.once("value");
|
|||
|
* })
|
|||
|
* .then(function(snapshot) {
|
|||
|
* var data = snapshot.val(); // data === "hello"
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Write and then read back a JavaScript object from the Database.
|
|||
|
* ref.set({ name: "Ada", age: 36 })
|
|||
|
* .then(function() {
|
|||
|
* return ref.once("value");
|
|||
|
* })
|
|||
|
* .then(function(snapshot) {
|
|||
|
* var data = snapshot.val();
|
|||
|
* // data is { "name": "Ada", "age": 36 }
|
|||
|
* // data.name === "Ada"
|
|||
|
* // data.age === 36
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return The DataSnapshot's contents as a JavaScript value (Object,
|
|||
|
* Array, string, number, boolean, or `null`).
|
|||
|
*/
|
|||
|
val(): any;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* The `onDisconnect` class allows you to write or clear data when your client
|
|||
|
* disconnects from the Database server. These updates occur whether your
|
|||
|
* client disconnects cleanly or not, so you can rely on them to clean up data
|
|||
|
* even if a connection is dropped or a client crashes.
|
|||
|
*
|
|||
|
* The `onDisconnect` class is most commonly used to manage presence in
|
|||
|
* applications where it is useful to detect how many clients are connected and
|
|||
|
* when other clients disconnect. See
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/offline-capabilities
|
|||
|
* Enabling Offline Capabilities in JavaScript} for more information.
|
|||
|
*
|
|||
|
* To avoid problems when a connection is dropped before the requests can be
|
|||
|
* transferred to the Database server, these functions should be called before
|
|||
|
* any data is written.
|
|||
|
*
|
|||
|
* Note that `onDisconnect` operations are only triggered once. If you want an
|
|||
|
* operation to occur each time a disconnect occurs, you'll need to re-establish
|
|||
|
* the `onDisconnect` operations each time you reconnect.
|
|||
|
*/
|
|||
|
interface OnDisconnect {
|
|||
|
|
|||
|
/**
|
|||
|
* Cancels all previously queued `onDisconnect()` set or update events for this
|
|||
|
* location and all children.
|
|||
|
*
|
|||
|
* If a write has been queued for this location via a `set()` or `update()` at a
|
|||
|
* parent location, the write at this location will be canceled, though all
|
|||
|
* other siblings will still be written.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var ref = admin.database().ref("onlineState");
|
|||
|
* ref.onDisconnect().set(false);
|
|||
|
* // ... sometime later
|
|||
|
* ref.onDisconnect().cancel();
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param onComplete An optional callback function that is
|
|||
|
* called when synchronization to the server has completed. The callback
|
|||
|
* will be passed a single parameter: null for success, or an Error object
|
|||
|
* indicating a failure.
|
|||
|
* @return Resolves when synchronization to the server is complete.
|
|||
|
*/
|
|||
|
cancel(onComplete?: (a: Error|null) => any): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Ensures the data at this location is deleted when the client is disconnected
|
|||
|
* (due to closing the browser, navigating to a new page, or network issues).
|
|||
|
*
|
|||
|
* @param onComplete An optional callback function that is
|
|||
|
* called when synchronization to the server has completed. The callback
|
|||
|
* will be passed a single parameter: null for success, or an Error object
|
|||
|
* indicating a failure.
|
|||
|
* @return Resolves when synchronization to the server is complete.
|
|||
|
*/
|
|||
|
remove(onComplete?: (a: Error|null) => any): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Ensures the data at this location is set to the specified value when the
|
|||
|
* client is disconnected (due to closing the browser, navigating to a new page,
|
|||
|
* or network issues).
|
|||
|
*
|
|||
|
* `set()` is especially useful for implementing "presence" systems, where a
|
|||
|
* value should be changed or cleared when a user disconnects so that they
|
|||
|
* appear "offline" to other users. See
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/offline-capabilities
|
|||
|
* Enabling Offline Capabilities in JavaScript} for more information.
|
|||
|
*
|
|||
|
* Note that `onDisconnect` operations are only triggered once. If you want an
|
|||
|
* operation to occur each time a disconnect occurs, you'll need to re-establish
|
|||
|
* the `onDisconnect` operations each time.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var ref = admin.database().ref("users/ada/status");
|
|||
|
* ref.onDisconnect().set("I disconnected!");
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param value The value to be written to this location on
|
|||
|
* disconnect (can be an object, array, string, number, boolean, or null).
|
|||
|
* @param onComplete An optional callback function that
|
|||
|
* will be called when synchronization to the database server has completed.
|
|||
|
* The callback will be passed a single parameter: null for success, or an
|
|||
|
* `Error` object indicating a failure.
|
|||
|
* @return A promise that resolves when synchronization to the database is complete.
|
|||
|
*/
|
|||
|
set(value: any, onComplete?: (a: Error|null) => any): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Ensures the data at this location is set to the specified value and priority
|
|||
|
* when the client is disconnected (due to closing the browser, navigating to a
|
|||
|
* new page, or network issues).
|
|||
|
*
|
|||
|
* @param value The value to be written to this location on
|
|||
|
* disconnect (can be an object, array, string, number, boolean, or null).
|
|||
|
* @param priority
|
|||
|
* @param onComplete An optional callback function that is
|
|||
|
* called when synchronization to the server has completed. The callback
|
|||
|
* will be passed a single parameter: null for success, or an Error object
|
|||
|
* indicating a failure.
|
|||
|
* @return A promise that resolves when synchronization to the database is complete.
|
|||
|
*/
|
|||
|
setWithPriority(
|
|||
|
value: any,
|
|||
|
priority: number|string|null,
|
|||
|
onComplete?: (a: Error|null) => any
|
|||
|
): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Writes multiple values at this location when the client is disconnected (due
|
|||
|
* to closing the browser, navigating to a new page, or network issues).
|
|||
|
*
|
|||
|
* The `values` argument contains multiple property-value pairs that will be
|
|||
|
* written to the Database together. Each child property can either be a simple
|
|||
|
* property (for example, "name") or a relative path (for example, "name/first")
|
|||
|
* from the current location to the data to update.
|
|||
|
*
|
|||
|
* As opposed to the `set()` method, `update()` can be use to selectively update
|
|||
|
* only the referenced properties at the current location (instead of replacing
|
|||
|
* all the child properties at the current location).
|
|||
|
*
|
|||
|
* See {@link https://firebase.google.com/docs/reference/admin/node/admin.database.Reference#update}
|
|||
|
* for examples of using the connected version of `update`.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var ref = admin.database().ref("users/ada");
|
|||
|
* ref.update({
|
|||
|
* onlineState: true,
|
|||
|
* status: "I'm online."
|
|||
|
* });
|
|||
|
* ref.onDisconnect().update({
|
|||
|
* onlineState: false,
|
|||
|
* status: "I'm offline."
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param values Object containing multiple values.
|
|||
|
* @param onComplete An optional callback function that will
|
|||
|
* be called when synchronization to the server has completed. The
|
|||
|
* callback will be passed a single parameter: null for success, or an Error
|
|||
|
* object indicating a failure.
|
|||
|
* @return Resolves when synchronization to the
|
|||
|
* Database is complete.
|
|||
|
*/
|
|||
|
update(values: Object, onComplete?: (a: Error|null) => any): Promise<void>;
|
|||
|
}
|
|||
|
|
|||
|
type EventType = 'value' | 'child_added' | 'child_changed' | 'child_moved' | 'child_removed';
|
|||
|
|
|||
|
/**
|
|||
|
* A `Query` sorts and filters the data at a Database location so only a subset
|
|||
|
* of the child data is included. This can be used to order a collection of
|
|||
|
* data by some attribute (for example, height of dinosaurs) as well as to
|
|||
|
* restrict a large list of items (for example, chat messages) down to a number
|
|||
|
* suitable for synchronizing to the client. Queries are created by chaining
|
|||
|
* together one or more of the filter methods defined here.
|
|||
|
*
|
|||
|
* Just as with a `Reference`, you can receive data from a `Query` by using the
|
|||
|
* `on()` method. You will only receive events and `DataSnapshot`s for the
|
|||
|
* subset of the data that matches your query.
|
|||
|
*
|
|||
|
* See
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data
|
|||
|
* Sorting and filtering data} for more information.
|
|||
|
*/
|
|||
|
interface Query {
|
|||
|
ref: admin.database.Reference;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a `Query` with the specified ending point.
|
|||
|
*
|
|||
|
* Using `startAt()`, `endAt()`, and `equalTo()` allows you to choose arbitrary
|
|||
|
* starting and ending points for your queries.
|
|||
|
*
|
|||
|
* The ending point is inclusive, so children with exactly the specified value
|
|||
|
* will be included in the query. The optional key argument can be used to
|
|||
|
* further limit the range of the query. If it is specified, then children that
|
|||
|
* have exactly the specified value must also have a key name less than or equal
|
|||
|
* to the specified key.
|
|||
|
*
|
|||
|
* You can read more about `endAt()` in
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#filtering_data
|
|||
|
* Filtering data}.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Find all dinosaurs whose names come before Pterodactyl lexicographically.
|
|||
|
* var ref = admin.database().ref("dinosaurs");
|
|||
|
* ref.orderByKey().endAt("pterodactyl").on("child_added", function(snapshot) {
|
|||
|
* console.log(snapshot.key);
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param value The value to end at. The argument
|
|||
|
* type depends on which `orderBy*()` function was used in this query.
|
|||
|
* Specify a value that matches the `orderBy*()` type. When used in
|
|||
|
* combination with `orderByKey()`, the value must be a string.
|
|||
|
* @param key The child key to end at, among the children with the
|
|||
|
* previously specified priority. This argument is only allowed if ordering by
|
|||
|
* priority.
|
|||
|
* @return A new `Query` object.
|
|||
|
*/
|
|||
|
endAt(value: number|string|boolean|null, key?: string): admin.database.Query;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a `Query` that includes children that match the specified value.
|
|||
|
*
|
|||
|
* Using `startAt()`, `endAt()`, and `equalTo()` allows us to choose arbitrary
|
|||
|
* starting and ending points for our queries.
|
|||
|
*
|
|||
|
* The optional key argument can be used to further limit the range of the
|
|||
|
* query. If it is specified, then children that have exactly the specified
|
|||
|
* value must also have exactly the specified key as their key name. This can be
|
|||
|
* used to filter result sets with many matches for the same value.
|
|||
|
*
|
|||
|
* You can read more about `equalTo()` in
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#filtering_data
|
|||
|
* Filtering data}.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* // Find all dinosaurs whose height is exactly 25 meters.
|
|||
|
* var ref = admin.database().ref("dinosaurs");
|
|||
|
* ref.orderByChild("height").equalTo(25).on("child_added", function(snapshot) {
|
|||
|
* console.log(snapshot.key);
|
|||
|
* });
|
|||
|
*
|
|||
|
* @param value The value to match for. The
|
|||
|
* argument type depends on which `orderBy*()` function was used in this
|
|||
|
* query. Specify a value that matches the `orderBy*()` type. When used in
|
|||
|
* combination with `orderByKey()`, the value must be a string.
|
|||
|
* @param key The child key to start at, among the children with the
|
|||
|
* previously specified priority. This argument is only allowed if ordering by
|
|||
|
* priority.
|
|||
|
* @return A new `Query` object.
|
|||
|
*/
|
|||
|
equalTo(value: number|string|boolean|null, key?: string): admin.database.Query;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns whether or not the current and provided queries represent the same
|
|||
|
* location, have the same query parameters, and are from the same instance of
|
|||
|
* `admin.app.App`.
|
|||
|
*
|
|||
|
* Two `Reference` objects are equivalent if they represent the same location
|
|||
|
* and are from the same instance of `admin.app.App`.
|
|||
|
*
|
|||
|
* Two `Query` objects are equivalent if they represent the same location, have
|
|||
|
* the same query parameters, and are from the same instance of `admin.app.App`.
|
|||
|
* Equivalent queries share the same sort order, limits, and starting and
|
|||
|
* ending points.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var rootRef = admin.database().ref();
|
|||
|
* var usersRef = rootRef.child("users");
|
|||
|
*
|
|||
|
* usersRef.isEqual(rootRef); // false
|
|||
|
* usersRef.isEqual(rootRef.child("users")); // true
|
|||
|
* usersRef.parent.isEqual(rootRef); // true
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var rootRef = admin.database().ref();
|
|||
|
* var usersRef = rootRef.child("users");
|
|||
|
* var usersQuery = usersRef.limitToLast(10);
|
|||
|
*
|
|||
|
* usersQuery.isEqual(usersRef); // false
|
|||
|
* usersQuery.isEqual(usersRef.limitToLast(10)); // true
|
|||
|
* usersQuery.isEqual(rootRef.limitToLast(10)); // false
|
|||
|
* usersQuery.isEqual(usersRef.orderByKey().limitToLast(10)); // false
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param other The query to compare against.
|
|||
|
* @return Whether or not the current and provided queries are
|
|||
|
* equivalent.
|
|||
|
*/
|
|||
|
isEqual(other: admin.database.Query|null): boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Generates a new `Query` limited to the first specific number of children.
|
|||
|
*
|
|||
|
* The `limitToFirst()` method is used to set a maximum number of children to be
|
|||
|
* synced for a given callback. If we set a limit of 100, we will initially only
|
|||
|
* receive up to 100 `child_added` events. If we have fewer than 100 messages
|
|||
|
* stored in our Database, a `child_added` event will fire for each message.
|
|||
|
* However, if we have over 100 messages, we will only receive a `child_added`
|
|||
|
* event for the first 100 ordered messages. As items change, we will receive
|
|||
|
* `child_removed` events for each item that drops out of the active list so
|
|||
|
* that the total number stays at 100.
|
|||
|
*
|
|||
|
* You can read more about `limitToFirst()` in
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#filtering_data
|
|||
|
* Filtering data}.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Find the two shortest dinosaurs.
|
|||
|
* var ref = admin.database().ref("dinosaurs");
|
|||
|
* ref.orderByChild("height").limitToFirst(2).on("child_added", function(snapshot) {
|
|||
|
* // This will be called exactly two times (unless there are less than two
|
|||
|
* // dinosaurs in the Database).
|
|||
|
*
|
|||
|
* // It will also get fired again if one of the first two dinosaurs is
|
|||
|
* // removed from the data set, as a new dinosaur will now be the second
|
|||
|
* // shortest.
|
|||
|
* console.log(snapshot.key);
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param limit The maximum number of nodes to include in this query.
|
|||
|
* @return A `Query` object.
|
|||
|
*/
|
|||
|
limitToFirst(limit: number): admin.database.Query;
|
|||
|
|
|||
|
/**
|
|||
|
* Generates a new `Query` object limited to the last specific number of
|
|||
|
* children.
|
|||
|
*
|
|||
|
* The `limitToLast()` method is used to set a maximum number of children to be
|
|||
|
* synced for a given callback. If we set a limit of 100, we will initially only
|
|||
|
* receive up to 100 `child_added` events. If we have fewer than 100 messages
|
|||
|
* stored in our Database, a `child_added` event will fire for each message.
|
|||
|
* However, if we have over 100 messages, we will only receive a `child_added`
|
|||
|
* event for the last 100 ordered messages. As items change, we will receive
|
|||
|
* `child_removed` events for each item that drops out of the active list so
|
|||
|
* that the total number stays at 100.
|
|||
|
*
|
|||
|
* You can read more about `limitToLast()` in
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#filtering_data
|
|||
|
* Filtering data}.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Find the two heaviest dinosaurs.
|
|||
|
* var ref = admin.database().ref("dinosaurs");
|
|||
|
* ref.orderByChild("weight").limitToLast(2).on("child_added", function(snapshot) {
|
|||
|
* // This callback will be triggered exactly two times, unless there are
|
|||
|
* // fewer than two dinosaurs stored in the Database. It will also get fired
|
|||
|
* // for every new, heavier dinosaur that gets added to the data set.
|
|||
|
* console.log(snapshot.key);
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param limit The maximum number of nodes to include in this query.
|
|||
|
* @return A `Query` object.
|
|||
|
*/
|
|||
|
limitToLast(limit: number): admin.database.Query;
|
|||
|
|
|||
|
/**
|
|||
|
* Detaches a callback previously attached with `on()`.
|
|||
|
*
|
|||
|
* Detach a callback previously attached with `on()`. Note that if `on()` was
|
|||
|
* called multiple times with the same eventType and callback, the callback
|
|||
|
* will be called multiple times for each event, and `off()` must be called
|
|||
|
* multiple times to remove the callback. Calling `off()` on a parent listener
|
|||
|
* will not automatically remove listeners registered on child nodes, `off()`
|
|||
|
* must also be called on any child listeners to remove the callback.
|
|||
|
*
|
|||
|
* If a callback is not specified, all callbacks for the specified eventType
|
|||
|
* will be removed. Similarly, if no eventType or callback is specified, all
|
|||
|
* callbacks for the `Reference` will be removed.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var onValueChange = function(dataSnapshot) { ... };
|
|||
|
* ref.on('value', onValueChange);
|
|||
|
* ref.child('meta-data').on('child_added', onChildAdded);
|
|||
|
* // Sometime later...
|
|||
|
* ref.off('value', onValueChange);
|
|||
|
*
|
|||
|
* // You must also call off() for any child listeners on ref
|
|||
|
* // to cancel those callbacks
|
|||
|
* ref.child('meta-data').off('child_added', onValueAdded);
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Or you can save a line of code by using an inline function
|
|||
|
* // and on()'s return value.
|
|||
|
* var onValueChange = ref.on('value', function(dataSnapshot) { ... });
|
|||
|
* // Sometime later...
|
|||
|
* ref.off('value', onValueChange);
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param eventType One of the following strings: "value",
|
|||
|
* "child_added", "child_changed", "child_removed", or "child_moved."
|
|||
|
* @param callback The callback function that was passed to `on()`.
|
|||
|
* @param context The context that was passed to `on()`.
|
|||
|
*/
|
|||
|
off(
|
|||
|
eventType?: admin.database.EventType,
|
|||
|
callback?: (a: admin.database.DataSnapshot, b?: string|null) => any,
|
|||
|
context?: Object|null
|
|||
|
): void;
|
|||
|
|
|||
|
/**
|
|||
|
* Listens for data changes at a particular location.
|
|||
|
*
|
|||
|
* This is the primary way to read data from a Database. Your callback
|
|||
|
* will be triggered for the initial data and again whenever the data changes.
|
|||
|
* Use `off( )` to stop receiving updates. See
|
|||
|
* {@link https://firebase.google.com/docs/database/web/retrieve-data
|
|||
|
* Retrieve Data on the Web}
|
|||
|
* for more details.
|
|||
|
*
|
|||
|
* <h4>value event</h4>
|
|||
|
*
|
|||
|
* This event will trigger once with the initial data stored at this location,
|
|||
|
* and then trigger again each time the data changes. The `DataSnapshot` passed
|
|||
|
* to the callback will be for the location at which `on()` was called. It
|
|||
|
* won't trigger until the entire contents has been synchronized. If the
|
|||
|
* location has no data, it will be triggered with an empty `DataSnapshot`
|
|||
|
* (`val()` will return `null`).
|
|||
|
*
|
|||
|
* <h4>child_added event</h4>
|
|||
|
*
|
|||
|
* This event will be triggered once for each initial child at this location,
|
|||
|
* and it will be triggered again every time a new child is added. The
|
|||
|
* `DataSnapshot` passed into the callback will reflect the data for the
|
|||
|
* relevant child. For ordering purposes, it is passed a second argument which
|
|||
|
* is a string containing the key of the previous sibling child by sort order
|
|||
|
* (or `null` if it is the first child).
|
|||
|
*
|
|||
|
* <h4>child_removed event</h4>
|
|||
|
*
|
|||
|
* This event will be triggered once every time a child is removed. The
|
|||
|
* `DataSnapshot` passed into the callback will be the old data for the child
|
|||
|
* that was removed. A child will get removed when either:
|
|||
|
*
|
|||
|
* - a client explicitly calls `remove()` on that child or one of its ancestors
|
|||
|
* - a client calls `set(null)` on that child or one of its ancestors
|
|||
|
* - that child has all of its children removed
|
|||
|
* - there is a query in effect which now filters out the child (because it's
|
|||
|
* sort order changed or the max limit was hit)
|
|||
|
*
|
|||
|
* <h4>child_changed event</h4>
|
|||
|
*
|
|||
|
* This event will be triggered when the data stored in a child (or any of its
|
|||
|
* descendants) changes. Note that a single `child_changed` event may represent
|
|||
|
* multiple changes to the child. The `DataSnapshot` passed to the callback will
|
|||
|
* contain the new child contents. For ordering purposes, the callback is also
|
|||
|
* passed a second argument which is a string containing the key of the previous
|
|||
|
* sibling child by sort order (or `null` if it is the first child).
|
|||
|
*
|
|||
|
* <h4>child_moved event</h4>
|
|||
|
*
|
|||
|
* This event will be triggered when a child's sort order changes such that its
|
|||
|
* position relative to its siblings changes. The `DataSnapshot` passed to the
|
|||
|
* callback will be for the data of the child that has moved. It is also passed
|
|||
|
* a second argument which is a string containing the key of the previous
|
|||
|
* sibling child by sort order (or `null` if it is the first child).
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Handle a new value.
|
|||
|
* ref.on('value', function(dataSnapshot) {
|
|||
|
* ...
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Handle a new child.
|
|||
|
* ref.on('child_added', function(childSnapshot, prevChildKey) {
|
|||
|
* ...
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Handle child removal.
|
|||
|
* ref.on('child_removed', function(oldChildSnapshot) {
|
|||
|
* ...
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Handle child data changes.
|
|||
|
* ref.on('child_changed', function(childSnapshot, prevChildKey) {
|
|||
|
* ...
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Handle child ordering changes.
|
|||
|
* ref.on('child_moved', function(childSnapshot, prevChildKey) {
|
|||
|
* ...
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param eventType One of the following strings: "value",
|
|||
|
* "child_added", "child_changed", "child_removed", or "child_moved."
|
|||
|
* @param callback A callback that fires when the specified event occurs. The callback is
|
|||
|
* passed a DataSnapshot. For ordering purposes, "child_added",
|
|||
|
* "child_changed", and "child_moved" will also be passed a string containing
|
|||
|
* the key of the previous child, by sort order (or `null` if it is the
|
|||
|
* first child).
|
|||
|
* @param cancelCallbackOrContext An optional
|
|||
|
* callback that will be notified if your event subscription is ever canceled
|
|||
|
* because your client does not have permission to read this data (or it had
|
|||
|
* permission but has now lost it). This callback will be passed an `Error`
|
|||
|
* object indicating why the failure occurred.
|
|||
|
* @param context If provided, this object will be used as `this`
|
|||
|
* when calling your callback(s).
|
|||
|
* @return The provided
|
|||
|
* callback function is returned unmodified. This is just for convenience if
|
|||
|
* you want to pass an inline function to `on()`, but store the callback
|
|||
|
* function for later passing to `off()`.
|
|||
|
*/
|
|||
|
on(
|
|||
|
eventType: admin.database.EventType,
|
|||
|
callback: (a: admin.database.DataSnapshot|null, b?: string) => any,
|
|||
|
cancelCallbackOrContext?: Object|null,
|
|||
|
context?: Object|null
|
|||
|
): (a: admin.database.DataSnapshot|null, b?: string) => any;
|
|||
|
|
|||
|
/**
|
|||
|
* Listens for exactly one event of the specified event type, and then stops
|
|||
|
* listening.
|
|||
|
*
|
|||
|
* This is equivalent to calling `on()`, and then calling `off()` inside the
|
|||
|
* callback function. See `on()` for details on the event types.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Basic usage of .once() to read the data located at ref.
|
|||
|
* ref.once('value')
|
|||
|
* .then(function(dataSnapshot) {
|
|||
|
* // handle read data.
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param eventType One of the following strings: "value",
|
|||
|
* "child_added", "child_changed", "child_removed", or "child_moved."
|
|||
|
* @param successCallback A callback that fires when the specified event occurs. The callback is
|
|||
|
* passed a `DataSnapshot`. For ordering purposes, "child_added",
|
|||
|
* "child_changed", and "child_moved" will also be passed a string containing
|
|||
|
* the key of the previous child by sort order (or `null` if it is the
|
|||
|
* first child).
|
|||
|
* @param failureCallbackOrContext An optional
|
|||
|
* callback that will be notified if your client does not have permission to
|
|||
|
* read the data. This callback will be passed an `Error` object indicating
|
|||
|
* why the failure occurred.
|
|||
|
* @param context If provided, this object will be used as `this`
|
|||
|
* when calling your callback(s).
|
|||
|
* @return {!Promise<admin.database.DataSnapshot>}
|
|||
|
*/
|
|||
|
once(
|
|||
|
eventType: admin.database.EventType,
|
|||
|
successCallback?: (a: admin.database.DataSnapshot, b?: string) => any,
|
|||
|
failureCallbackOrContext?: Object|null,
|
|||
|
context?: Object|null
|
|||
|
): Promise<admin.database.DataSnapshot>;
|
|||
|
|
|||
|
/**
|
|||
|
* Generates a new `Query` object ordered by the specified child key.
|
|||
|
*
|
|||
|
* Queries can only order by one key at a time. Calling `orderByChild()`
|
|||
|
* multiple times on the same query is an error.
|
|||
|
*
|
|||
|
* Firebase queries allow you to order your data by any child key on the fly.
|
|||
|
* However, if you know in advance what your indexes will be, you can define
|
|||
|
* them via the .indexOn rule in your Security Rules for better performance. See
|
|||
|
* the {@link https://firebase.google.com/docs/database/security/indexing-data
|
|||
|
* .indexOn} rule for more information.
|
|||
|
*
|
|||
|
* You can read more about `orderByChild()` in
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#sort_data
|
|||
|
* Sort data}.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var ref = admin.database().ref("dinosaurs");
|
|||
|
* ref.orderByChild("height").on("child_added", function(snapshot) {
|
|||
|
* console.log(snapshot.key + " was " + snapshot.val().height + " m tall");
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param path
|
|||
|
* @return A new `Query` object.
|
|||
|
*/
|
|||
|
orderByChild(path: string): admin.database.Query;
|
|||
|
|
|||
|
/**
|
|||
|
* Generates a new `Query` object ordered by key.
|
|||
|
*
|
|||
|
* Sorts the results of a query by their (ascending) key values.
|
|||
|
*
|
|||
|
* You can read more about `orderByKey()` in
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#sort_data
|
|||
|
* Sort data}.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var ref = admin.database().ref("dinosaurs");
|
|||
|
* ref.orderByKey().on("child_added", function(snapshot) {
|
|||
|
* console.log(snapshot.key);
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return A new `Query` object.
|
|||
|
*/
|
|||
|
orderByKey(): admin.database.Query;
|
|||
|
|
|||
|
/**
|
|||
|
* Generates a new `Query` object ordered by priority.
|
|||
|
*
|
|||
|
* Applications need not use priority but can order collections by
|
|||
|
* ordinary properties (see
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#sort_data
|
|||
|
* Sort data} for alternatives to priority.
|
|||
|
*
|
|||
|
* @return A new `Query` object.
|
|||
|
*/
|
|||
|
orderByPriority(): admin.database.Query;
|
|||
|
|
|||
|
/**
|
|||
|
* Generates a new `Query` object ordered by value.
|
|||
|
*
|
|||
|
* If the children of a query are all scalar values (string, number, or
|
|||
|
* boolean), you can order the results by their (ascending) values.
|
|||
|
*
|
|||
|
* You can read more about `orderByValue()` in
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#sort_data
|
|||
|
* Sort data}.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var scoresRef = admin.database().ref("scores");
|
|||
|
* scoresRef.orderByValue().limitToLast(3).on("value", function(snapshot) {
|
|||
|
* snapshot.forEach(function(data) {
|
|||
|
* console.log("The " + data.key + " score is " + data.val());
|
|||
|
* });
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return A new `Query` object.
|
|||
|
*/
|
|||
|
orderByValue(): admin.database.Query;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a `Query` with the specified starting point.
|
|||
|
*
|
|||
|
* Using `startAt()`, `endAt()`, and `equalTo()` allows you to choose arbitrary
|
|||
|
* starting and ending points for your queries.
|
|||
|
*
|
|||
|
* The starting point is inclusive, so children with exactly the specified value
|
|||
|
* will be included in the query. The optional key argument can be used to
|
|||
|
* further limit the range of the query. If it is specified, then children that
|
|||
|
* have exactly the specified value must also have a key name greater than or
|
|||
|
* equal to the specified key.
|
|||
|
*
|
|||
|
* You can read more about `startAt()` in
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#filtering_data
|
|||
|
* Filtering data}.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Find all dinosaurs that are at least three meters tall.
|
|||
|
* var ref = admin.database().ref("dinosaurs");
|
|||
|
* ref.orderByChild("height").startAt(3).on("child_added", function(snapshot) {
|
|||
|
* console.log(snapshot.key)
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param value The value to start at. The argument
|
|||
|
* type depends on which `orderBy*()` function was used in this query.
|
|||
|
* Specify a value that matches the `orderBy*()` type. When used in
|
|||
|
* combination with `orderByKey()`, the value must be a string.
|
|||
|
* @param key The child key to start at. This argument is allowed if
|
|||
|
* ordering by child, value, or priority.
|
|||
|
* @return A new `Query` object.
|
|||
|
*/
|
|||
|
startAt(value: number|string|boolean|null, key?: string): admin.database.Query;
|
|||
|
|
|||
|
/**
|
|||
|
* @return A JSON-serializable representation of this object.
|
|||
|
*/
|
|||
|
toJSON(): Object;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the absolute URL for this location.
|
|||
|
*
|
|||
|
* The `toString()` method returns a URL that is ready to be put into a browser,
|
|||
|
* curl command, or a `admin.database().refFromURL()` call. Since all of those
|
|||
|
* expect the URL to be url-encoded, `toString()` returns an encoded URL.
|
|||
|
*
|
|||
|
* Append '.json' to the returned URL when typed into a browser to download
|
|||
|
* JSON-formatted data. If the location is secured (that is, not publicly
|
|||
|
* readable), you will get a permission-denied error.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Calling toString() on a root Firebase reference returns the URL where its
|
|||
|
* // data is stored within the Database:
|
|||
|
* var rootRef = admin.database().ref();
|
|||
|
* var rootUrl = rootRef.toString();
|
|||
|
* // rootUrl === "https://sample-app.firebaseio.com/".
|
|||
|
*
|
|||
|
* // Calling toString() at a deeper Firebase reference returns the URL of that
|
|||
|
* // deep path within the Database:
|
|||
|
* var adaRef = rootRef.child('users/ada');
|
|||
|
* var adaURL = adaRef.toString();
|
|||
|
* // adaURL === "https://sample-app.firebaseio.com/users/ada".
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return The absolute URL for this location.
|
|||
|
* @override
|
|||
|
*/
|
|||
|
toString(): string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* A `Reference` represents a specific location in your Database and can be used
|
|||
|
* for reading or writing data to that Database location.
|
|||
|
*
|
|||
|
* You can reference the root or child location in your Database by calling
|
|||
|
* `admin.database().ref()` or `admin.database().ref("child/path")`.
|
|||
|
*
|
|||
|
* Writing is done with the `set()` method and reading can be done with the
|
|||
|
* `on()` method. See
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/read-and-write
|
|||
|
* Read and Write Data on the Web}
|
|||
|
*/
|
|||
|
interface Reference extends admin.database.Query {
|
|||
|
|
|||
|
/**
|
|||
|
* The last part of the `Reference`'s path.
|
|||
|
*
|
|||
|
* For example, `"ada"` is the key for
|
|||
|
* `https://<DATABASE_NAME>.firebaseio.com/users/ada`.
|
|||
|
*
|
|||
|
* The key of a root `Reference` is `null`.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // The key of a root reference is null
|
|||
|
* var rootRef = admin.database().ref();
|
|||
|
* var key = rootRef.key; // key === null
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // The key of any non-root reference is the last token in the path
|
|||
|
* var adaRef = admin.database().ref("users/ada");
|
|||
|
* var key = adaRef.key; // key === "ada"
|
|||
|
* key = adaRef.child("name/last").key; // key === "last"
|
|||
|
* ```
|
|||
|
*/
|
|||
|
key: string|null;
|
|||
|
|
|||
|
/**
|
|||
|
* The parent location of a `Reference`.
|
|||
|
*
|
|||
|
* The parent of a root `Reference` is `null`.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // The parent of a root reference is null
|
|||
|
* var rootRef = admin.database().ref();
|
|||
|
* parent = rootRef.parent; // parent === null
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // The parent of any non-root reference is the parent location
|
|||
|
* var usersRef = admin.database().ref("users");
|
|||
|
* var adaRef = admin.database().ref("users/ada");
|
|||
|
* // usersRef and adaRef.parent represent the same location
|
|||
|
* ```
|
|||
|
*/
|
|||
|
parent: admin.database.Reference|null;
|
|||
|
|
|||
|
/**
|
|||
|
* The root `Reference` of the Database.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // The root of a root reference is itself
|
|||
|
* var rootRef = admin.database().ref();
|
|||
|
* // rootRef and rootRef.root represent the same location
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // The root of any non-root reference is the root location
|
|||
|
* var adaRef = admin.database().ref("users/ada");
|
|||
|
* // rootRef and adaRef.root represent the same location
|
|||
|
* ```
|
|||
|
*/
|
|||
|
root: admin.database.Reference;
|
|||
|
path: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets a `Reference` for the location at the specified relative path.
|
|||
|
*
|
|||
|
* The relative path can either be a simple child name (for example, "ada") or
|
|||
|
* a deeper slash-separated path (for example, "ada/name/first").
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var usersRef = admin.database().ref('users');
|
|||
|
* var adaRef = usersRef.child('ada');
|
|||
|
* var adaFirstNameRef = adaRef.child('name/first');
|
|||
|
* var path = adaFirstNameRef.toString();
|
|||
|
* // path is now 'https://sample-app.firebaseio.com/users/ada/name/first'
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param path A relative path from this location to the desired child
|
|||
|
* location.
|
|||
|
* @return The specified child location.
|
|||
|
*/
|
|||
|
child(path: string): admin.database.Reference;
|
|||
|
|
|||
|
/**
|
|||
|
* Returns an `OnDisconnect` object - see
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/offline-capabilities
|
|||
|
* Enabling Offline Capabilities in JavaScript} for more information on how
|
|||
|
* to use it.
|
|||
|
*
|
|||
|
* @return An `OnDisconnect` object .
|
|||
|
*/
|
|||
|
onDisconnect(): admin.database.OnDisconnect;
|
|||
|
|
|||
|
/**
|
|||
|
* Generates a new child location using a unique key and returns its
|
|||
|
* `Reference`.
|
|||
|
*
|
|||
|
* This is the most common pattern for adding data to a collection of items.
|
|||
|
*
|
|||
|
* If you provide a value to `push()`, the value will be written to the
|
|||
|
* generated location. If you don't pass a value, nothing will be written to the
|
|||
|
* Database and the child will remain empty (but you can use the `Reference`
|
|||
|
* elsewhere).
|
|||
|
*
|
|||
|
* The unique key generated by `push()` are ordered by the current time, so the
|
|||
|
* resulting list of items will be chronologically sorted. The keys are also
|
|||
|
* designed to be unguessable (they contain 72 random bits of entropy).
|
|||
|
*
|
|||
|
*
|
|||
|
* See
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#append_to_a_list_of_data
|
|||
|
* Append to a list of data}
|
|||
|
* </br>See
|
|||
|
* {@link
|
|||
|
* https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html
|
|||
|
* The 2^120 Ways to Ensure Unique Identifiers}
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var messageListRef = admin.database().ref('message_list');
|
|||
|
* var newMessageRef = messageListRef.push();
|
|||
|
* newMessageRef.set({
|
|||
|
* user_id: 'ada',
|
|||
|
* text: 'The Analytical Engine weaves algebraical patterns just as the Jacquard loom weaves flowers and leaves.'
|
|||
|
* });
|
|||
|
* // We've appended a new message to the message_list location.
|
|||
|
* var path = newMessageRef.toString();
|
|||
|
* // path will be something like
|
|||
|
* // 'https://sample-app.firebaseio.com/message_list/-IKo28nwJLH0Nc5XeFmj'
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param value Optional value to be written at the generated location.
|
|||
|
* @param onComplete Callback called when write to server is
|
|||
|
* complete.
|
|||
|
* @return Combined `Promise` and
|
|||
|
* `Reference`; resolves when write is complete, but can be used immediately
|
|||
|
* as the `Reference` to the child location.
|
|||
|
*/
|
|||
|
push(value?: any, onComplete?: (a: Error|null) => any): admin.database.ThenableReference;
|
|||
|
|
|||
|
/**
|
|||
|
* Removes the data at this Database location.
|
|||
|
*
|
|||
|
* Any data at child locations will also be deleted.
|
|||
|
*
|
|||
|
* The effect of the remove will be visible immediately and the corresponding
|
|||
|
* event 'value' will be triggered. Synchronization of the remove to the
|
|||
|
* Firebase servers will also be started, and the returned Promise will resolve
|
|||
|
* when complete. If provided, the onComplete callback will be called
|
|||
|
* asynchronously after synchronization has finished.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var adaRef = admin.database().ref('users/ada');
|
|||
|
* adaRef.remove()
|
|||
|
* .then(function() {
|
|||
|
* console.log("Remove succeeded.")
|
|||
|
* })
|
|||
|
* .catch(function(error) {
|
|||
|
* console.log("Remove failed: " + error.message)
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param onComplete Callback called when write to server is
|
|||
|
* complete.
|
|||
|
* @return Resolves when remove on server is complete.
|
|||
|
*/
|
|||
|
remove(onComplete?: (a: Error|null) => any): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Writes data to this Database location.
|
|||
|
*
|
|||
|
* This will overwrite any data at this location and all child locations.
|
|||
|
*
|
|||
|
* The effect of the write will be visible immediately, and the corresponding
|
|||
|
* events ("value", "child_added", etc.) will be triggered. Synchronization of
|
|||
|
* the data to the Firebase servers will also be started, and the returned
|
|||
|
* Promise will resolve when complete. If provided, the `onComplete` callback
|
|||
|
* will be called asynchronously after synchronization has finished.
|
|||
|
*
|
|||
|
* Passing `null` for the new value is equivalent to calling `remove()`; namely,
|
|||
|
* all data at this location and all child locations will be deleted.
|
|||
|
*
|
|||
|
* `set()` will remove any priority stored at this location, so if priority is
|
|||
|
* meant to be preserved, you need to use `setWithPriority()` instead.
|
|||
|
*
|
|||
|
* Note that modifying data with `set()` will cancel any pending transactions
|
|||
|
* at that location, so extreme care should be taken if mixing `set()` and
|
|||
|
* `transaction()` to modify the same data.
|
|||
|
*
|
|||
|
* A single `set()` will generate a single "value" event at the location where
|
|||
|
* the `set()` was performed.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var adaNameRef = admin.database().ref('users/ada/name');
|
|||
|
* adaNameRef.child('first').set('Ada');
|
|||
|
* adaNameRef.child('last').set('Lovelace');
|
|||
|
* // We've written 'Ada' to the Database location storing Ada's first name,
|
|||
|
* // and 'Lovelace' to the location storing her last name.
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* adaNameRef.set({ first: 'Ada', last: 'Lovelace' });
|
|||
|
* // Exact same effect as the previous example, except we've written
|
|||
|
* // Ada's first and last name simultaneously.
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* adaNameRef.set({ first: 'Ada', last: 'Lovelace' })
|
|||
|
* .then(function() {
|
|||
|
* console.log('Synchronization succeeded');
|
|||
|
* })
|
|||
|
* .catch(function(error) {
|
|||
|
* console.log('Synchronization failed');
|
|||
|
* });
|
|||
|
* // Same as the previous example, except we will also log a message
|
|||
|
* // when the data has finished synchronizing.
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param value The value to be written (string, number, boolean, object,
|
|||
|
* array, or null).
|
|||
|
* @param onComplete Callback called when write to server is
|
|||
|
* complete.
|
|||
|
* @return Resolves when write to server is complete.
|
|||
|
*/
|
|||
|
set(value: any, onComplete?: (a: Error|null) => any): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sets a priority for the data at this Database location.
|
|||
|
*
|
|||
|
* Applications need not use priority but can order collections by
|
|||
|
* ordinary properties (see
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data
|
|||
|
* Sorting and filtering data}).
|
|||
|
*
|
|||
|
* @param priority
|
|||
|
* @param onComplete
|
|||
|
* @return
|
|||
|
*/
|
|||
|
setPriority(
|
|||
|
priority: string|number|null,
|
|||
|
onComplete: (a: Error|null) => any
|
|||
|
): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Writes data the Database location. Like `set()` but also specifies the
|
|||
|
* priority for that data.
|
|||
|
*
|
|||
|
* Applications need not use priority but can order collections by
|
|||
|
* ordinary properties (see
|
|||
|
* {@link
|
|||
|
* https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data
|
|||
|
* Sorting and filtering data}).
|
|||
|
*
|
|||
|
* @param newVal
|
|||
|
* @param newPriority
|
|||
|
* @param onComplete
|
|||
|
* @return
|
|||
|
*/
|
|||
|
setWithPriority(
|
|||
|
newVal: any, newPriority: string|number|null,
|
|||
|
onComplete?: (a: Error|null) => any
|
|||
|
): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Atomically modifies the data at this location.
|
|||
|
*
|
|||
|
* Atomically modify the data at this location. Unlike a normal `set()`, which
|
|||
|
* just overwrites the data regardless of its previous value, `transaction()` is
|
|||
|
* used to modify the existing value to a new value, ensuring there are no
|
|||
|
* conflicts with other clients writing to the same location at the same time.
|
|||
|
*
|
|||
|
* To accomplish this, you pass `transaction()` an update function which is used
|
|||
|
* to transform the current value into a new value. If another client writes to
|
|||
|
* the location before your new value is successfully written, your update
|
|||
|
* function will be called again with the new current value, and the write will
|
|||
|
* be retried. This will happen repeatedly until your write succeeds without
|
|||
|
* conflict or you abort the transaction by not returning a value from your
|
|||
|
* update function.
|
|||
|
*
|
|||
|
* Note: Modifying data with `set()` will cancel any pending transactions at
|
|||
|
* that location, so extreme care should be taken if mixing `set()` and
|
|||
|
* `transaction()` to update the same data.
|
|||
|
*
|
|||
|
* Note: When using transactions with Security and Firebase Rules in place, be
|
|||
|
* aware that a client needs `.read` access in addition to `.write` access in
|
|||
|
* order to perform a transaction. This is because the client-side nature of
|
|||
|
* transactions requires the client to read the data in order to transactionally
|
|||
|
* update it.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Increment Ada's rank by 1.
|
|||
|
* var adaRankRef = admin.database().ref('users/ada/rank');
|
|||
|
* adaRankRef.transaction(function(currentRank) {
|
|||
|
* // If users/ada/rank has never been set, currentRank will be `null`.
|
|||
|
* return currentRank + 1;
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* // Try to create a user for ada, but only if the user id 'ada' isn't
|
|||
|
* // already taken
|
|||
|
* var adaRef = admin.database().ref('users/ada');
|
|||
|
* adaRef.transaction(function(currentData) {
|
|||
|
* if (currentData === null) {
|
|||
|
* return { name: { first: 'Ada', last: 'Lovelace' } };
|
|||
|
* } else {
|
|||
|
* console.log('User ada already exists.');
|
|||
|
* return; // Abort the transaction.
|
|||
|
* }
|
|||
|
* }, function(error, committed, snapshot) {
|
|||
|
* if (error) {
|
|||
|
* console.log('Transaction failed abnormally!', error);
|
|||
|
* } else if (!committed) {
|
|||
|
* console.log('We aborted the transaction (because ada already exists).');
|
|||
|
* } else {
|
|||
|
* console.log('User ada added!');
|
|||
|
* }
|
|||
|
* console.log("Ada's data: ", snapshot.val());
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param transactionUpdate A developer-supplied function which
|
|||
|
* will be passed the current data stored at this location (as a JavaScript
|
|||
|
* object). The function should return the new value it would like written (as
|
|||
|
* a JavaScript object). If `undefined` is returned (i.e. you return with no
|
|||
|
* arguments) the transaction will be aborted and the data at this location
|
|||
|
* will not be modified.
|
|||
|
* @param onComplete A callback
|
|||
|
* function that will be called when the transaction completes. The callback
|
|||
|
* is passed three arguments: a possibly-null `Error`, a `boolean` indicating
|
|||
|
* whether the transaction was committed, and a `DataSnapshot` indicating the
|
|||
|
* final result. If the transaction failed abnormally, the first argument will
|
|||
|
* be an `Error` object indicating the failure cause. If the transaction
|
|||
|
* finished normally, but no data was committed because no data was returned
|
|||
|
* from `transactionUpdate`, then second argument will be false. If the
|
|||
|
* transaction completed and committed data to Firebase, the second argument
|
|||
|
* will be true. Regardless, the third argument will be a `DataSnapshot`
|
|||
|
* containing the resulting data in this location.
|
|||
|
* @param applyLocally By default, events are raised each time the
|
|||
|
* transaction update function runs. So if it is run multiple times, you may
|
|||
|
* see intermediate states. You can set this to false to suppress these
|
|||
|
* intermediate states and instead wait until the transaction has completed
|
|||
|
* before events are raised.
|
|||
|
* @return Returns a Promise that can optionally be used instead of the `onComplete`
|
|||
|
* callback to handle success and failure.
|
|||
|
*/
|
|||
|
transaction(
|
|||
|
transactionUpdate: (a: any) => any,
|
|||
|
onComplete?: (a: Error|null, b: boolean, c: admin.database.DataSnapshot|null) => any,
|
|||
|
applyLocally?: boolean
|
|||
|
): Promise<{
|
|||
|
committed: boolean,
|
|||
|
snapshot: admin.database.DataSnapshot|null
|
|||
|
}>;
|
|||
|
|
|||
|
/**
|
|||
|
* Writes multiple values to the Database at once.
|
|||
|
*
|
|||
|
* The `values` argument contains multiple property-value pairs that will be
|
|||
|
* written to the Database together. Each child property can either be a simple
|
|||
|
* property (for example, "name") or a relative path (for example,
|
|||
|
* "name/first") from the current location to the data to update.
|
|||
|
*
|
|||
|
* As opposed to the `set()` method, `update()` can be use to selectively update
|
|||
|
* only the referenced properties at the current location (instead of replacing
|
|||
|
* all the child properties at the current location).
|
|||
|
*
|
|||
|
* The effect of the write will be visible immediately, and the corresponding
|
|||
|
* events ('value', 'child_added', etc.) will be triggered. Synchronization of
|
|||
|
* the data to the Firebase servers will also be started, and the returned
|
|||
|
* Promise will resolve when complete. If provided, the `onComplete` callback
|
|||
|
* will be called asynchronously after synchronization has finished.
|
|||
|
*
|
|||
|
* A single `update()` will generate a single "value" event at the location
|
|||
|
* where the `update()` was performed, regardless of how many children were
|
|||
|
* modified.
|
|||
|
*
|
|||
|
* Note that modifying data with `update()` will cancel any pending
|
|||
|
* transactions at that location, so extreme care should be taken if mixing
|
|||
|
* `update()` and `transaction()` to modify the same data.
|
|||
|
*
|
|||
|
* Passing `null` to `update()` will remove the data at this location.
|
|||
|
*
|
|||
|
* See
|
|||
|
* {@link
|
|||
|
* https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html
|
|||
|
* Introducing multi-location updates and more}.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var adaNameRef = admin.database().ref('users/ada/name');
|
|||
|
* // Modify the 'first' and 'last' properties, but leave other data at
|
|||
|
* // adaNameRef unchanged.
|
|||
|
* adaNameRef.update({ first: 'Ada', last: 'Lovelace' });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param values Object containing multiple values.
|
|||
|
* @param onComplete Callback called when write to server is
|
|||
|
* complete.
|
|||
|
* @return Resolves when update on server is complete.
|
|||
|
*/
|
|||
|
update(values: Object, onComplete?: (a: Error|null) => any): Promise<void>;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @extends {admin.database.Reference}
|
|||
|
*/
|
|||
|
interface ThenableReference extends admin.database.Reference, Promise<admin.database.Reference> {}
|
|||
|
|
|||
|
function enableLogging(logger?: boolean|((message: string) => any), persistent?: boolean): any;
|
|||
|
}
|
|||
|
|
|||
|
declare namespace admin.database.ServerValue {
|
|||
|
var TIMESTAMP: number;
|
|||
|
}
|
|||
|
|
|||
|
type BaseMessage = {
|
|||
|
data?: {[key: string]: string};
|
|||
|
notification?: admin.messaging.Notification;
|
|||
|
android?: admin.messaging.AndroidConfig;
|
|||
|
webpush?: admin.messaging.WebpushConfig;
|
|||
|
apns?: admin.messaging.ApnsConfig;
|
|||
|
fcmOptions?: admin.messaging.FcmOptions;
|
|||
|
};
|
|||
|
|
|||
|
interface TokenMessage extends BaseMessage {
|
|||
|
token: string;
|
|||
|
}
|
|||
|
|
|||
|
interface TopicMessage extends BaseMessage {
|
|||
|
topic: string;
|
|||
|
}
|
|||
|
|
|||
|
interface ConditionMessage extends BaseMessage {
|
|||
|
condition: string;
|
|||
|
}
|
|||
|
|
|||
|
declare namespace admin.messaging {
|
|||
|
type Message = TokenMessage | TopicMessage | ConditionMessage;
|
|||
|
|
|||
|
interface MulticastMessage extends BaseMessage {
|
|||
|
tokens: string[];
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Represents the Android-specific options that can be included in an
|
|||
|
* {@link admin.messaging.Message}.
|
|||
|
*/
|
|||
|
interface AndroidConfig {
|
|||
|
|
|||
|
/**
|
|||
|
* Collapse key for the message. Collapse key serves as an identifier for a
|
|||
|
* group of messages that can be collapsed, so that only the last message gets
|
|||
|
* sent when delivery can be resumed. A maximum of four different collapse keys
|
|||
|
* may be active at any given time.
|
|||
|
*/
|
|||
|
collapseKey?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Priority of the message. Must be either `normal` or `high`.
|
|||
|
*/
|
|||
|
priority?: ('high'|'normal');
|
|||
|
|
|||
|
/**
|
|||
|
* Time-to-live duration of the message in milliseconds.
|
|||
|
*/
|
|||
|
ttl?: number;
|
|||
|
|
|||
|
/**
|
|||
|
* Package name of the application where the registration tokens must match
|
|||
|
* in order to receive the message.
|
|||
|
*/
|
|||
|
restrictedPackageName?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* A collection of data fields to be included in the message. All values must
|
|||
|
* be strings. When provided, overrides any data fields set on the top-level
|
|||
|
* `admin.messaging.Message`.}
|
|||
|
*/
|
|||
|
data?: {[key: string]: string};
|
|||
|
|
|||
|
/**
|
|||
|
* Android notification to be included in the message.
|
|||
|
*/
|
|||
|
notification?: AndroidNotification;
|
|||
|
|
|||
|
/**
|
|||
|
* Options for features provided by the FCM SDK for Android.
|
|||
|
*/
|
|||
|
fcmOptions?: AndroidFcmOptions;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Represents the Android-specific notification options that can be included in
|
|||
|
* {@link admin.messaging.AndroidConfig}.
|
|||
|
*/
|
|||
|
interface AndroidNotification {
|
|||
|
|
|||
|
/**
|
|||
|
* Title of the Android notification. When provided, overrides the title set via
|
|||
|
* `admin.messaging.Notification`.
|
|||
|
*/
|
|||
|
title?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Body of the Android notification. When provided, overrides the body set via
|
|||
|
* `admin.messaging.Notification`.
|
|||
|
*/
|
|||
|
body?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Icon resource for the Android notification.
|
|||
|
*/
|
|||
|
icon?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Notification icon color in `#rrggbb` format.
|
|||
|
*/
|
|||
|
color?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* File name of the sound to be played when the device receives the
|
|||
|
* notification.
|
|||
|
*/
|
|||
|
sound?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Notification tag. This is an identifier used to replace existing
|
|||
|
* notifications in the notification drawer. If not specified, each request
|
|||
|
* creates a new notification.
|
|||
|
*/
|
|||
|
tag?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Action associated with a user click on the notification. If specified, an
|
|||
|
* activity with a matching Intent Filter is launched when a user clicks on the
|
|||
|
* notification.
|
|||
|
*/
|
|||
|
clickAction?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Key of the body string in the app's string resource to use to localize the
|
|||
|
* body text.
|
|||
|
*
|
|||
|
*/
|
|||
|
bodyLocKey?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* An array of resource keys that will be used in place of the format
|
|||
|
* specifiers in `bodyLocKey`.
|
|||
|
*/
|
|||
|
bodyLocArgs?: string[];
|
|||
|
|
|||
|
/**
|
|||
|
* Key of the title string in the app's string resource to use to localize the
|
|||
|
* title text.
|
|||
|
*/
|
|||
|
titleLocKey?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* An array of resource keys that will be used in place of the format
|
|||
|
* specifiers in `titleLocKey`.
|
|||
|
*/
|
|||
|
titleLocArgs?: string[];
|
|||
|
|
|||
|
/**
|
|||
|
* The Android notification channel ID (new in Android O). The app must create
|
|||
|
* a channel with this channel ID before any notification with this channel ID
|
|||
|
* can be received. If you don't send this channel ID in the request, or if the
|
|||
|
* channel ID provided has not yet been created by the app, FCM uses the channel
|
|||
|
* ID specified in the app manifest.
|
|||
|
*/
|
|||
|
channelId?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Represents options for features provided by the FCM SDK for Android.
|
|||
|
*/
|
|||
|
interface AndroidFcmOptions {
|
|||
|
|
|||
|
/**
|
|||
|
* The label associated with the message's analytics data.
|
|||
|
*/
|
|||
|
analyticsLabel?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Represents the APNs-specific options that can be included in an
|
|||
|
* {@link admin.messaging.Message}. Refer to
|
|||
|
* [Apple documentation](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html)
|
|||
|
* for various headers and payload fields supported by APNs.
|
|||
|
*/
|
|||
|
interface ApnsConfig {
|
|||
|
|
|||
|
/**
|
|||
|
* A collection of APNs headers. Header values must be strings.
|
|||
|
*/
|
|||
|
headers?: {[key: string]: string};
|
|||
|
|
|||
|
/**
|
|||
|
* An APNs payload to be included in the message.
|
|||
|
*/
|
|||
|
payload?: ApnsPayload;
|
|||
|
|
|||
|
/**
|
|||
|
* Options for features provided by the FCM SDK for iOS.
|
|||
|
*/
|
|||
|
fcmOptions?: ApnsFcmOptions;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Represents the payload of an APNs message. Mainly consists of the `aps`
|
|||
|
* dictionary. But may also contain other arbitrary custom keys.
|
|||
|
*/
|
|||
|
interface ApnsPayload {
|
|||
|
|
|||
|
/**
|
|||
|
* The `aps` dictionary to be included in the message.
|
|||
|
*/
|
|||
|
aps: Aps;
|
|||
|
[customData: string]: object;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Represents the [aps dictionary](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html)
|
|||
|
* that is part of APNs messages.
|
|||
|
*/
|
|||
|
interface Aps {
|
|||
|
|
|||
|
/**
|
|||
|
* Alert to be included in the message. This may be a string or an object of
|
|||
|
* type `admin.messaging.ApsAlert`.
|
|||
|
*/
|
|||
|
alert?: string | ApsAlert;
|
|||
|
|
|||
|
/**
|
|||
|
* Badge to be displayed with the message. Set to 0 to remove the badge. When
|
|||
|
* not specified, the badge will remain unchanged.
|
|||
|
*/
|
|||
|
badge?: number;
|
|||
|
|
|||
|
/**
|
|||
|
* Sound to be played with the message.
|
|||
|
*/
|
|||
|
sound?: string | CriticalSound;
|
|||
|
|
|||
|
/**
|
|||
|
* Specifies whether to configure a background update notification.
|
|||
|
*/
|
|||
|
contentAvailable?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Specifies whether to set the `mutable-content` property on the message
|
|||
|
* so the clients can modify the notification via app extensions.
|
|||
|
*/
|
|||
|
mutableContent?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Type of the notification.
|
|||
|
*/
|
|||
|
category?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* An app-specific identifier for grouping notifications.
|
|||
|
*/
|
|||
|
threadId?: string;
|
|||
|
[customData: string]: any;
|
|||
|
}
|
|||
|
|
|||
|
interface ApsAlert {
|
|||
|
title?: string;
|
|||
|
subtitle?: string;
|
|||
|
body?: string;
|
|||
|
locKey?: string;
|
|||
|
locArgs?: string[];
|
|||
|
titleLocKey?: string;
|
|||
|
titleLocArgs?: string[];
|
|||
|
subtitleLocKey?: string;
|
|||
|
subtitleLocArgs?: string[];
|
|||
|
actionLocKey?: string;
|
|||
|
launchImage?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Represents a critical sound configuration that can be included in the
|
|||
|
* `aps` dictionary of an APNs payload.
|
|||
|
*/
|
|||
|
interface CriticalSound {
|
|||
|
|
|||
|
/**
|
|||
|
* The critical alert flag. Set to `true` to enable the critical alert.
|
|||
|
*/
|
|||
|
critical?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* The name of a sound file in the app's main bundle or in the `Library/Sounds`
|
|||
|
* folder of the app's container directory. Specify the string "default" to play
|
|||
|
* the system sound.
|
|||
|
*/
|
|||
|
name: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The volume for the critical alert's sound. Must be a value between 0.0
|
|||
|
* (silent) and 1.0 (full volume).
|
|||
|
*/
|
|||
|
volume?: number;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Represents options for features provided by the FCM SDK for iOS.
|
|||
|
*/
|
|||
|
interface ApnsFcmOptions {
|
|||
|
|
|||
|
/**
|
|||
|
* The label associated with the message's analytics data.
|
|||
|
*/
|
|||
|
analyticsLabel?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Represents platform-independent options for features provided by the FCM SDKs.
|
|||
|
*/
|
|||
|
interface FcmOptions {
|
|||
|
|
|||
|
/**
|
|||
|
* The label associated with the message's analytics data.
|
|||
|
*/
|
|||
|
analyticsLabel?: string;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* A notification that can be included in {@link admin.messaging.Message}.
|
|||
|
*/
|
|||
|
interface Notification {
|
|||
|
/**
|
|||
|
* The title of the notification.
|
|||
|
*/
|
|||
|
title?: string;
|
|||
|
/**
|
|||
|
* The notification body
|
|||
|
*/
|
|||
|
body?: string;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Represents the WebPush protocol options that can be included in an
|
|||
|
* {@link admin.messaging.Message}.
|
|||
|
*/
|
|||
|
interface WebpushConfig {
|
|||
|
|
|||
|
/**
|
|||
|
* A collection of WebPush headers. Header values must be strings.
|
|||
|
*
|
|||
|
* See [WebPush specification](https://tools.ietf.org/html/rfc8030#section-5)
|
|||
|
* for supported headers.
|
|||
|
*/
|
|||
|
headers?: {[key: string]: string};
|
|||
|
|
|||
|
/**
|
|||
|
* A collection of data fields.
|
|||
|
*/
|
|||
|
data?: {[key: string]: string};
|
|||
|
|
|||
|
/**
|
|||
|
* A WebPush notification payload to be included in the message.
|
|||
|
*/
|
|||
|
notification?: WebpushNotification;
|
|||
|
|
|||
|
/**
|
|||
|
* Options for features provided by the FCM SDK for Web.
|
|||
|
*/
|
|||
|
fcmOptions?: WebpushFcmOptions;
|
|||
|
}
|
|||
|
|
|||
|
/** Represents options for features provided by the FCM SDK for Web
|
|||
|
* (which are not part of the Webpush standard).
|
|||
|
*/
|
|||
|
interface WebpushFcmOptions {
|
|||
|
|
|||
|
/**
|
|||
|
* The link to open when the user clicks on the notification.
|
|||
|
* For all URL values, HTTPS is required.
|
|||
|
*/
|
|||
|
link?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Represents the WebPush-specific notification options that can be included in
|
|||
|
* {@link admin.messaging.WebpushConfig}. This supports most of the standard
|
|||
|
* options as defined in the Web Notification
|
|||
|
* [specification](https://developer.mozilla.org/en-US/docs/Web/API/notification/Notification).
|
|||
|
*/
|
|||
|
interface WebpushNotification {
|
|||
|
|
|||
|
/**
|
|||
|
* Title text of the notification.
|
|||
|
*/
|
|||
|
title?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* An array of notification actions representing the actions
|
|||
|
* available to the user when the notification is presented.
|
|||
|
*/
|
|||
|
actions?: Array<{
|
|||
|
|
|||
|
/**
|
|||
|
* An action available to the user when the notification is presented
|
|||
|
*/
|
|||
|
action: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Optional icon for a notification action.
|
|||
|
*/
|
|||
|
icon?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Title of the notification action.
|
|||
|
*/
|
|||
|
title: string;
|
|||
|
}>;
|
|||
|
|
|||
|
/**
|
|||
|
* URL of the image used to represent the notification when there is
|
|||
|
* not enough space to display the notification itself.
|
|||
|
*/
|
|||
|
badge?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Body text of the notification.
|
|||
|
*/
|
|||
|
body?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Arbitrary data that you want associated with the notification.
|
|||
|
* This can be of any data type.
|
|||
|
*/
|
|||
|
data?: any;
|
|||
|
|
|||
|
/**
|
|||
|
* The direction in which to display the notification. Must be one
|
|||
|
* of `auto`, `ltr` or `rtl`.
|
|||
|
*/
|
|||
|
dir?: 'auto' | 'ltr' | 'rtl';
|
|||
|
|
|||
|
/**
|
|||
|
* URL to the notification icon.
|
|||
|
*/
|
|||
|
icon?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* URL of an image to be displayed in the notification.
|
|||
|
*/
|
|||
|
image?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The notification's language as a BCP 47 language tag.
|
|||
|
*/
|
|||
|
lang?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* A boolean specifying whether the user should be notified after a
|
|||
|
* new notification replaces an old one. Defaults to false.
|
|||
|
*/
|
|||
|
renotify?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* Indicates that a notification should remain active until the user
|
|||
|
* clicks or dismisses it, rather than closing automatically.
|
|||
|
* Defaults to false.
|
|||
|
*/
|
|||
|
requireInteraction?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* A boolean specifying whether the notification should be silent.
|
|||
|
* Defaults to false.
|
|||
|
*/
|
|||
|
silent?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* An identifying tag for the notification.
|
|||
|
*/
|
|||
|
tag?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Timestamp of the notification. Refer to
|
|||
|
* https://developer.mozilla.org/en-US/docs/Web/API/notification/timestamp
|
|||
|
* for details.
|
|||
|
*/
|
|||
|
timestamp?: number;
|
|||
|
|
|||
|
/**
|
|||
|
* A vibration pattern for the device's vibration hardware to emit
|
|||
|
* when the notification fires.
|
|||
|
*/
|
|||
|
vibrate?: number | number[];
|
|||
|
[key: string]: any;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Interface representing an FCM legacy API data message payload. Data
|
|||
|
* messages let developers send up to 4KB of custom key-value pairs. The
|
|||
|
* keys and values must both be strings. Keys can be any custom string,
|
|||
|
* except for the following reserved strings:
|
|||
|
*
|
|||
|
* * `"from"`
|
|||
|
* * Anything starting with `"google."`.
|
|||
|
*
|
|||
|
* See [Build send requests](/docs/cloud-messaging/send-message)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*/
|
|||
|
interface DataMessagePayload {
|
|||
|
[key: string]: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing an FCM legacy API notification message payload.
|
|||
|
* Notification messages let developers send up to 4KB of predefined
|
|||
|
* key-value pairs. Accepted keys are outlined below.
|
|||
|
*
|
|||
|
* See [Build send requests](/docs/cloud-messaging/send-message)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*/
|
|||
|
interface NotificationMessagePayload {
|
|||
|
tag?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The notification's body text.
|
|||
|
*
|
|||
|
* **Platforms:** iOS, Android, Web
|
|||
|
*/
|
|||
|
body?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The notification's icon.
|
|||
|
*
|
|||
|
* **Android:** Sets the notification icon to `myicon` for drawable resource
|
|||
|
* `myicon`. If you don't send this key in the request, FCM displays the
|
|||
|
* launcher icon specified in your app manifest.
|
|||
|
*
|
|||
|
* **Web:** The URL to use for the notification's icon.
|
|||
|
*
|
|||
|
* **Platforms:** Android, Web
|
|||
|
*/
|
|||
|
icon?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The value of the badge on the home screen app icon.
|
|||
|
*
|
|||
|
* If not specified, the badge is not changed.
|
|||
|
*
|
|||
|
* If set to `0`, the badge is removed.
|
|||
|
*
|
|||
|
* **Platforms:** iOS
|
|||
|
*/
|
|||
|
badge?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The notification icon's color, expressed in `#rrggbb` format.
|
|||
|
*
|
|||
|
* **Platforms:** Android
|
|||
|
*/
|
|||
|
color?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Identifier used to replace existing notifications in the notification drawer.
|
|||
|
*
|
|||
|
* If not specified, each request creates a new notification.
|
|||
|
*
|
|||
|
* If specified and a notification with the same tag is already being shown,
|
|||
|
* the new notification replaces the existing one in the notification drawer.
|
|||
|
*
|
|||
|
* **Platforms:** Android
|
|||
|
*/
|
|||
|
sound?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The notification's title.
|
|||
|
*
|
|||
|
* **Platforms:** iOS, Android, Web
|
|||
|
*/
|
|||
|
title?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The key to the body string in the app's string resources to use to localize
|
|||
|
* the body text to the user's current localization.
|
|||
|
*
|
|||
|
* **iOS:** Corresponds to `loc-key` in the APNs payload. See
|
|||
|
* [Payload Key Reference](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html)
|
|||
|
* and
|
|||
|
* [Localizing the Content of Your Remote Notifications](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW9)
|
|||
|
* for more information.
|
|||
|
*
|
|||
|
* **Android:** See
|
|||
|
* [String Resources](http://developer.android.com/guide/topics/resources/string-resource.html) * for more information.
|
|||
|
*
|
|||
|
* **Platforms:** iOS, Android
|
|||
|
*/
|
|||
|
bodyLocKey?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Variable string values to be used in place of the format specifiers in
|
|||
|
* `body_loc_key` to use to localize the body text to the user's current
|
|||
|
* localization.
|
|||
|
*
|
|||
|
* The value should be a stringified JSON array.
|
|||
|
*
|
|||
|
* **iOS:** Corresponds to `loc-args` in the APNs payload. See
|
|||
|
* [Payload Key Reference](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html)
|
|||
|
* and
|
|||
|
* [Localizing the Content of Your Remote Notifications](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW9)
|
|||
|
* for more information.
|
|||
|
*
|
|||
|
* **Android:** See
|
|||
|
* [Formatting and Styling](http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling)
|
|||
|
* for more information.
|
|||
|
*
|
|||
|
* **Platforms:** iOS, Android
|
|||
|
*/
|
|||
|
bodyLocArgs?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Action associated with a user click on the notification. If specified, an
|
|||
|
* activity with a matching Intent Filter is launched when a user clicks on the
|
|||
|
* notification.
|
|||
|
*
|
|||
|
* * **Platforms:** Android
|
|||
|
*/
|
|||
|
clickAction?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The key to the title string in the app's string resources to use to localize
|
|||
|
* the title text to the user's current localization.
|
|||
|
*
|
|||
|
* **iOS:** Corresponds to `title-loc-key` in the APNs payload. See
|
|||
|
* [Payload Key Reference](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html)
|
|||
|
* and
|
|||
|
* [Localizing the Content of Your Remote Notifications](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW9)
|
|||
|
* for more information.
|
|||
|
*
|
|||
|
* **Android:** See
|
|||
|
* [String Resources](http://developer.android.com/guide/topics/resources/string-resource.html)
|
|||
|
* for more information.
|
|||
|
*
|
|||
|
* **Platforms:** iOS, Android
|
|||
|
*/
|
|||
|
titleLocKey?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Variable string values to be used in place of the format specifiers in
|
|||
|
* `title_loc_key` to use to localize the title text to the user's current
|
|||
|
* localization.
|
|||
|
*
|
|||
|
* The value should be a stringified JSON array.
|
|||
|
*
|
|||
|
* **iOS:** Corresponds to `title-loc-args` in the APNs payload. See
|
|||
|
* [Payload Key Reference](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html)
|
|||
|
* and
|
|||
|
* [Localizing the Content of Your Remote Notifications](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW9)
|
|||
|
* for more information.
|
|||
|
*
|
|||
|
* **Android:** See
|
|||
|
* [Formatting and Styling](http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling)
|
|||
|
* for more information.
|
|||
|
*
|
|||
|
* **Platforms:** iOS, Android
|
|||
|
*/
|
|||
|
titleLocArgs?: string;
|
|||
|
[key: string]: string | undefined;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing a Firebase Cloud Messaging message payload. One or
|
|||
|
* both of the `data` and `notification` keys are required.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Build send requests](/docs/cloud-messaging/send-message)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*/
|
|||
|
interface MessagingPayload {
|
|||
|
|
|||
|
/**
|
|||
|
* The data message payload.
|
|||
|
*/
|
|||
|
data?: admin.messaging.DataMessagePayload;
|
|||
|
|
|||
|
/**
|
|||
|
* The notification message payload.
|
|||
|
*/
|
|||
|
notification?: admin.messaging.NotificationMessagePayload;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Interface representing the options that can be provided when sending a
|
|||
|
* message via the FCM legacy APIs.
|
|||
|
*
|
|||
|
* See [Build send requests](/docs/cloud-messaging/send-message)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*/
|
|||
|
interface MessagingOptions {
|
|||
|
|
|||
|
/**
|
|||
|
* Whether or not the message should actually be sent. When set to `true`,
|
|||
|
* allows developers to test a request without actually sending a message. When
|
|||
|
* set to `false`, the message will be sent.
|
|||
|
*
|
|||
|
* **Default value:** `false`
|
|||
|
*/
|
|||
|
dryRun?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* The priority of the message. Valid values are `"normal"` and `"high".` On
|
|||
|
* iOS, these correspond to APNs priorities `5` and `10`.
|
|||
|
*
|
|||
|
* By default, notification messages are sent with high priority, and data
|
|||
|
* messages are sent with normal priority. Normal priority optimizes the client
|
|||
|
* app's battery consumption and should be used unless immediate delivery is
|
|||
|
* required. For messages with normal priority, the app may receive the message
|
|||
|
* with unspecified delay.
|
|||
|
*
|
|||
|
* When a message is sent with high priority, it is sent immediately, and the
|
|||
|
* app can wake a sleeping device and open a network connection to your server.
|
|||
|
*
|
|||
|
* For more information, see
|
|||
|
* [Setting the priority of a message](/docs/cloud-messaging/concept-options#setting-the-priority-of-a-message).
|
|||
|
*
|
|||
|
* **Default value:** `"high"` for notification messages, `"normal"` for data
|
|||
|
* messages
|
|||
|
*/
|
|||
|
priority?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* How long (in seconds) the message should be kept in FCM storage if the device
|
|||
|
* is offline. The maximum time to live supported is four weeks, and the default
|
|||
|
* value is also four weeks. For more information, see
|
|||
|
* [Setting the lifespan of a message](/docs/cloud-messaging/concept-options#ttl).
|
|||
|
*
|
|||
|
* **Default value:** `2419200` (representing four weeks, in seconds)
|
|||
|
*/
|
|||
|
timeToLive?: number;
|
|||
|
|
|||
|
/**
|
|||
|
* String identifying a group of messages (for example, "Updates Available")
|
|||
|
* that can be collapsed, so that only the last message gets sent when delivery
|
|||
|
* can be resumed. This is used to avoid sending too many of the same messages
|
|||
|
* when the device comes back online or becomes active.
|
|||
|
*
|
|||
|
* There is no guarantee of the order in which messages get sent.
|
|||
|
*
|
|||
|
* A maximum of four different collapse keys is allowed at any given time. This
|
|||
|
* means FCM server can simultaneously store four different
|
|||
|
* send-to-sync messages per client app. If you exceed this number, there is no
|
|||
|
* guarantee which four collapse keys the FCM server will keep.
|
|||
|
*
|
|||
|
* **Default value:** None
|
|||
|
*/
|
|||
|
collapseKey?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* On iOS, use this field to represent `mutable-content` in the APNs payload.
|
|||
|
* When a notification is sent and this is set to `true`, the content of the
|
|||
|
* notification can be modified before it is displayed, using a
|
|||
|
* [Notification Service app extension](https://developer.apple.com/reference/usernotifications/unnotificationserviceextension)
|
|||
|
*
|
|||
|
* On Android and Web, this parameter will be ignored.
|
|||
|
*
|
|||
|
* **Default value:** `false`
|
|||
|
*/
|
|||
|
mutableContent?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* On iOS, use this field to represent `content-available` in the APNs payload.
|
|||
|
* When a notification or data message is sent and this is set to `true`, an
|
|||
|
* inactive client app is awoken. On Android, data messages wake the app by
|
|||
|
* default. On Chrome, this flag is currently not supported.
|
|||
|
*
|
|||
|
* **Default value:** `false`
|
|||
|
*/
|
|||
|
contentAvailable?: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* The package name of the application which the registration tokens must match
|
|||
|
* in order to receive the message.
|
|||
|
*
|
|||
|
* **Default value:** None
|
|||
|
*/
|
|||
|
restrictedPackageName?: string;
|
|||
|
[key: string]: any | undefined;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the status of a message sent to an individual device
|
|||
|
* via the FCM legacy APIs.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Send to individual devices](/docs/cloud-messaging/admin/send-messages#send_to_individual_devices)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*/
|
|||
|
interface MessagingDeviceResult {
|
|||
|
|
|||
|
/**
|
|||
|
* The error that occurred when processing the message for the recipient.
|
|||
|
*/
|
|||
|
error?: admin.FirebaseError;
|
|||
|
|
|||
|
/**
|
|||
|
* A unique ID for the successfully processed message.
|
|||
|
*/
|
|||
|
messageId?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The canonical registration token for the client app that the message was
|
|||
|
* processed and sent to. You should use this value as the registration token
|
|||
|
* for future requests. Otherwise, future messages might be rejected.
|
|||
|
*/
|
|||
|
canonicalRegistrationToken?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the server response from the legacy
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#sendToDevice `sendToDevice()`} method.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Send to individual devices](/docs/cloud-messaging/admin/send-messages#send_to_individual_devices)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*/
|
|||
|
interface MessagingDevicesResponse {
|
|||
|
|
|||
|
/**
|
|||
|
* The number of results that contain a canonical registration token. A
|
|||
|
* canonical registration token is the registration token corresponding to the
|
|||
|
* last registration requested by the client app. This is the token that you
|
|||
|
* should use when sending future messages to the device.
|
|||
|
*
|
|||
|
* You can access the canonical registration tokens within the
|
|||
|
* [`results`](#results) property.
|
|||
|
*/
|
|||
|
canonicalRegistrationTokenCount: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The number of messages that could not be processed and resulted in an error.
|
|||
|
*/
|
|||
|
failureCount: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The unique ID number identifying this multicast message.
|
|||
|
*/
|
|||
|
multicastId: number;
|
|||
|
|
|||
|
/**
|
|||
|
* An array of `MessagingDeviceResult` objects representing the status of the
|
|||
|
* processed messages. The objects are listed in the same order as in the
|
|||
|
* request. That is, for each registration token in the request, its result has
|
|||
|
* the same index in this array. If only a single registration token is
|
|||
|
* provided, this array will contain a single object.
|
|||
|
*/
|
|||
|
results: admin.messaging.MessagingDeviceResult[];
|
|||
|
|
|||
|
/**
|
|||
|
* The number of messages that were successfully processed and sent.
|
|||
|
*/
|
|||
|
successCount: number;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Interface representing the server response from the
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#sendToDeviceGroup `sendToDeviceGroup()`}
|
|||
|
* method.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Send messages to device groups](/docs/cloud-messaging/send-message?authuser=0#send_messages_to_device_groups)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*/
|
|||
|
interface MessagingDeviceGroupResponse {
|
|||
|
|
|||
|
/**
|
|||
|
* The number of messages that could not be processed and resulted in an error.
|
|||
|
*/
|
|||
|
successCount: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The number of messages that could not be processed and resulted in an error.
|
|||
|
*/
|
|||
|
failureCount: number;
|
|||
|
|
|||
|
/**
|
|||
|
* An array of registration tokens that failed to receive the message.
|
|||
|
*/
|
|||
|
failedRegistrationTokens: string[];
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the server response from the legacy
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#sendToTopic `sendToTopic()`} method.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Send to a topic](/docs/cloud-messaging/admin/send-messages#send_to_a_topic)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*/
|
|||
|
interface MessagingTopicResponse {
|
|||
|
|
|||
|
/**
|
|||
|
* The message ID for a successfully received request which FCM will attempt to
|
|||
|
* deliver to all subscribed devices.
|
|||
|
*/
|
|||
|
messageId: number;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the server response from the legacy
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#sendToCondition `sendToCondition()`} method.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Send to a condition](/docs/cloud-messaging/admin/send-messages#send_to_a_condition)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*/
|
|||
|
interface MessagingConditionResponse {
|
|||
|
|
|||
|
/**
|
|||
|
* The message ID for a successfully received request which FCM will attempt to
|
|||
|
* deliver to all subscribed devices.
|
|||
|
*/
|
|||
|
messageId: number;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the server response from the
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#subscribeToTopic `subscribeToTopic()`} and
|
|||
|
* {@link
|
|||
|
* admin.messaging.Messaging#unsubscribeFromTopic
|
|||
|
* `unsubscribeFromTopic()`}
|
|||
|
* methods.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Manage topics from the server](/docs/cloud-messaging/manage-topics)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*/
|
|||
|
interface MessagingTopicManagementResponse {
|
|||
|
|
|||
|
/**
|
|||
|
* The number of registration tokens that could not be subscribed to the topic
|
|||
|
* and resulted in an error.
|
|||
|
*/
|
|||
|
failureCount: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The number of registration tokens that were successfully subscribed to the
|
|||
|
* topic.
|
|||
|
*/
|
|||
|
successCount: number;
|
|||
|
|
|||
|
/**
|
|||
|
* An array of errors corresponding to the provided registration token(s). The
|
|||
|
* length of this array will be equal to [`failureCount`](#failureCount).
|
|||
|
*/
|
|||
|
errors: admin.FirebaseArrayIndexError[];
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Interface representing the server response from the
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#sendAll `sendAll()`} and
|
|||
|
* {@link https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#sendMulticast `sendMulticast()`} methods.
|
|||
|
*/
|
|||
|
interface BatchResponse {
|
|||
|
|
|||
|
/**
|
|||
|
* An array of responses, each corresponding to a message.
|
|||
|
*/
|
|||
|
responses: admin.messaging.SendResponse[];
|
|||
|
|
|||
|
/**
|
|||
|
* The number of messages that were successfully handed off for sending.
|
|||
|
*/
|
|||
|
successCount: number;
|
|||
|
|
|||
|
/**
|
|||
|
* The number of messages that resulted in errors when sending.
|
|||
|
*/
|
|||
|
failureCount: number;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Interface representing the status of an individual message that was sent as
|
|||
|
* part of a batch request.
|
|||
|
*/
|
|||
|
interface SendResponse {
|
|||
|
|
|||
|
/**
|
|||
|
* A boolean indicating if the message was successfully handed off to FCM or
|
|||
|
* not. When true, the `messageId` attribute is guaranteed to be set. When
|
|||
|
* false, the `error` attribute is guaranteed to be set.
|
|||
|
*/
|
|||
|
success: boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* A unique message ID string, if the message was handed off to FCM for
|
|||
|
* delivery.
|
|||
|
*
|
|||
|
*/
|
|||
|
messageId?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* An error, if the message was not handed off to FCM successfully.
|
|||
|
*/
|
|||
|
error?: admin.FirebaseError;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the {@link admin.messaging.Messaging `Messaging`} service for the
|
|||
|
* current app.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var messaging = app.messaging();
|
|||
|
* // The above is shorthand for:
|
|||
|
* // var messaging = admin.messaging(app);
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return The `Messaging` service for the current app.
|
|||
|
*/
|
|||
|
interface Messaging {
|
|||
|
/**
|
|||
|
* The {@link admin.app.App app} associated with the current `Messaging` service
|
|||
|
* instance.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var app = messaging.app;
|
|||
|
* ```
|
|||
|
*/
|
|||
|
app: admin.app.App;
|
|||
|
|
|||
|
/**
|
|||
|
* Sends the given message via FCM.
|
|||
|
*
|
|||
|
* @param message The message payload.
|
|||
|
* @param dryRun Whether to send the message in the dry-run
|
|||
|
* (validation only) mode.
|
|||
|
* @return A promise fulfilled with a unique message ID
|
|||
|
* string after the message has been successfully handed off to the FCM
|
|||
|
* service for delivery.
|
|||
|
*/
|
|||
|
send(message: admin.messaging.Message, dryRun?: boolean): Promise<string>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sends all the messages in the given array via Firebase Cloud Messaging.
|
|||
|
* Employs batching to send the entire list as a single RPC call. Compared
|
|||
|
* to the `send()` method, this method is a significantly more efficient way
|
|||
|
* to send multiple messages.
|
|||
|
*
|
|||
|
* The responses list obtained from the return value
|
|||
|
* corresponds to the order of tokens in the `MulticastMessage`. An error
|
|||
|
* from this method indicates a total failure -- i.e. none of the messages in
|
|||
|
* the list could be sent. Partial failures are indicated by a `BatchResponse`
|
|||
|
* return value.
|
|||
|
*
|
|||
|
* @param messages A non-empty array
|
|||
|
* containing up to 100 messages.
|
|||
|
* @param dryRun Whether to send the messages in the dry-run
|
|||
|
* (validation only) mode.
|
|||
|
* @return A Promise fulfilled with an object representing the result of the
|
|||
|
* send operation.
|
|||
|
*/
|
|||
|
sendAll(
|
|||
|
messages: Array<admin.messaging.Message>,
|
|||
|
dryRun?: boolean
|
|||
|
): Promise<admin.messaging.BatchResponse>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sends the given multicast message to all the FCM registration tokens
|
|||
|
* specified in it.
|
|||
|
*
|
|||
|
* This method uses the `sendAll()` API under the hood to send the given
|
|||
|
* message to all the target recipients. The responses list obtained from the
|
|||
|
* return value corresponds to the order of tokens in the `MulticastMessage`.
|
|||
|
* An error from this method indicates a total failure -- i.e. the message was
|
|||
|
* not sent to any of the tokens in the list. Partial failures are indicated by
|
|||
|
* a `BatchResponse` return value.
|
|||
|
*
|
|||
|
* @param message A multicast message
|
|||
|
* containing up to 100 tokens.
|
|||
|
* @param dryRun Whether to send the message in the dry-run
|
|||
|
* (validation only) mode.
|
|||
|
* @return A Promise fulfilled with an object representing the result of the
|
|||
|
* send operation.
|
|||
|
*/
|
|||
|
sendMulticast(
|
|||
|
message: admin.messaging.MulticastMessage,
|
|||
|
dryRun?: boolean
|
|||
|
): Promise<admin.messaging.BatchResponse>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sends an FCM message to a single device corresponding to the provided
|
|||
|
* registration token.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Send to individual devices](/docs/cloud-messaging/admin/legacy-fcm#send_to_individual_devices)
|
|||
|
* for code samples and detailed documentation. Takes either a
|
|||
|
* `registrationToken` to send to a single device or a
|
|||
|
* `registrationTokens` parameter containing an array of tokens to send
|
|||
|
* to multiple devices.
|
|||
|
*
|
|||
|
* @param registrationToken A device registration token or an array of
|
|||
|
* device registration tokens to which the message should be sent.
|
|||
|
* @param payload The message payload.
|
|||
|
* @param options Optional options to
|
|||
|
* alter the message.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the server's response after the message
|
|||
|
* has been sent.
|
|||
|
*/
|
|||
|
sendToDevice(
|
|||
|
registrationToken: string | string[],
|
|||
|
payload: admin.messaging.MessagingPayload,
|
|||
|
options?: admin.messaging.MessagingOptions
|
|||
|
): Promise<admin.messaging.MessagingDevicesResponse>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sends an FCM message to a device group corresponding to the provided
|
|||
|
* notification key.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Send to a device group](/docs/cloud-messaging/admin/legacy-fcm#send_to_a_device_group)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param notificationKey The notification key for the device group to
|
|||
|
* which to send the message.
|
|||
|
* @param payload The message payload.
|
|||
|
* @param options Optional options to
|
|||
|
* alter the message.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the server's response after the message
|
|||
|
* has been sent.
|
|||
|
*/
|
|||
|
sendToDeviceGroup(
|
|||
|
notificationKey: string,
|
|||
|
payload: admin.messaging.MessagingPayload,
|
|||
|
options?: admin.messaging.MessagingOptions
|
|||
|
): Promise<admin.messaging.MessagingDeviceGroupResponse>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sends an FCM message to a topic.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Send to a topic](/docs/cloud-messaging/admin/legacy-fcm#send_to_a_topic)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param topic The topic to which to send the message.
|
|||
|
* @param payload The message payload.
|
|||
|
* @param options Optional options to
|
|||
|
* alter the message.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the server's response after the message
|
|||
|
* has been sent.
|
|||
|
*/
|
|||
|
sendToTopic(
|
|||
|
topic: string,
|
|||
|
payload: admin.messaging.MessagingPayload,
|
|||
|
options?: admin.messaging.MessagingOptions
|
|||
|
): Promise<admin.messaging.MessagingTopicResponse>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sends an FCM message to a condition.
|
|||
|
*
|
|||
|
* See
|
|||
|
* [Send to a condition](/docs/cloud-messaging/admin/legacy-fcm#send_to_a_condition)
|
|||
|
* for code samples and detailed documentation.
|
|||
|
*
|
|||
|
* @param condition The condition determining to which topics to send
|
|||
|
* the message.
|
|||
|
* @param payload The message payload.
|
|||
|
* @param options Optional options to
|
|||
|
* alter the message.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the server's response after the message
|
|||
|
* has been sent.
|
|||
|
*/
|
|||
|
sendToCondition(
|
|||
|
condition: string,
|
|||
|
payload: admin.messaging.MessagingPayload,
|
|||
|
options?: admin.messaging.MessagingOptions
|
|||
|
): Promise<admin.messaging.MessagingConditionResponse>;
|
|||
|
|
|||
|
/**
|
|||
|
* Subscribes a device to an FCM topic.
|
|||
|
*
|
|||
|
* See [Subscribe to a
|
|||
|
* topic](/docs/cloud-messaging/manage-topics#suscribe_and_unsubscribe_using_the)
|
|||
|
* for code samples and detailed documentation. Optionally, you can provide an
|
|||
|
* array of tokens to subscribe multiple devices.
|
|||
|
*
|
|||
|
* @param registrationTokens A token or array of registration tokens
|
|||
|
* for the devices to subscribe to the topic.
|
|||
|
* @param topic The topic to which to subscribe.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the server's response after the device has been
|
|||
|
* subscribed to the topic.
|
|||
|
*/
|
|||
|
subscribeToTopic(
|
|||
|
registrationTokens: string | string[],
|
|||
|
topic: string
|
|||
|
): Promise<admin.messaging.MessagingTopicManagementResponse>;
|
|||
|
|
|||
|
/**
|
|||
|
* Unsubscribes a device from an FCM topic.
|
|||
|
*
|
|||
|
* See [Unsubscribe from a
|
|||
|
* topic](/docs/cloud-messaging/admin/manage-topic-subscriptions#unsubscribe_from_a_topic)
|
|||
|
* for code samples and detailed documentation. Optionally, you can provide an
|
|||
|
* array of tokens to unsubscribe multiple devices.
|
|||
|
*
|
|||
|
* @param registrationTokens A device registration token or an array of
|
|||
|
* device registration tokens to unsubscribe from the topic.
|
|||
|
* @param topic The topic from which to unsubscribe.
|
|||
|
*
|
|||
|
* @return A promise fulfilled with the server's response after the device has been
|
|||
|
* unsubscribed from the topic.
|
|||
|
*/
|
|||
|
unsubscribeFromTopic(
|
|||
|
registrationTokens: string | string[],
|
|||
|
topic: string
|
|||
|
): Promise<admin.messaging.MessagingTopicManagementResponse>;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
declare namespace admin.storage {
|
|||
|
|
|||
|
/**
|
|||
|
* The default `Storage` service if no
|
|||
|
* app is provided or the `Storage` service associated with the provided
|
|||
|
* app.
|
|||
|
*/
|
|||
|
interface Storage {
|
|||
|
/**
|
|||
|
* Optional app whose `Storage` service to
|
|||
|
* return. If not provided, the default `Storage` service will be returned.
|
|||
|
*/
|
|||
|
app: admin.app.App;
|
|||
|
/**
|
|||
|
* @returns A [Bucket](https://cloud.google.com/nodejs/docs/reference/storage/latest/Bucket)
|
|||
|
* instance as defined in the `@google-cloud/storage` package.
|
|||
|
*/
|
|||
|
bucket(name?: string): Bucket;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
declare namespace admin.firestore {
|
|||
|
export import v1beta1 = _firestore.v1beta1;
|
|||
|
export import v1 = _firestore.v1;
|
|||
|
|
|||
|
export import CollectionReference = _firestore.CollectionReference;
|
|||
|
export import DocumentData = _firestore.DocumentData;
|
|||
|
export import DocumentReference = _firestore.DocumentReference;
|
|||
|
export import DocumentSnapshot = _firestore.DocumentSnapshot;
|
|||
|
export import FieldPath = _firestore.FieldPath;
|
|||
|
export import FieldValue = _firestore.FieldValue;
|
|||
|
export import Firestore = _firestore.Firestore;
|
|||
|
export import GeoPoint = _firestore.GeoPoint;
|
|||
|
export import Query = _firestore.Query;
|
|||
|
export import QueryDocumentSnapshot = _firestore.QueryDocumentSnapshot;
|
|||
|
export import QuerySnapshot = _firestore.QuerySnapshot;
|
|||
|
export import Timestamp = _firestore.Timestamp;
|
|||
|
export import Transaction = _firestore.Transaction;
|
|||
|
export import WriteBatch = _firestore.WriteBatch;
|
|||
|
export import WriteResult = _firestore.WriteResult;
|
|||
|
|
|||
|
export import setLogFunction = _firestore.setLogFunction;
|
|||
|
}
|
|||
|
|
|||
|
declare namespace admin.instanceId {
|
|||
|
/**
|
|||
|
* Gets the {@link admin.instanceId.InstanceId `InstanceId`} service for the
|
|||
|
* current app.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var instanceId = app.instanceId();
|
|||
|
* // The above is shorthand for:
|
|||
|
* // var instanceId = admin.instanceId(app);
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @return The `InstanceId` service for the
|
|||
|
* current app.
|
|||
|
*/
|
|||
|
interface InstanceId {
|
|||
|
app: admin.app.App;
|
|||
|
|
|||
|
/**
|
|||
|
* Deletes the specified instance ID and the associated data from Firebase.
|
|||
|
*
|
|||
|
* Note that Google Analytics for Firebase uses its own form of Instance ID to
|
|||
|
* keep track of analytics data. Therefore deleting a Firebase Instance ID does
|
|||
|
* not delete Analytics data. See
|
|||
|
* [Delete an Instance ID](/support/privacy/manage-iids#delete_an_instance_id)
|
|||
|
* for more information.
|
|||
|
*
|
|||
|
* @param instanceId The instance ID to be deleted.
|
|||
|
*
|
|||
|
* @return A promise fulfilled when the instance ID is deleted.
|
|||
|
*/
|
|||
|
deleteInstanceId(instanceId: string): Promise<void>;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
declare namespace admin.projectManagement {
|
|||
|
|
|||
|
/**
|
|||
|
* A SHA-1 or SHA-256 certificate.
|
|||
|
*
|
|||
|
* Do not call this constructor directly. Instead, use
|
|||
|
* [`projectManagement.shaCertificate()`](admin.projectManagement.ProjectManagement#shaCertificate).
|
|||
|
*/
|
|||
|
interface ShaCertificate {
|
|||
|
|
|||
|
/**
|
|||
|
* The SHA certificate type.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var certType = shaCertificate.certType;
|
|||
|
* ```
|
|||
|
*/
|
|||
|
certType: ('sha1' | 'sha256');
|
|||
|
|
|||
|
/**
|
|||
|
* The SHA-1 or SHA-256 hash for this certificate.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var shaHash = shaCertificate.shaHash;
|
|||
|
* ```
|
|||
|
*/
|
|||
|
shaHash: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The fully-qualified resource name that identifies this sha-key.
|
|||
|
*
|
|||
|
* This is useful when manually constructing requests for Firebase's public API.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var resourceName = shaCertificate.resourceName;
|
|||
|
* ```
|
|||
|
*/
|
|||
|
resourceName?: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Metadata about a Firebase app.
|
|||
|
*/
|
|||
|
interface AppMetadata {
|
|||
|
|
|||
|
/**
|
|||
|
* The globally unique, Firebase-assigned identifier of the app.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var appId = appMetadata.appId;
|
|||
|
* ```
|
|||
|
*/
|
|||
|
appId: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The optional user-assigned display name of the app.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var displayName = appMetadata.displayName;
|
|||
|
* ```
|
|||
|
*/
|
|||
|
displayName?: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The development platform of the app. Supporting Android and iOS app platforms.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var platform = AppPlatform.ANDROID;
|
|||
|
* ```
|
|||
|
*/
|
|||
|
platform: AppPlatform;
|
|||
|
|
|||
|
/**
|
|||
|
* The globally unique, user-assigned ID of the parent project for the app.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var projectId = appMetadata.projectId;
|
|||
|
* ```
|
|||
|
*/
|
|||
|
projectId: string;
|
|||
|
|
|||
|
/**
|
|||
|
* The fully-qualified resource name that identifies this app.
|
|||
|
*
|
|||
|
* This is useful when manually constructing requests for Firebase's public API.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var resourceName = androidAppMetadata.resourceName;
|
|||
|
* ```
|
|||
|
*/
|
|||
|
resourceName: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Platforms with which a Firebase App can be associated.
|
|||
|
*/
|
|||
|
enum AppPlatform {
|
|||
|
|
|||
|
/**
|
|||
|
* Unknown state. This is only used for distinguishing unset values.
|
|||
|
*/
|
|||
|
PLATFORM_UNKNOWN = 'PLATFORM_UNKNOWN',
|
|||
|
|
|||
|
/**
|
|||
|
* The Firebase App is associated with iOS.
|
|||
|
*/
|
|||
|
IOS = 'IOS',
|
|||
|
|
|||
|
/**
|
|||
|
* The Firebase App is associated with Android.
|
|||
|
*/
|
|||
|
ANDROID = 'ANDROID',
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Metadata about a Firebase Android App.
|
|||
|
*/
|
|||
|
interface AndroidAppMetadata extends AppMetadata {
|
|||
|
|
|||
|
platform: AppPlatform.ANDROID;
|
|||
|
|
|||
|
/**
|
|||
|
* The canonical package name of the Android App, as would appear in the Google Play Developer
|
|||
|
* Console.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var packageName = androidAppMetadata.packageName;
|
|||
|
* ```
|
|||
|
*/
|
|||
|
packageName: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Metadata about a Firebase iOS App.
|
|||
|
*/
|
|||
|
interface IosAppMetadata extends AppMetadata {
|
|||
|
platform: AppPlatform.IOS;
|
|||
|
|
|||
|
/**
|
|||
|
* The canonical bundle ID of the iOS App as it would appear in the iOS App Store.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* ```javascript
|
|||
|
* var bundleId = iosAppMetadata.bundleId;
|
|||
|
*```
|
|||
|
*/
|
|||
|
bundleId: string;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* A reference to a Firebase Android app.
|
|||
|
*
|
|||
|
* Do not call this constructor directly. Instead, use
|
|||
|
* [`projectManagement.androidApp()`](admin.projectManagement.ProjectManagement#androidApp).
|
|||
|
*/
|
|||
|
interface AndroidApp {
|
|||
|
appId: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Retrieves metadata about this Android app.
|
|||
|
*
|
|||
|
* @return A promise that resolves to the retrieved metadata about this Android app.
|
|||
|
*/
|
|||
|
getMetadata(): Promise<admin.projectManagement.AndroidAppMetadata>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sets the optional user-assigned display name of the app.
|
|||
|
*
|
|||
|
* @param newDisplayName The new display name to set.
|
|||
|
*
|
|||
|
* @return A promise that resolves when the display name has been set.
|
|||
|
*/
|
|||
|
setDisplayName(newDisplayName: string): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the list of SHA certificates associated with this Android app in Firebase.
|
|||
|
*
|
|||
|
* @return The list of SHA-1 and SHA-256 certificates associated with this Android app in
|
|||
|
* Firebase.
|
|||
|
*/
|
|||
|
getShaCertificates(): Promise<admin.projectManagement.ShaCertificate[]>;
|
|||
|
|
|||
|
/**
|
|||
|
* Adds the given SHA certificate to this Android app.
|
|||
|
*
|
|||
|
* @param certificateToAdd The SHA certificate to add.
|
|||
|
*
|
|||
|
* @return A promise that resolves when the given certificate
|
|||
|
* has been added to the Android app.
|
|||
|
*/
|
|||
|
addShaCertificate(certificateToAdd: ShaCertificate): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Deletes the specified SHA certificate from this Android app.
|
|||
|
*
|
|||
|
* @param certificateToDelete The SHA certificate to delete.
|
|||
|
*
|
|||
|
* @return A promise that resolves when the specified
|
|||
|
* certificate has been removed from the Android app.
|
|||
|
*/
|
|||
|
deleteShaCertificate(certificateToRemove: ShaCertificate): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the configuration artifact associated with this app.
|
|||
|
*
|
|||
|
* @return A promise that resolves to the Android app's
|
|||
|
* Firebase config file, in UTF-8 string format. This string is typically
|
|||
|
* intended to be written to a JSON file that gets shipped with your Android
|
|||
|
* app.
|
|||
|
*/
|
|||
|
getConfig(): Promise<string>;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* A reference to a Firebase iOS app.
|
|||
|
*
|
|||
|
* Do not call this constructor directly. Instead, use
|
|||
|
* [`projectManagement.iosApp()`](admin.projectManagement.ProjectManagement#iosApp).
|
|||
|
*/
|
|||
|
interface IosApp {
|
|||
|
appId: string;
|
|||
|
|
|||
|
/**
|
|||
|
* Retrieves metadata about this iOS app.
|
|||
|
*
|
|||
|
* @return {!Promise<admin.projectManagement.IosAppMetadata>} A promise that
|
|||
|
* resolves to the retrieved metadata about this iOS app.
|
|||
|
*/
|
|||
|
getMetadata(): Promise<admin.projectManagement.IosAppMetadata>;
|
|||
|
|
|||
|
/**
|
|||
|
* Sets the optional user-assigned display name of the app.
|
|||
|
*
|
|||
|
* @param newDisplayName The new display name to set.
|
|||
|
*
|
|||
|
* @return A promise that resolves when the display name has
|
|||
|
* been set.
|
|||
|
*/
|
|||
|
setDisplayName(newDisplayName: string): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Gets the configuration artifact associated with this app.
|
|||
|
*
|
|||
|
* @return A promise that resolves to the iOS app's Firebase
|
|||
|
* config file, in UTF-8 string format. This string is typically intended to
|
|||
|
* be written to a plist file that gets shipped with your iOS app.
|
|||
|
*/
|
|||
|
getConfig(): Promise<string>;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* The Firebase ProjectManagement service interface.
|
|||
|
*
|
|||
|
* Do not call this constructor directly. Instead, use
|
|||
|
* [`admin.projectManagement()`](admin.projectManagement#projectManagement).
|
|||
|
*/
|
|||
|
interface ProjectManagement {
|
|||
|
app: admin.app.App;
|
|||
|
|
|||
|
/**
|
|||
|
* Lists up to 100 Firebase apps associated with this Firebase project.
|
|||
|
*
|
|||
|
* @return A promise that resolves to the metadata list of the apps.
|
|||
|
*/
|
|||
|
listAppMetadata(): Promise<admin.projectManagement.AppMetadata[]>;
|
|||
|
|
|||
|
/**
|
|||
|
* Lists up to 100 Firebase Android apps associated with this Firebase project.
|
|||
|
*
|
|||
|
* @return The list of Android apps.
|
|||
|
*/
|
|||
|
listAndroidApps(): Promise<admin.projectManagement.AndroidApp[]>;
|
|||
|
|
|||
|
/**
|
|||
|
* Lists up to 100 Firebase iOS apps associated with this Firebase project.
|
|||
|
*
|
|||
|
* @return The list of iOS apps.
|
|||
|
*/
|
|||
|
listIosApps(): Promise<admin.projectManagement.IosApp[]>;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates an `AndroidApp` object, referencing the specified Android app within
|
|||
|
* this Firebase project.
|
|||
|
*
|
|||
|
* This method does not perform an RPC.
|
|||
|
*
|
|||
|
* @param appId The `appId` of the Android app to reference.
|
|||
|
*
|
|||
|
* @return An `AndroidApp` object that references the specified Firebase Android app.
|
|||
|
*/
|
|||
|
androidApp(appId: string): admin.projectManagement.AndroidApp;
|
|||
|
|
|||
|
/**
|
|||
|
* Update the display name of this Firebase project.
|
|||
|
*
|
|||
|
* @param newDisplayName The new display name to be updated.
|
|||
|
*
|
|||
|
* @return A promise that resolves when the project display name has been updated.
|
|||
|
*/
|
|||
|
setDisplayName(newDisplayName: string): Promise<void>;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates an `iOSApp` object, referencing the specified iOS app within
|
|||
|
* this Firebase project.
|
|||
|
*
|
|||
|
* This method does not perform an RPC.
|
|||
|
*
|
|||
|
* @param appId The `appId` of the iOS app to reference.
|
|||
|
*
|
|||
|
* @return An `iOSApp` object that references the specified Firebase iOS app.
|
|||
|
*/
|
|||
|
iosApp(appId: string): admin.projectManagement.IosApp;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a `ShaCertificate` object.
|
|||
|
*
|
|||
|
* This method does not perform an RPC.
|
|||
|
*
|
|||
|
* @param shaHash The SHA-1 or SHA-256 hash for this certificate.
|
|||
|
*
|
|||
|
* @return A `ShaCertificate` object contains the specified SHA hash.
|
|||
|
*/
|
|||
|
shaCertificate(shaHash: string): admin.projectManagement.ShaCertificate;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new Firebase Android app associated with this Firebase project.
|
|||
|
*
|
|||
|
* @param packageName The canonical package name of the Android App,
|
|||
|
* as would appear in the Google Play Developer Console.
|
|||
|
* @param displayName An optional user-assigned display name for this
|
|||
|
* new app.
|
|||
|
*
|
|||
|
* @return A promise that resolves to the newly created Android app.
|
|||
|
*/
|
|||
|
createAndroidApp(
|
|||
|
packageName: string, displayName?: string): Promise<admin.projectManagement.AndroidApp>;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new Firebase iOS app associated with this Firebase project.
|
|||
|
*
|
|||
|
* @param bundleId The iOS app bundle ID to use for this new app.
|
|||
|
* @param displayName An optional user-assigned display name for this
|
|||
|
* new app.
|
|||
|
*
|
|||
|
* @return A promise that resolves to the newly created iOS app.
|
|||
|
*/
|
|||
|
createIosApp(bundleId: string, displayName?: string): Promise<admin.projectManagement.IosApp>;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
declare module 'firebase-admin' {
|
|||
|
}
|
|||
|
|
|||
|
export = admin;
|