// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.identity.external;

/// Specifies the reason that a fuchsia.identity.external method failed.
enum Error {
    /// Some other problem occurred that cannot be classified using one of the
    /// more specific statuses.
    UNKNOWN = 1;

    /// An internal error occurred. This usually indicates a bug within the
    /// component implementation.
    INTERNAL = 2;

    /// The component instance was not configured correctly at initialization
    /// and is unable to perform useful work.
    CONFIG = 3;

    /// The requested operation is not supported by this implementation. An
    /// example is requesting a type of token that the service provider does not
    /// support.
    UNSUPPORTED_OPERATION = 4;

    /// The method request was not valid or was malformed in some way, such as
    /// omitting required fields. Invalid requests for unsupported operations
    /// will return `UNSUPPORTED_OPERATION`.
    INVALID_REQUEST = 5;

    /// A local resource error occurred such as an I/O, FIDL, or memory
    /// allocation failure.
    RESOURCE = 6;

    /// A network error occurred while communicating with the auth server or the
    /// server was unreachable.
    NETWORK = 7;

    /// The auth server returned a failure or an invalid response. This may
    /// indicate either a failure of the server itself or an incompatibility
    /// between the server and the component implementation.
    SERVER = 8;

    /// The token supplied to perform an exchange operation is not valid and
    /// should be discarded. This can occur following server-side revocation.
    INVALID_TOKEN = 9;

    /// The token supplied to perform an exchange operation was valid but was
    /// not sufficiently powerful to complete the requested exchange.
    INSUFFICIENT_TOKEN = 10;

    /// The user cancelled or failed an interactive authentication operation.
    ABORTED = 11;
};

