/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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 { AxiosPromise } from 'axios';
import { GoogleApis } from '../..';
import { BodyResponseCallback, GlobalOptions, MethodOptions } from '../../lib/api';
/**
 * Stackdriver Error Reporting API
 *
 * Groups and counts similar errors from cloud services and applications,
 * reports new errors, and provides access to error groups and their associated
 * errors.
 *
 * @example
 * const google = require('googleapis');
 * const clouderrorreporting = google.clouderrorreporting('v1beta1');
 *
 * @namespace clouderrorreporting
 * @type {Function}
 * @version v1beta1
 * @variation v1beta1
 * @param {object=} options Options for Clouderrorreporting
 */
export declare class Clouderrorreporting {
    _options: GlobalOptions;
    google: GoogleApis;
    root: this;
    projects: Resource$Projects;
    constructor(options: GlobalOptions, google: GoogleApis);
    getRoot(): this;
}
/**
 * Response message for deleting error events.
 */
export interface Schema$DeleteEventsResponse {
}
/**
 * A description of the context in which an error occurred. This data should be
 * provided by the application when reporting an error, unless the error report
 * has been generated automatically from Google App Engine logs.
 */
export interface Schema$ErrorContext {
    /**
     * The HTTP request which was processed when the error was triggered.
     */
    httpRequest: Schema$HttpRequestContext;
    /**
     * The location in the source code where the decision was made to report the
     * error, usually the place where it was logged. For a logged exception this
     * would be the source line where the exception is logged, usually close to
     * the place where it was caught.
     */
    reportLocation: Schema$SourceLocation;
    /**
     * Source code that was used to build the executable which has caused the
     * given error message.
     */
    sourceReferences: Schema$SourceReference[];
    /**
     * The user who caused or was affected by the crash. This can be a user ID, an
     * email address, or an arbitrary token that uniquely identifies the user.
     * When sending an error report, leave this field empty if the user was not
     * logged in. In this case the Error Reporting system will use other data,
     * such as remote IP address, to distinguish affected users. See
     * `affected_users_count` in `ErrorGroupStats`.
     */
    user: string;
}
/**
 * An error event which is returned by the Error Reporting system.
 */
export interface Schema$ErrorEvent {
    /**
     * Data about the context in which the error occurred.
     */
    context: Schema$ErrorContext;
    /**
     * Time when the event occurred as provided in the error report. If the report
     * did not contain a timestamp, the time the error was received by the Error
     * Reporting system is used.
     */
    eventTime: string;
    /**
     * The stack trace that was reported or logged by the service.
     */
    message: string;
    /**
     * The `ServiceContext` for which this error was reported.
     */
    serviceContext: Schema$ServiceContext;
}
/**
 * Description of a group of similar error events.
 */
export interface Schema$ErrorGroup {
    /**
     * Group IDs are unique for a given project. If the same kind of error occurs
     * in different service contexts, it will receive the same group ID.
     */
    groupId: string;
    /**
     * The group resource name. Example:
     * &lt;code&gt;projects/my-project-123/groups/my-groupid&lt;/code&gt;
     */
    name: string;
    /**
     * Associated tracking issues.
     */
    trackingIssues: Schema$TrackingIssue[];
}
/**
 * Data extracted for a specific group based on certain filter criteria, such as
 * a given time period and/or service filter.
 */
export interface Schema$ErrorGroupStats {
    /**
     * Service contexts with a non-zero error count for the given filter criteria.
     * This list can be truncated if multiple services are affected. Refer to
     * `num_affected_services` for the total count.
     */
    affectedServices: Schema$ServiceContext[];
    /**
     * Approximate number of affected users in the given group that match the
     * filter criteria. Users are distinguished by data in the `ErrorContext` of
     * the individual error events, such as their login name or their remote IP
     * address in case of HTTP requests. The number of affected users can be zero
     * even if the number of errors is non-zero if no data was provided from which
     * the affected user could be deduced. Users are counted based on data in the
     * request context that was provided in the error report. If more users are
     * implicitly affected, such as due to a crash of the whole service, this is
     * not reflected here.
     */
    affectedUsersCount: string;
    /**
     * Approximate total number of events in the given group that match the filter
     * criteria.
     */
    count: string;
    /**
     * Approximate first occurrence that was ever seen for this group and which
     * matches the given filter criteria, ignoring the time_range that was
     * specified in the request.
     */
    firstSeenTime: string;
    /**
     * Group data that is independent of the filter criteria.
     */
    group: Schema$ErrorGroup;
    /**
     * Approximate last occurrence that was ever seen for this group and which
     * matches the given filter criteria, ignoring the time_range that was
     * specified in the request.
     */
    lastSeenTime: string;
    /**
     * The total number of services with a non-zero error count for the given
     * filter criteria.
     */
    numAffectedServices: number;
    /**
     * An arbitrary event that is chosen as representative for the whole group.
     * The representative event is intended to be used as a quick preview for the
     * whole group. Events in the group are usually sufficiently similar to each
     * other such that showing an arbitrary representative provides insight into
     * the characteristics of the group as a whole.
     */
    representative: Schema$ErrorEvent;
    /**
     * Approximate number of occurrences over time. Timed counts returned by
     * ListGroups are guaranteed to be:  - Inside the requested time interval -
     * Non-overlapping, and - Ordered by ascending time.
     */
    timedCounts: Schema$TimedCount[];
}
/**
 * HTTP request data that is related to a reported error. This data should be
 * provided by the application when reporting an error, unless the error report
 * has been generated automatically from Google App Engine logs.
 */
