// 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.
type Error = strict enum {
    /// 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;
};
