blob: 8d38d00f1fae5151a2271989d0e274afc3a24bd5 [file] [log] [blame]
// Copyright 2018 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.account;
/// The maximum number of Fuchsia accounts that may be simultaneously
/// provisioned on a device. This number may be increased in the future.
const uint32 MAX_ACCOUNTS_PER_DEVICE = 128;
/// The maximum number of personae that may be simultaneously defined within a
/// Fuchsia account. This number may be increased in the future.
const uint32 MAX_PERSONAE_PER_ACCOUNT = 128;
/// The maximum length of the global Fuchsia account and persona identifiers,
/// in bytes.
const uint32 MAX_ID_SIZE = 256;
/// The maximum length of the (UTF-8 encoded) human readable names, in bytes.
const uint32 MAX_NAME_SIZE = 128;
/// The maximum length of an (UTF-8 encoded) auth provider type, in bytes.
const uint32 MAX_AUTH_PROVIDER_TYPE_SIZE = 128;
/// Provides an upper bound to how long a Fuchsia account can live on the
/// current device.
enum Lifetime : uint8 {
/// The account lives at the longest to the end of the power cycle it
/// was created in.
EPHEMERAL = 1;
/// The account lives on the device until it is removed.
PERSISTENT = 2;
};
/// A globally unique identifier for a Fuchsia account that is constant across
/// the devices that the account is provisioned on. Identifiers are not human
/// readable.
using GlobalAccountId = bytes:MAX_ID_SIZE;
/// A unique identifier for a Fuchsia account on the current device. If the
/// account is removed and re-added it will receive a different LocalAccountId.
/// The same account will have different LocalAccountIds on different devices
/// and a particular LocalAccountId value may refer to different accounts on
/// different devices.
using LocalAccountId = uint64;
/// A unique identifier for a Persona of a Fuchsia account on the current
/// device. If the account is removed and re-added its personae will receive
/// different LocalPersonaIds. A particular LocalPersonaId value may refer to
/// different personae and/or different accounts on different devices. The
/// LocalAccountId for an account cannot be derived from the LocalPersonaId of
/// its personae.
using LocalPersonaId = uint64;
/// Specifies the reason that a fuchsia.identity.account method failed.
enum Error {
/// Some other problem occurred that cannot be classified using one of the
/// more specific statuses. Retry is optional.
UNKNOWN = 1;
/// An internal error occurred. This usually indicates a bug within the
/// account system itself. Retry is optional.
INTERNAL = 2;
/// The requested operation is not supported. This generally indicates that
/// implementation of a new feature is not yet complete. The request should
/// not be retried.
UNSUPPORTED_OPERATION = 3;
/// The request was malformed in some way, such as using an empty string for
/// auth_provider_type. The request should not be retried.
INVALID_REQUEST = 4;
/// A local resource error occurred such as I/O, FIDL, or memory allocation
/// failure. Retry, after a delay, is recommended.
RESOURCE = 5;
/// A network error occurred while communicating with an auth server.
/// Retry, after a delay, is recommended.
NETWORK = 6;
/// The requested account or persona is not present on the current device.
/// The request should not be retried.
NOT_FOUND = 7;
/// The request cannot be processed due to an ongoing account or persona
/// removal. The removal is not guaranteed to suceed and so retry, after
/// a delay, is recommended.
REMOVAL_IN_PROGRESS = 8;
/// The server is not in the state required to perform the requested
/// operation. The request should not be retried unless the server state
/// has been corrected before the retry.
FAILED_PRECONDITION = 9;
// This enumeration may expand to include additional statuses in the future.
// Examples are likely to include: MAX_LISTENERS, NO_SUITABLE_AUTHENTICATOR,
// INVALID_AUTH_PROVIDER,
};