export interface Schema$HttpRequestContext {
    /**
     * The type of HTTP request, such as `GET`, `POST`, etc.
     */
    method: string;
    /**
     * The referrer information that is provided with the request.
     */
    referrer: string;
    /**
     * The IP address from which the request originated. This can be IPv4, IPv6,
     * or a token which is derived from the IP address, depending on the data that
     * has been provided in the error report.
     */
    remoteIp: string;
    /**
     * The HTTP response status code for the request.
     */
    responseStatusCode: number;
    /**
     * The URL of the request.
     */
    url: string;
    /**
     * The user agent information that is provided with the request.
     */
    userAgent: string;
}
/**
 * Contains a set of requested error events.
 */
export interface Schema$ListEventsResponse {
    /**
     * The error events which match the given request.
     */
    errorEvents: Schema$ErrorEvent[];
    /**
     * If non-empty, more results are available. Pass this token, along with the
     * same query parameters as the first request, to view the next page of
     * results.
     */
    nextPageToken: string;
    /**
     * The timestamp specifies the start time to which the request was restricted.
     */
    timeRangeBegin: string;
}
/**
 * Contains a set of requested error group stats.
 */
export interface Schema$ListGroupStatsResponse {
    /**
     * The error group stats which match the given request.
     */
    errorGroupStats: Schema$ErrorGroupStats[];
    /**
     * If non-empty, more results are available. Pass this token, along with the
     * same query parameters as the first request, to view the next page of
     * results.
     */
    nextPageToken: string;
    /**
     * The timestamp specifies the start time to which the request was restricted.
     * The start time is set based on the requested time range. It may be adjusted
     * to a later time if a project has exceeded the storage quota and older data
     * has been deleted.
     */
    timeRangeBegin: string;
}
/**
 * An error event which is reported to the Error Reporting system.
 */
export interface Schema$ReportedErrorEvent {
    /**
     * [Optional] A description of the context in which the error occurred.
     */
    context: Schema$ErrorContext;
    /**
     * [Optional] Time when the event occurred. If not provided, the time when the
     * event was received by the Error Reporting system will be used.
     */
    eventTime: string;
    /**
     * [Required] The error message. If no `context.reportLocation` is provided,
     * the message must contain a header (typically consisting of the exception
     * type name and an error message) and an exception stack trace in one of the
     * supported programming languages and formats. Supported languages are Java,
     * Python, JavaScript, Ruby, C#, PHP, and Go. Supported stack trace formats
     * are:  * **Java**: Must be the return value of
     * [`Throwable.printStackTrace()`](https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#printStackTrace%28%29).
     * * **Python**: Must be the return value of
     * [`traceback.format_exc()`](https://docs.python.org/2/library/traceback.html#traceback.format_exc).
     * * **JavaScript**: Must be the value of
     * [`error.stack`](https://github.com/v8/v8/wiki/Stack-Trace-API) as returned
     * by V8. * **Ruby**: Must contain frames returned by
     * [`Exception.backtrace`](https://ruby-doc.org/core-2.2.0/Exception.html#method-i-backtrace).
     * * **C#**: Must be the return value of
     * [`Exception.ToString()`](https://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx).
     * * **PHP**: Must start with `PHP (Notice|Parse error|Fatal error|Warning)`
     * and contain the result of
     * [`(string)$exception`](http://php.net/manual/en/exception.tostring.php). *
     * **Go**: Must be the return value of
     * [`runtime.Stack()`](https://golang.org/pkg/runtime/debug/#Stack).
     */
    message: string;
    /**
     * [Required] The service context in which this error has occurred.
     */
    serviceContext: Schema$ServiceContext;
}
/**
 * Response for reporting an individual error event. Data may be added to this
 * message in the future.
 */
export interface Schema$ReportErrorEventResponse {
}
/**
 * Describes a running service that sends errors. Its version changes over time
 * and multiple versions can run in parallel.
 */
