googleapis/google/cloud/universalledger/v1/query.proto
Google APIs 43079af4f8 feat: add support for Locations API
feat: add method for querying data from the ledger
feat: deprecate use of Entity messages for account IDs, and provide string fields as replacement
docs: document field length limit on account IDs

PiperOrigin-RevId: 863164046
2026-01-30 03:54:44 -08:00

237 lines
9.7 KiB
Protocol Buffer

// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.cloud.universalledger.v1;
import "google/api/field_behavior.proto";
import "google/cloud/universalledger/v1/accounts.proto";
import "google/cloud/universalledger/v1/common.proto";
import "google/cloud/universalledger/v1/transactions.proto";
option csharp_namespace = "Google.Cloud.UniversalLedger.V1";
option go_package = "cloud.google.com/go/universalledger/apiv1/universalledgerpb;universalledgerpb";
option java_multiple_files = true;
option java_outer_classname = "QueryProto";
option java_package = "com.google.cloud.universalledger.v1";
option php_namespace = "Google\\Cloud\\UniversalLedger\\V1";
option ruby_package = "Google::Cloud::UniversalLedger::V1";
// Represents the state of an account on the ledger.
message Account {
// Specific details based on the type of account.
oneof account_details {
// Output only. Details for a standard user account.
UserDetails user_details = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Details for an account manager account.
AccountManagerDetails account_manager_details = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Details for a token manager account.
TokenManagerDetails token_manager_details = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Details for a contract token manager account.
ContractTokenManagerDetails contract_token_manager_details = 12
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Details for a smart contract account.
ContractDetails contract_details = 11
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Details for a clearinghouse account.
ClearingHouseDetails clearinghouse_details = 10
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Details for a currency operator account.
CurrencyOperatorDetails currency_operator_details = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Details for a platform operator account.
PlatformOperatorDetails platform_operator_details = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Output only. The sequence number of this account. This number increments
// with each transaction sent by this account.
int64 sequence_number = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The primary public key associated with this account, used for
// signature verification.
bytes public_key = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The ID of the execution round (similar to block "height") at
// which the account information provided is accurate.
int64 round_id = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The account comment stored when this account was created.
string comment = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details specific to an Account Manager.
message AccountManagerDetails {
// Output only. The default token manager for accounts created by this account
// manager.
Entity token_manager = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The number of accounts created by this account manager.
int32 num_accounts = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details specific to a Token Manager.
message TokenManagerDetails {
// Output only. The amount of tokens this token manager is allowed to mint.
CurrencyValue issuance_limit = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The amount of tokens minted by this token manager.
// This number will increase when minting and decrease when burning.
CurrencyValue issued_tokens = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details specific to a Contract Token Manager.
message ContractTokenManagerDetails {
// Output only. The amount of tokens this contract token manager is allowed
// to provide backing for.
//
// Since contract token managers cannot increase or decrease
// their issuance limit, this should equal the `issued_tokens`.
CurrencyValue issuance_limit = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The amount of tokens this contract token manager is
// providing backing for (that is, its total liability).
//
// This equals to the sum of all balances held in contracts for its currency,
// plus its net position in the settlement matrix.
CurrencyValue issued_tokens = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The account ID of the previous contract token manager for this
// currency. This forms an audit trail that can be traversed to discover all
// previous managers. If this is the first contract token manager for the
// currency, this will be empty.
string previous_contract_token_manager_id = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The status of this account.
AccountStatus account_status = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details specific to a User account.
message UserDetails {
// Output only. The account manager for this user.
Entity account_manager = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The token manager for this user.
Entity token_manager = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The list of roles granted to this account.
repeated Role roles = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The status of this account.
AccountStatus account_status = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The token balance of this user account.
CurrencyValue balance = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The contract account fields (contract ID -> fields) for this
// user.
map<string, Fields> account_fields = 6
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details specific to a Currency Operator.
message CurrencyOperatorDetails {
// Output only. The currency associated with this account, represented by the
// 3-letter ISO 4217 code.
string currency = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The status of this account.
AccountStatus account_status = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The previous currency operator which transferred ownership of
// the currency operator role to this account. If this is the first currency
// operator for the currency, this will be empty.
Entity previous_entity_id = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The platform operator which created this currency operator.
Entity platform_operator_entity_id = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The contract token manager associated with this currency
// operator.
Entity contract_token_manager = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details specific to a Platform Operator.
message PlatformOperatorDetails {
// Output only. The status of this account.
AccountStatus account_status = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The previous platform operator which transferred ownership of
// the platform operator role to this account. If this is the first platform
// operator, this will be empty.
Entity previous_entity_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details specific to a Clearinghouse.
message ClearingHouseDetails {
// Output only. The status of this account.
AccountStatus account_status = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The balances that this clearinghouse is currently tracking for
// settlement.
repeated BalanceToSettle balances = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The settlement mode of this clearinghouse.
SettlementMode settlement_mode = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details specific to a Smart Contract.
message ContractDetails {
// Output only. The owner of the contract.
Entity owner = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The serialized contract code.
bytes code = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The contract fields (field name -> value) for this contract.
Fields contract_fields = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The currency balances held by the contract (currency operator
// -> balance).
map<string, CurrencyValue> currency_balances = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// A balance to settle between two token managers.
message BalanceToSettle {
// Output only. The account which owes the balance to be settled.
Entity balance_payer = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The account which is owed the balance to be settled.
Entity balance_receiver = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The balance to settle. Must be positive.
CurrencyValue balance = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// A map of fields (field name -> value) from a contract used to represent
// contract fields or account fields.
message Fields {
// Output only. The map of field names to their values.
map<string, Value> fields = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
}