Skip to main content

canton_api_client/models/
created_event.rs

1/*
2 * JSON Ledger API HTTP endpoints
3 *
4 * This specification version fixes the API inconsistencies where certain fields marked as required in the spec are in fact optional. If you use code generation tool based on this file, you might need to adjust the existing application code to handle those fields as optional. If you do not want to change your client code, continue using the OpenAPI specification for the latest Canton 3.4 patch release. MINIMUM_CANTON_VERSION=3.6.0
5 *
6 * The version of the OpenAPI document: 3.6.0-SNAPSHOT
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14/// CreatedEvent : Records that a contract has been created, and choices may now be exercised on it.
15#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct CreatedEvent {
17    /// The offset of origin, which has contextual meaning, please see description at messages that include a CreatedEvent. Offsets are managed by the participant nodes. Transactions can thus NOT be assumed to have the same offsets on different participant nodes. It is a valid absolute offset (positive integer)  Required
18    #[serde(rename = "offset")]
19    pub offset: i64,
20    /// The position of this event in the originating transaction or reassignment. The origin has contextual meaning, please see description at messages that include a CreatedEvent. Node IDs are not necessarily equal across participants, as these may see different projections/parts of transactions. Must be valid node ID (non-negative integer)  Required
21    #[serde(rename = "nodeId")]
22    pub node_id: i32,
23    /// The ID of the created contract. Must be a valid LedgerString (as described in ``value.proto``).  Required
24    #[serde(rename = "contractId")]
25    pub contract_id: String,
26    /// The template of the created contract. The identifier uses the package-id reference format.  Required
27    #[serde(rename = "templateId")]
28    pub template_id: String,
29    /// The key of the created contract. This will be set if and only if ``template_id`` defines a contract key.  Optional
30    #[serde(rename = "contractKey", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
31    pub contract_key: Option<Option<serde_json::Value>>,
32    /// The hash of contract_key. This will be set if and only if ``template_id`` defines a contract key.  Optional: can be empty
33    #[serde(rename = "contractKeyHash", skip_serializing_if = "Option::is_none")]
34    pub contract_key_hash: Option<String>,
35    /// The arguments that have been used to create the contract.  Required
36    #[serde(rename = "createArgument", deserialize_with = "Option::deserialize")]
37    pub create_argument: Option<serde_json::Value>,
38    /// Opaque representation of contract create event payload intended for forwarding to an API server as a contract disclosed as part of a command submission.  Optional: can be empty
39    #[serde(rename = "createdEventBlob", skip_serializing_if = "Option::is_none")]
40    pub created_event_blob: Option<String>,
41    /// Interface views specified in the transaction filter. Includes an ``InterfaceView`` for each interface for which there is a ``InterfaceFilter`` with  - its party in the ``witness_parties`` of this event, - and which is implemented by the template of this event, - and which has ``include_interface_view`` set.  Optional: can be empty
42    #[serde(rename = "interfaceViews", skip_serializing_if = "Option::is_none")]
43    pub interface_views: Option<Vec<models::JsInterfaceView>>,
44    /// The parties that are notified of this event. When a ``CreatedEvent`` is returned as part of a transaction tree or ledger-effects transaction, this will include all the parties specified in the ``TransactionFilter`` that are witnesses  of the event (the stakeholders of the contract and all informees of all the ancestors of this create action that this participant knows about). If served as part of a ACS delta transaction those will be limited to all parties specified in the ``TransactionFilter`` that are stakeholders of the contract (i.e. either signatories or observers). If the ``CreatedEvent`` is returned as part of an AssignedEvent, ActiveContract or IncompleteUnassigned (so the event is related to an assignment or unassignment): this will include all parties of the ``TransactionFilter`` that are stakeholders of the contract.  The behavior of reading create events visible to parties not hosted on the participant node serving the Ledger API is undefined. Concretely, there is neither a guarantee that the participant node will serve all their create events on the ACS stream, nor is there a guarantee that matching archive events are delivered for such create events.  For most clients this is not a problem, as they only read events for parties that are hosted on the participant node. If you need to read events for parties that may not be hosted at all times on the participant node, subscribe to the ``TopologyEvent``s for that party by setting a corresponding ``UpdateFormat``.  Using these events, query the ACS as-of an offset where the party is hosted on the participant node, and ignore create events at offsets where the party is not hosted on the participant node.  Required: must be non-empty
45    #[serde(rename = "witnessParties")]
46    pub witness_parties: Vec<String>,
47    /// The signatories for this contract as specified by the template.  Required: must be non-empty
48    #[serde(rename = "signatories")]
49    pub signatories: Vec<String>,
50    /// The observers for this contract as specified explicitly by the template or implicitly as choice controllers. This field never contains parties that are signatories.  Optional: can be empty
51    #[serde(rename = "observers", skip_serializing_if = "Option::is_none")]
52    pub observers: Option<Vec<String>>,
53    /// Ledger effective time of the transaction that created the contract.  Required
54    #[serde(rename = "createdAt")]
55    pub created_at: String,
56    /// The package name of the created contract.  Required
57    #[serde(rename = "packageName")]
58    pub package_name: String,
59    /// A package-id present in the participant package store that typechecks the contract's argument. This may differ from the package-id of the template used to create the contract. For contracts created before Canton 3.4, this field matches the contract's creation package-id.  NOTE: Experimental, server internal concept, not for client consumption. Subject to change without notice.  Required
60    #[serde(rename = "representativePackageId")]
61    pub representative_package_id: String,
62    /// Whether this event would be part of respective ACS_DELTA shaped stream, and should therefore considered when tracking contract activeness on the client-side.  Required
63    #[serde(rename = "acsDelta")]
64    pub acs_delta: bool,
65}
66
67impl CreatedEvent {
68    /// Records that a contract has been created, and choices may now be exercised on it.
69    pub fn new(offset: i64, node_id: i32, contract_id: String, template_id: String, create_argument: Option<serde_json::Value>, witness_parties: Vec<String>, signatories: Vec<String>, created_at: String, package_name: String, representative_package_id: String, acs_delta: bool) -> CreatedEvent {
70        CreatedEvent {
71            offset,
72            node_id,
73            contract_id,
74            template_id,
75            contract_key: None,
76            contract_key_hash: None,
77            create_argument,
78            created_event_blob: None,
79            interface_views: None,
80            witness_parties,
81            signatories,
82            observers: None,
83            created_at,
84            package_name,
85            representative_package_id,
86            acs_delta,
87        }
88    }
89}
90