export interface Schema$ServiceContext {
    /**
     * Type of the MonitoredResource. List of possible values:
     * https://cloud.google.com/monitoring/api/resources  Value is set
     * automatically for incoming errors and must not be set when reporting
     * errors.
     */
    resourceType: string;
    /**
     * An identifier of the service, such as the name of the executable, job, or
     * Google App Engine service name. This field is expected to have a low number
     * of values that are relatively stable over time, as opposed to `version`,
     * which can be changed whenever new code is deployed.  Contains the service
     * name for error reports extracted from Google App Engine logs or `default`
     * if the App Engine default service is used.
     */
    service: string;
    /**
     * Represents the source code version that the developer provided, which could
     * represent a version label or a Git SHA-1 hash, for example. For App Engine
     * standard environment, the version is set to the version of the app.
     */
    version: string;
}
/**
 * Indicates a location in the source code of the service for which errors are
 * reported. `functionName` must be provided by the application when reporting
 * an error, unless the error report contains a `message` with a supported
 * exception stack trace. All fields are optional for the later case.
 */
export interface Schema$SourceLocation {
    /**
     * The source code filename, which can include a truncated relative path, or a
     * full path from a production machine.
     */
    filePath: string;
    /**
     * Human-readable name of a function or method. The value can include optional
     * context like the class or package name. For example,
     * `my.package.MyClass.method` in case of Java.
     */
    functionName: string;
    /**
     * 1-based. 0 indicates that the line number is unknown.
     */
    lineNumber: number;
}
/**
 * A reference to a particular snapshot of the source tree used to build and
 * deploy an application.
 */
export interface Schema$SourceReference {
    /**
     * Optional. A URI string identifying the repository. Example:
     * &quot;https://github.com/GoogleCloudPlatform/kubernetes.git&quot;
     */
    repository: string;
    /**
     * The canonical and persistent identifier of the deployed revision. Example
     * (git): &quot;0035781c50ec7aa23385dc841529ce8a4b70db1b&quot;
     */
    revisionId: string;
}
/**
 * The number of errors in a given time period. All numbers are approximate
 * since the error events are sampled before counting them.
 */
export interface Schema$TimedCount {
    /**
     * Approximate number of occurrences in the given time period.
     */
    count: string;
    /**
     * End of the time period to which `count` refers (excluded).
     */
    endTime: string;
    /**
     * Start of the time period to which `count` refers (included).
     */
    startTime: string;
}
/**
 * Information related to tracking the progress on resolving the error.
 */
