// Copyright IBM Corp. 2020, 2026
// SPDX-License-Identifier: MPL-2.0

syntax = "proto3";

package controller.api.resources.authtokens.v1;

import "controller/api/resources/scopes/v1/scope.proto";
import "google/protobuf/timestamp.proto";

option go_package = "github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/authtokens;authtokens";

// AuthToken contains all fields related to an Auth Token resource
message AuthToken {
  // Output only. The ID of the Auth Token.
  string id = 10; // @gotags: `class:"public" eventstream:"observation"`

  // The Scope in which this Auth Token was generated.
  string scope_id = 20 [json_name = "scope_id"]; // @gotags: `class:"public"`

  // Output only. Scope information for this resource.
  resources.scopes.v1.ScopeInfo scope = 30;

  // Output only. The token value, which will only be populated after authentication and is only ever visible to the end user whose login request resulted in this Auth Token being created.
  string token = 40; // @gotags: `class:"secret"`

  // Output only. The ID of the User associated with this Auth Token.
  string user_id = 50 [json_name = "user_id"]; // @gotags: `class:"public"`

  // Output only. The ID of the Auth Method associated with this Auth Token.
  string auth_method_id = 60 [json_name = "auth_method_id"]; // @gotags: `class:"public"`

  // Output only. The ID of the Account associated with this Auth Token.
  string account_id = 70 [json_name = "account_id"]; // @gotags: `class:"public"`

  // Output only. The time this resource was created.
  google.protobuf.Timestamp created_time = 80 [json_name = "created_time"]; // @gotags: `class:"public"`

  // Output only. The time this resource was last updated.
  google.protobuf.Timestamp updated_time = 90 [json_name = "updated_time"]; // @gotags: `class:"public"`

  // Output only. The approximate time this Auth Token was last used.
  google.protobuf.Timestamp approximate_last_used_time = 100 [json_name = "approximate_last_used_time"]; // @gotags: `class:"public"`

  // Output only. The time this Auth Token expires.
  google.protobuf.Timestamp expiration_time = 110 [json_name = "expiration_time"]; // @gotags: `class:"public"`

  // Output only. The available actions on this resource for this user.
  repeated string authorized_actions = 300 [json_name = "authorized_actions"]; // @gotags: `class:"public"`
}
