firebase-admin
Version:
Firebase admin SDK for Node.js
370 lines (369 loc) • 15 kB
TypeScript
/*! firebase-admin v9.12.0 */
/*!
* Copyright 2020 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 { app } from '../firebase-namespace-api';
/**
* Gets the {@link remoteConfig.RemoteConfig `RemoteConfig`} service for the
* default app or a given app.
*
* `admin.remoteConfig()` can be called with no arguments to access the default
* app's {@link remoteConfig.RemoteConfig `RemoteConfig`} service or as
* `admin.remoteConfig(app)` to access the
* {@link remoteConfig.RemoteConfig `RemoteConfig`} service associated with a
* specific app.
*
* @example
* ```javascript
* // Get the `RemoteConfig` service for the default app
* var defaultRemoteConfig = admin.remoteConfig();
* ```
*
* @example
* ```javascript
* // Get the `RemoteConfig` service for a given app
* var otherRemoteConfig = admin.remoteConfig(otherApp);
* ```
*
* @param app Optional app for which to return the `RemoteConfig` service.
* If not provided, the default `RemoteConfig` service is returned.
*
* @return The default `RemoteConfig` service if no
* app is provided, or the `RemoteConfig` service associated with the provided
* app.
*/
export declare function remoteConfig(app?: app.App): remoteConfig.RemoteConfig;
export declare namespace remoteConfig {
/**
* Interface representing options for Remote Config list versions operation.
*/
interface ListVersionsOptions {
/**
* The maximum number of items to return per page.
*/
pageSize?: number;
/**
* The `nextPageToken` value returned from a previous list versions request, if any.
*/
pageToken?: string;
/**
* Specifies the newest version number to include in the results.
* If specified, must be greater than zero. Defaults to the newest version.
*/
endVersionNumber?: string | number;
/**
* Specifies the earliest update time to include in the results. Any entries updated before this
* time are omitted.
*/
startTime?: Date | string;
/**
* Specifies the latest update time to include in the results. Any entries updated on or after
* this time are omitted.
*/
endTime?: Date | string;
}
/**
* Interface representing a list of Remote Config template versions.
*/
interface ListVersionsResult {
/**
* A list of version metadata objects, sorted in reverse chronological order.
*/
versions: Version[];
/**
* Token to retrieve the next page of results, or empty if there are no more results
* in the list.
*/
nextPageToken?: string;
}
/**
* Interface representing a Remote Config condition.
* A condition targets a specific group of users. A list of these conditions make up
* part of a Remote Config template.
*/
interface RemoteConfigCondition {
/**
* A non-empty and unique name of this condition.
*/
name: string;
/**
* The logic of this condition.
* See the documentation on
* {@link https://firebase.google.com/docs/remote-config/condition-reference condition expressions}
* for the expected syntax of this field.
*/
expression: string;
/**
* The color associated with this condition for display purposes in the Firebase Console.
* Not specifying this value results in the console picking an arbitrary color to associate
* with the condition.
*/
tagColor?: TagColor;
}
/**
* Interface representing a Remote Config parameter.
* At minimum, a `defaultValue` or a `conditionalValues` entry must be present for the
* parameter to have any effect.
*/
interface RemoteConfigParameter {
/**
* The value to set the parameter to, when none of the named conditions evaluate to `true`.
*/
defaultValue?: RemoteConfigParameterValue;
/**
* A `(condition name, value)` map. The condition name of the highest priority
* (the one listed first in the Remote Config template's conditions list) determines the value of
* this parameter.
*/
conditionalValues?: {
[]: RemoteConfigParameterValue;
};
/**
* A description for this parameter. Should not be over 100 characters and may contain any
* Unicode characters.
*/
description?: string;
/**
* The data type for all values of this parameter in the current version of the template.
* Defaults to `ParameterValueType.STRING` if unspecified.
*/
valueType?: ParameterValueType;
}
/**
* Interface representing a Remote Config parameter group.
* Grouping parameters is only for management purposes and does not affect client-side
* fetching of parameter values.
*/
interface RemoteConfigParameterGroup {
/**
* A description for the group. Its length must be less than or equal to 256 characters.
* A description may contain any Unicode characters.
*/
description?: string;
/**
* Map of parameter keys to their optional default values and optional conditional values for
* parameters that belong to this group. A parameter only appears once per
* Remote Config template. An ungrouped parameter appears at the top level, whereas a
* parameter organized within a group appears within its group's map of parameters.
*/
parameters: {
[]: RemoteConfigParameter;
};
}
/**
* Interface representing an explicit parameter value.
*/
interface ExplicitParameterValue {
/**
* The `string` value that the parameter is set to.
*/
value: string;
}
/**
* Interface representing an in-app-default value.
*/
interface InAppDefaultValue {
/**
* If `true`, the parameter is omitted from the parameter values returned to a client.
*/
useInAppDefault: boolean;
}
/**
* Type representing a Remote Config parameter value.
* A `RemoteConfigParameterValue` could be either an `ExplicitParameterValue` or
* an `InAppDefaultValue`.
*/
type RemoteConfigParameterValue = ExplicitParameterValue | InAppDefaultValue;
/**
* Interface representing a Remote Config template.
*/
interface RemoteConfigTemplate {
/**
* A list of conditions in descending order by priority.
*/
conditions: RemoteConfigCondition[];
/**
* Map of parameter keys to their optional default values and optional conditional values.
*/
parameters: {
[]: RemoteConfigParameter;
};
/**
* Map of parameter group names to their parameter group objects.
* A group's name is mutable but must be unique among groups in the Remote Config template.
* The name is limited to 256 characters and intended to be human-readable. Any Unicode
* characters are allowed.
*/
parameterGroups: {
[]: RemoteConfigParameterGroup;
};
/**
* ETag of the current Remote Config template (readonly).
*/
readonly etag: string;
/**
* Version information for the current Remote Config template.
*/
version?: Version;
}
/**
* Interface representing a Remote Config user.
*/
interface RemoteConfigUser {
/**
* Email address. Output only.
*/
email: string;
/**
* Display name. Output only.
*/
name?: string;
/**
* Image URL. Output only.
*/
imageUrl?: string;
}
/**
* Colors that are associated with conditions for display purposes.
*/
type TagColor = 'BLUE' | 'BROWN' | 'CYAN' | 'DEEP_ORANGE' | 'GREEN' | 'INDIGO' | 'LIME' | 'ORANGE' | 'PINK' | 'PURPLE' | 'TEAL';
/**
* Type representing a Remote Config parameter value data type.
* Defaults to `STRING` if unspecified.
*/
type ParameterValueType = 'STRING' | 'BOOLEAN' | 'NUMBER' | 'JSON';
/**
* Interface representing a Remote Config template version.
* Output only, except for the version description. Contains metadata about a particular
* version of the Remote Config template. All fields are set at the time the specified Remote
* Config template is published. A version's description field may be specified in
* `publishTemplate` calls.
*/
interface Version {
/**
* The version number of a Remote Config template.
*/
versionNumber?: string;
/**
* The timestamp of when this version of the Remote Config template was written to the
* Remote Config backend.
*/
updateTime?: string;
/**
* The origin of the template update action.
*/
updateOrigin?: ('REMOTE_CONFIG_UPDATE_ORIGIN_UNSPECIFIED' | 'CONSOLE' | 'REST_API' | 'ADMIN_SDK_NODE');
/**
* The type of the template update action.
*/
updateType?: ('REMOTE_CONFIG_UPDATE_TYPE_UNSPECIFIED' | 'INCREMENTAL_UPDATE' | 'FORCED_UPDATE' | 'ROLLBACK');
/**
* Aggregation of all metadata fields about the account that performed the update.
*/
updateUser?: RemoteConfigUser;
/**
* The user-provided description of the corresponding Remote Config template.
*/
description?: string;
/**
* The version number of the Remote Config template that has become the current version
* due to a rollback. Only present if this version is the result of a rollback.
*/
rollbackSource?: string;
/**
* Indicates whether this Remote Config template was published before version history was
* supported.
*/
isLegacy?: boolean;
}
/**
* The Firebase `RemoteConfig` service interface.
*/
interface RemoteConfig {
app: app.App;
/**
* Gets the current active version of the {@link remoteConfig.RemoteConfigTemplate
* `RemoteConfigTemplate`} of the project.
*
* @return A promise that fulfills with a `RemoteConfigTemplate`.
*/
getTemplate(): Promise<RemoteConfigTemplate>;
/**
* Gets the requested version of the {@link remoteConfig.RemoteConfigTemplate
* `RemoteConfigTemplate`} of the project.
*
* @param versionNumber Version number of the Remote Config template to look up.
*
* @return A promise that fulfills with a `RemoteConfigTemplate`.
*/
getTemplateAtVersion(versionNumber: number | string): Promise<RemoteConfigTemplate>;
/**
* Validates a {@link remoteConfig.RemoteConfigTemplate `RemoteConfigTemplate`}.
*
* @param template The Remote Config template to be validated.
* @returns A promise that fulfills with the validated `RemoteConfigTemplate`.
*/
validateTemplate(template: RemoteConfigTemplate): Promise<RemoteConfigTemplate>;
/**
* Publishes a Remote Config template.
*
* @param template The Remote Config template to be published.
* @param options Optional options object when publishing a Remote Config template:
* - {boolean} `force` Setting this to `true` forces the Remote Config template to
* be updated and circumvent the ETag. This approach is not recommended
* because it risks causing the loss of updates to your Remote Config
* template if multiple clients are updating the Remote Config template.
* See {@link https://firebase.google.com/docs/remote-config/use-config-rest#etag_usage_and_forced_updates
* ETag usage and forced updates}.
*
* @return A Promise that fulfills with the published `RemoteConfigTemplate`.
*/
publishTemplate(template: RemoteConfigTemplate, options?: {
force: boolean;
}): Promise<RemoteConfigTemplate>;
/**
* Rolls back a project's published Remote Config template to the specified version.
* A rollback is equivalent to getting a previously published Remote Config
* template and re-publishing it using a force update.
*
* @param versionNumber The version number of the Remote Config template to roll back to.
* The specified version number must be lower than the current version number, and not have
* been deleted due to staleness. Only the last 300 versions are stored.
* All versions that correspond to non-active Remote Config templates (that is, all except the
* template that is being fetched by clients) are also deleted if they are more than 90 days old.
* @return A promise that fulfills with the published `RemoteConfigTemplate`.
*/
rollback(versionNumber: string | number): Promise<RemoteConfigTemplate>;
/**
* Gets a list of Remote Config template versions that have been published, sorted in reverse
* chronological order. Only the last 300 versions are stored.
* All versions that correspond to non-active Remote Config templates (that is, all except the
* template that is being fetched by clients) are also deleted if they are more than 90 days old.
*
* @param options Optional {@link remoteConfig.ListVersionsOptions `ListVersionsOptions`}
* object for getting a list of template versions.
* @return A promise that fulfills with a `ListVersionsResult`.
*/
listVersions(options?: ListVersionsOptions): Promise<ListVersionsResult>;
/**
* Creates and returns a new Remote Config template from a JSON string.
*
* @param json The JSON string to populate a Remote Config template.
*
* @return A new template instance.
*/
createTemplateFromJSON(json: string): RemoteConfigTemplate;
}
}