export interface Schema$TrackingIssue {
    /**
     * A URL pointing to a related entry in an issue tracking system. Example:
     * https://github.com/user/project/issues/4
     */
    url: string;
}
export declare class Resource$Projects {
    root: Clouderrorreporting;
    events: Resource$Projects$Events;
    groups: Resource$Projects$Groups;
    groupStats: Resource$Projects$Groupstats;
    constructor(root: Clouderrorreporting);
    getRoot(): Clouderrorreporting;
    /**
     * clouderrorreporting.projects.deleteEvents
     * @desc Deletes all error events of a given project.
     * @alias clouderrorreporting.projects.deleteEvents
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.projectName [Required] The resource name of the Google Cloud Platform project. Written as `projects/` plus the [Google Cloud Platform project ID](https://support.google.com/cloud/answer/6158840). Example: `projects/my-project-123`.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    deleteEvents(params?: any, options?: MethodOptions): AxiosPromise<Schema$DeleteEventsResponse>;
    deleteEvents(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$DeleteEventsResponse>, callback?: BodyResponseCallback<Schema$DeleteEventsResponse>): void;
}
export declare class Resource$Projects$Events {
    root: Clouderrorreporting;
    constructor(root: Clouderrorreporting);
    getRoot(): Clouderrorreporting;
    /**
     * clouderrorreporting.projects.events.list
     * @desc Lists the specified events.
     * @alias clouderrorreporting.projects.events.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string=} params.groupId [Required] The group for which events shall be returned.
     * @param {integer=} params.pageSize [Optional] The maximum number of results to return per response.
     * @param {string=} params.pageToken [Optional] A `next_page_token` provided by a previous response.
     * @param {string} params.projectName [Required] The resource name of the Google Cloud Platform project. Written as `projects/` plus the [Google Cloud Platform project ID](https://support.google.com/cloud/answer/6158840). Example: `projects/my-project-123`.
     * @param {string=} params.serviceFilter.resourceType [Optional] The exact value to match against [`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).
     * @param {string=} params.serviceFilter.service [Optional] The exact value to match against [`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service).
     * @param {string=} params.serviceFilter.version [Optional] The exact value to match against [`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).
     * @param {string=} params.timeRange.period Restricts the query to the specified time range.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    list(params?: any, options?: MethodOptions): AxiosPromise<Schema$ListEventsResponse>;
    list(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ListEventsResponse>, callback?: BodyResponseCallback<Schema$ListEventsResponse>): void;
    /**
     * clouderrorreporting.projects.events.report
     * @desc Report an individual error event.  This endpoint accepts
     * <strong>either</strong> an OAuth token, <strong>or</strong> an <a
     * href="https://support.google.com/cloud/answer/6158862">API key</a> for
     * authentication. To use an API key, append it to the URL as the value of a
     * `key` parameter. For example: <pre>POST
     * https://clouderrorreporting.googleapis.com/v1beta1/projects/example-project/events:report?key=123ABC456</pre>
     * @alias clouderrorreporting.projects.events.report
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.projectName [Required] The resource name of the Google Cloud Platform project. Written as `projects/` plus the [Google Cloud Platform project ID](https://support.google.com/cloud/answer/6158840). Example: `projects/my-project-123`.
     * @param {().ReportedErrorEvent} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    report(params?: any, options?: MethodOptions): AxiosPromise<Schema$ReportErrorEventResponse>;
    report(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ReportErrorEventResponse>, callback?: BodyResponseCallback<Schema$ReportErrorEventResponse>): void;
}
export declare class Resource$Projects$Groups {
    root: Clouderrorreporting;
    constructor(root: Clouderrorreporting);
    getRoot(): Clouderrorreporting;
    /**
     * clouderrorreporting.projects.groups.get
     * @desc Get the specified group.
     * @alias clouderrorreporting.projects.groups.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.groupName [Required] The group resource name. Written as <code>projects/<var>projectID</var>/groups/<var>group_name</var></code>. Call <a href="/error-reporting/reference/rest/v1beta1/projects.groupStats/list"> <code>groupStats.list</code></a> to return a list of groups belonging to this project.  Example: <code>projects/my-project-123/groups/my-group</code>
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    get(params?: any, options?: MethodOptions): AxiosPromise<Schema$ErrorGroup>;
    get(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ErrorGroup>, callback?: BodyResponseCallback<Schema$ErrorGroup>): void;
    /**
     * clouderrorreporting.projects.groups.update
     * @desc Replace the data for the specified group. Fails if the group does not
     * exist.
     * @alias clouderrorreporting.projects.groups.update
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name The group resource name. Example: <code>projects/my-project-123/groups/my-groupid</code>
     * @param {().ErrorGroup} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    update(params?: any, options?: MethodOptions): AxiosPromise<Schema$ErrorGroup>;
    update(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ErrorGroup>, callback?: BodyResponseCallback<Schema$ErrorGroup>): void;
}
export declare class Resource$Projects$Groupstats {
    root: Clouderrorreporting;
    constructor(root: Clouderrorreporting);
    getRoot(): Clouderrorreporting;
    /**
     * clouderrorreporting.projects.groupStats.list
     * @desc Lists the specified groups.
     * @alias clouderrorreporting.projects.groupStats.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string=} params.alignment [Optional] The alignment of the timed counts to be returned. Default is `ALIGNMENT_EQUAL_AT_END`.
     * @param {string=} params.alignmentTime [Optional] Time where the timed counts shall be aligned if rounded alignment is chosen. Default is 00:00 UTC.
     * @param {string=} params.groupId [Optional] List all <code>ErrorGroupStats</code> with these IDs.
     * @param {string=} params.order [Optional] The sort order in which the results are returned. Default is `COUNT_DESC`.
     * @param {integer=} params.pageSize [Optional] The maximum number of results to return per response. Default is 20.
     * @param {string=} params.pageToken [Optional] A `next_page_token` provided by a previous response. To view additional results, pass this token along with the identical query parameters as the first request.
     * @param {string} params.projectName [Required] The resource name of the Google Cloud Platform project. Written as <code>projects/</code> plus the <a href="https://support.google.com/cloud/answer/6158840">Google Cloud Platform project ID</a>.  Example: <code>projects/my-project-123</code>.
     * @param {string=} params.serviceFilter.resourceType [Optional] The exact value to match against [`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).
     * @param {string=} params.serviceFilter.service [Optional] The exact value to match against [`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service).
     * @param {string=} params.serviceFilter.version [Optional] The exact value to match against [`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).
     * @param {string=} params.timedCountDuration [Optional] The preferred duration for a single returned `TimedCount`. If not set, no timed counts are returned.
     * @param {string=} params.timeRange.period Restricts the query to the specified time range.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    list(params?: any, options?: MethodOptions): AxiosPromise<Schema$ListGroupStatsResponse>;
    list(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ListGroupStatsResponse>, callback?: BodyResponseCallback<Schema$ListGroupStatsResponse>): void;
}
