// Copyright 2017 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.

// Schema to store user's long lived credentials from different Identity
// Providers.

namespace modular;
namespace auth;

// List of supported identity providers.
enum IdentityProvider : byte { GOOGLE }

// IdpCredential is used to store refresh token from each identity provider
// after user's consent.
table IdpCredential {
  identity_provider: IdentityProvider;
  refresh_token: string;
}

// UserCredential stores a list of authentication credentials from various
// identity providers for each unique user.
table UserCredential {
  account_id: string;
  tokens: [IdpCredential];
}

// Stores authentication credentials for all users.
table CredentialStore {
  creds: [UserCredential];
}

root_type CredentialStore;
