diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/AssignCommand.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/AssignCommand.cs index e39c3a1..add49ce 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/AssignCommand.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/AssignCommand.cs @@ -22,6 +22,7 @@ public partial class AssignCommand /// /// [JsonPropertyName("value")] + [Required] public AssignCommand1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Completion.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Completion.cs index 8a295d6..8064471 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Completion.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Completion.cs @@ -22,6 +22,7 @@ public partial class Completion /// /// [JsonPropertyName("value")] + [Required] public Completion1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Completion1.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Completion1.cs index 1a1fced..35a6e5f 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Completion1.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Completion1.cs @@ -98,6 +98,16 @@ public partial class Completion1 [Required] public SynchronizerTime SynchronizerTime { get; set; } = null!; + /// + /// The traffic cost paid by this participant node for the confirmation request for the submitted command. + /// Commands whose execution is rejected before their corresponding confirmation request is ordered by the synchronizer will report a paid traffic cost of zero. If a confirmation request is ordered for a command, but the request fails (e.g., due to contention with a concurrent contract archival), the traffic cost is paid and reported on the failed completion for the request. + /// If you want to correlate the traffic cost of a successful completion with the transaction that resulted from the command, you can use the <c>offset</c> field to retrieve the transaction using <c>UpdateService.GetUpdateByOffset</c> on the same participant node; or alternatively use the <c>update_id</c> field to retrieve the transaction using <c>UpdateService.GetUpdateById</c> on any participant node that sees the transaction. + /// Note: for completions processed before the participant started serving traffic cost on the Ledger API, this field will be set to zero. Additionally, the total cost incurred by the submitting node for the submission of the transaction may be greater than the reported cost, for example if retries were issued due to failed submissions to the synchronizer. The cost reported here is the one paid for ordering the confirmation request. + /// Optional + /// + [JsonPropertyName("paidTrafficCost")] + public long? PaidTrafficCost { get; set; } + } } \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/InterfaceFilter.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/InterfaceFilter.cs index e34878b..d763865 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/InterfaceFilter.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/InterfaceFilter.cs @@ -22,6 +22,7 @@ public partial class InterfaceFilter /// /// [JsonPropertyName("value")] + [Required] public InterfaceFilter1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsReassignment.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsReassignment.cs index 436dace..9945b1d 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsReassignment.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsReassignment.cs @@ -81,6 +81,20 @@ public partial class JsReassignment [Required] public string SynchronizerId { get; set; } = null!; + /// + /// The traffic cost that this participant node paid for the corresponding (un)assignment request. + /// Not set for transactions that were + /// + /// initiated by another participant + /// initiated offline via the repair service + /// processed before the participant started serving traffic cost on the Ledger API + /// returned as part of a query filtering for a non submitting party + /// + /// Optional: can be empty + /// + [JsonPropertyName("paidTrafficCost")] + public long? PaidTrafficCost { get; set; } + } } \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsTransaction.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsTransaction.cs index 48d3370..cf3f338 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsTransaction.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsTransaction.cs @@ -100,6 +100,20 @@ public partial class JsTransaction [JsonPropertyName("externalTransactionHash")] public string ExternalTransactionHash { get; set; } = null!; + /// + /// The traffic cost that this participant node paid for the confirmation request for this transaction. + /// Not set for transactions that were + /// + /// initiated by another participant + /// initiated offline via the repair service + /// processed before the participant started serving traffic cost on the Ledger API + /// returned as part of a query filtering for a non submitting party + /// + /// Optional: can be empty + /// + [JsonPropertyName("paidTrafficCost")] + public long? PaidTrafficCost { get; set; } + } } \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsUnassignedEvent.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsUnassignedEvent.cs index b4f50fd..2709ba0 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsUnassignedEvent.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/JsUnassignedEvent.cs @@ -22,6 +22,7 @@ public partial class JsUnassignedEvent /// /// [JsonPropertyName("value")] + [Required] public UnassignedEvent Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint.cs index da82e6e..0848064 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint.cs @@ -26,6 +26,7 @@ public partial class OffsetCheckpoint /// /// [JsonPropertyName("value")] + [Required] public OffsetCheckpoint1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint2.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint2.cs index 1ab289e..225bb72 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint2.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint2.cs @@ -26,6 +26,7 @@ public partial class OffsetCheckpoint2 /// /// [JsonPropertyName("value")] + [Required] public OffsetCheckpoint1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint3.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint3.cs index 61d87ad..7729c47 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint3.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/OffsetCheckpoint3.cs @@ -26,6 +26,7 @@ public partial class OffsetCheckpoint3 /// /// [JsonPropertyName("value")] + [Required] public OffsetCheckpoint1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationAdded.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationAdded.cs index 6477e71..4f0ddce 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationAdded.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationAdded.cs @@ -21,6 +21,7 @@ public partial class ParticipantAuthorizationAdded /// /// [JsonPropertyName("value")] + [Required] public ParticipantAuthorizationAdded1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationChanged.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationChanged.cs index 1b45ca8..711ab9b 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationChanged.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationChanged.cs @@ -21,6 +21,7 @@ public partial class ParticipantAuthorizationChanged /// /// [JsonPropertyName("value")] + [Required] public ParticipantAuthorizationChanged1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationRevoked.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationRevoked.cs index 26d8c27..70e1d92 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationRevoked.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/ParticipantAuthorizationRevoked.cs @@ -21,6 +21,7 @@ public partial class ParticipantAuthorizationRevoked /// /// [JsonPropertyName("value")] + [Required] public ParticipantAuthorizationRevoked1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Reassignment.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Reassignment.cs index ed1024a..d59d92c 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Reassignment.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Reassignment.cs @@ -22,6 +22,7 @@ public partial class Reassignment /// /// [JsonPropertyName("value")] + [Required] public JsReassignment Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Reassignment1.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Reassignment1.cs index 2476738..ec182cc 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Reassignment1.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Reassignment1.cs @@ -22,6 +22,7 @@ public partial class Reassignment1 /// /// [JsonPropertyName("value")] + [Required] public JsReassignment Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TemplateFilter.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TemplateFilter.cs index f4015f7..c462dfb 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TemplateFilter.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TemplateFilter.cs @@ -22,6 +22,7 @@ public partial class TemplateFilter /// /// [JsonPropertyName("value")] + [Required] public TemplateFilter1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TopologyTransaction.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TopologyTransaction.cs index 4440113..7bd8491 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TopologyTransaction.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TopologyTransaction.cs @@ -21,6 +21,7 @@ public partial class TopologyTransaction /// /// [JsonPropertyName("value")] + [Required] public JsTopologyTransaction Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Transaction.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Transaction.cs index b1b9857..d867e5a 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Transaction.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/Transaction.cs @@ -22,6 +22,7 @@ public partial class Transaction /// /// [JsonPropertyName("value")] + [Required] public JsTransaction Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TransactionTree.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TransactionTree.cs index a2ba51c..93d8906 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TransactionTree.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/TransactionTree.cs @@ -22,6 +22,7 @@ public partial class TransactionTree /// /// [JsonPropertyName("value")] + [Required] public JsTransactionTree Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/UnassignCommand.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/UnassignCommand.cs index 0e003ed..5450e61 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/UnassignCommand.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/UnassignCommand.cs @@ -22,6 +22,7 @@ public partial class UnassignCommand /// /// [JsonPropertyName("value")] + [Required] public UnassignCommand1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/WildcardFilter.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/WildcardFilter.cs index b250a33..d1cbcf5 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/WildcardFilter.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Ledger/WildcardFilter.cs @@ -22,6 +22,7 @@ public partial class WildcardFilter /// /// [JsonPropertyName("value")] + [Required] public WildcardFilter1 Value { get; set; } = null!; } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Splice/FeatureSupportResponse.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Splice/FeatureSupportResponse.cs index 4e46f14..6b92faa 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Splice/FeatureSupportResponse.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Splice/FeatureSupportResponse.cs @@ -20,9 +20,8 @@ public partial class FeatureSupportResponse { /// /// - [JsonPropertyName("no_holding_fees_on_transfers")] - [Required] - public bool NoHoldingFeesOnTransfers { get; set; } + [JsonPropertyName("dummy")] + public bool? Dummy { get; set; } } diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Splice/WalletFeatureSupportResponse.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Splice/WalletFeatureSupportResponse.cs index ae9e6bc..7029ec2 100644 --- a/src/Trakx.Canton.ApiClient/Generated/Contracts/Splice/WalletFeatureSupportResponse.cs +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Splice/WalletFeatureSupportResponse.cs @@ -30,12 +30,6 @@ public partial class WalletFeatureSupportResponse [Required] public bool TransferPreapprovalDescription { get; set; } - /// - /// - [JsonPropertyName("no_holding_fees_on_transfers")] - [Required] - public bool NoHoldingFeesOnTransfers { get; set; } - } } \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/TransferMeta.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/TransferMeta.cs new file mode 100644 index 0000000..2f16dfb --- /dev/null +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/TransferMeta.cs @@ -0,0 +1,31 @@ +// +// Generated from OpenAPI components by generate-components-cs.py +// + +#nullable enable + +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using System.Text.Json.Serialization; + +namespace Trakx.Canton.ApiClient.Contracts.Utilities +{ + /// + /// Additional metadata associated with the transfer. + /// + [GeneratedCode("OpenAPIComponentsGen", "1.0.0")] + public partial class TransferMeta + { + /// + /// Arbitrary key-value metadata attached to the transfer. + /// + [JsonPropertyName("values")] + [Required] + public System.Collections.Generic.IDictionary Values { get; set; } = null!; + + } + +} \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/TransferObject.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/TransferObject.cs new file mode 100644 index 0000000..b3cdf52 --- /dev/null +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/TransferObject.cs @@ -0,0 +1,78 @@ +// +// Generated from OpenAPI components by generate-components-cs.py +// + +#nullable enable + +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using System.Text.Json.Serialization; + +namespace Trakx.Canton.ApiClient.Contracts.Utilities +{ + /// + /// The transfer payload containing transaction details known only to the sender and receiver. + /// + [GeneratedCode("OpenAPIComponentsGen", "1.0.0")] + public partial class TransferObject + { + /// + /// The party ID of the transfer sender. + /// + [JsonPropertyName("sender")] + [Required] + public string Sender { get; set; } = null!; + + /// + /// The party ID of the transfer receiver. + /// + [JsonPropertyName("receiver")] + [Required] + public string Receiver { get; set; } = null!; + + /// + /// The transfer amount as a decimal string. + /// + [JsonPropertyName("amount")] + [Required] + public string Amount { get; set; } = null!; + + /// + /// + [JsonPropertyName("instrumentId")] + [Required] + public InstrumentId InstrumentId { get; set; } = null!; + + /// + /// The timestamp when the transfer was requested. + /// + [JsonPropertyName("requestedAt")] + [Required] + public DateTimeOffset RequestedAt { get; set; } + + /// + /// The deadline by which the transfer must be executed. + /// + [JsonPropertyName("executeBefore")] + [Required] + public DateTimeOffset ExecuteBefore { get; set; } + + /// + /// Contract IDs of the holdings used as inputs for the transfer. + /// + [JsonPropertyName("inputHoldingCids")] + [Required] + public System.Collections.Generic.IList InputHoldingCids { get; set; } = new List(); + + /// + /// + [JsonPropertyName("meta")] + [Required] + public TransferMeta Meta { get; set; } = null!; + + } + +} \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/TransferProofStatus.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/TransferProofStatus.cs new file mode 100644 index 0000000..3b089ad --- /dev/null +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/TransferProofStatus.cs @@ -0,0 +1,42 @@ +// +// Generated from OpenAPI components by generate-components-cs.py +// + +#nullable enable + +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using System.Text.Json.Serialization; + +namespace Trakx.Canton.ApiClient.Contracts.Utilities +{ + /// + /// The status of the transfer proof verification: + /// + /// `Success`: The proof is verified and the transfer was successfully concluded + /// `Failure`: The proof is verified, but the transfer did not successfully conclude. + /// `Pending`: The transaction is still in progress (e.g., a transfer offer has been sent but not yet accepted in a two-step flow). + /// + /// + [GeneratedCode("OpenAPIComponentsGen", "1.0.0")] + [JsonConverter(typeof(JsonStringEnumConverter))] + public enum TransferProofStatus + { + /// + /// + [EnumMember(Value = "Success")] + Success = 0, + /// + /// + [EnumMember(Value = "Failure")] + Failure = 1, + /// + /// + [EnumMember(Value = "Pending")] + Pending = 2, + } + +} \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/VerifyTransferProofRequest.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/VerifyTransferProofRequest.cs new file mode 100644 index 0000000..f8534a9 --- /dev/null +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/VerifyTransferProofRequest.cs @@ -0,0 +1,37 @@ +// +// Generated from OpenAPI components by generate-components-cs.py +// + +#nullable enable + +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using System.Text.Json.Serialization; + +namespace Trakx.Canton.ApiClient.Contracts.Utilities +{ + /// + /// Request to verify the outcome of a transfer of Registry Utility assets on Canton. + /// + [GeneratedCode("OpenAPIComponentsGen", "1.0.0")] + public partial class VerifyTransferProofRequest + { + /// + /// For the two-step transfer workflow, specifies the most recent UpdateId. If the transfer has completed its second step (accept, reject, or withdraw), use the UpdateId associated with that action. Otherwise, use the UpdateId from the initial transfer offer. + /// + [JsonPropertyName("updateId")] + [Required] + public string UpdateId { get; set; } = null!; + + /// + /// + [JsonPropertyName("transfer")] + [Required] + public TransferObject Transfer { get; set; } = null!; + + } + +} \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/VerifyTransferProofResponse.cs b/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/VerifyTransferProofResponse.cs new file mode 100644 index 0000000..8fa6127 --- /dev/null +++ b/src/Trakx.Canton.ApiClient/Generated/Contracts/Utilities/VerifyTransferProofResponse.cs @@ -0,0 +1,30 @@ +// +// Generated from OpenAPI components by generate-components-cs.py +// + +#nullable enable + +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; +using System.Text.Json.Serialization; + +namespace Trakx.Canton.ApiClient.Contracts.Utilities +{ + /// + /// The outcome of verifying a transfer proof. + /// + [GeneratedCode("OpenAPIComponentsGen", "1.0.0")] + public partial class VerifyTransferProofResponse + { + /// + /// + [JsonPropertyName("status")] + [Required] + public TransferProofStatus Status { get; set; } + + } + +} \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/Generated/IScanStreamServerClient.cs b/src/Trakx.Canton.ApiClient/Generated/IScanStreamServerClient.cs new file mode 100644 index 0000000..af1ad54 --- /dev/null +++ b/src/Trakx.Canton.ApiClient/Generated/IScanStreamServerClient.cs @@ -0,0 +1,50 @@ +// +// This code was generated by Refitter. +// + + +using System.Collections.Generic; +using System.Text.Json.Serialization; +using System.Threading; +using System.Threading.Tasks; +using Refit; +using Trakx.Canton.ApiClient.Contracts.Splice; +using Version = Trakx.Canton.ApiClient.Contracts.Splice.Version; + +#nullable enable annotations + +namespace Trakx.Canton.ApiClient +{ + /// Scan Streaming API + [System.CodeDom.Compiler.GeneratedCode("Refitter", "1.6.4.0")] + [ApiRouteSuffix("/scan")] + public partial interface IScanStreamServerClient : ICantonApiClientBase + { + /// Download a bulk storage object + /// + /// + /// + /// A representing the instance containing the result: + /// + /// + /// Status + /// Description + /// + /// + /// 200 + /// ok + /// + /// + /// 404 + /// not found + /// + /// + /// + [Headers("Accept: application/octet-stream")] + [Get("/v0/history/bulk/download/{object_key}")] + Task> BulkStorageDownload(string object_key, CancellationToken cancellationToken = default); + + + } + +} \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/Generated/IUtilitiesClient.cs b/src/Trakx.Canton.ApiClient/Generated/IUtilitiesClient.cs index 90251b4..77aad2a 100644 --- a/src/Trakx.Canton.ApiClient/Generated/IUtilitiesClient.cs +++ b/src/Trakx.Canton.ApiClient/Generated/IUtilitiesClient.cs @@ -480,6 +480,49 @@ public partial interface IUtilitiesClient : ICantonApiClientBase [Post("/api/utilities/v0/registry/burn-mint-instruction/v0/burn-mint-factory")] Task> GetBurnMintFactory([Body] GetBurnMintFactoryRequest body, CancellationToken cancellationToken = default); + /// + /// Verify the outcome of a transfer of Registry Utility assets on Canton. + /// + /// Given an UpdateID and a Transfer Object, the service looks up the corresponding + /// ledger transaction and verifies the transfer details against the on-chain events. + /// + /// The response status indicates the transfer outcome: + /// - `Success`: The transfer was executed in the referenced transaction + /// - `Pending`: The transfer instruction has been created but not yet settled + /// - `Failure`: The transfer instruction was rejected or withdrawn by one of the parties + /// + /// If none of the above conditions are met, if the provided transfer details do not match + /// the on-chain data, or if the original TransferInstruction contract cannot be retrieved, + /// a `400` is returned. No further diagnostic information is included in + /// the error response to prevent unintended disclosure of sensitive ledger data. + /// + /// + /// + /// + /// A representing the instance containing the result: + /// + /// + /// Status + /// Description + /// + /// + /// 200 + /// Transfer proof verified. The `status` field indicates the transfer outcome\n(`Success`, `Pending`, or `Failure`). See the endpoint description for details.\n + /// + /// + /// 400 + /// bad request + /// + /// + /// 500 + /// Internal server error + /// + /// + /// + [Headers("Accept: application/json", "Content-Type: application/json")] + [Post("/api/utilities/v0/registry/transfer/v0/proof")] + Task> VerifyTransferProof([Body] VerifyTransferProofRequest body, CancellationToken cancellationToken = default); + } diff --git a/src/Trakx.Canton.ApiClient/Generated/IValidatorInternalClient.cs b/src/Trakx.Canton.ApiClient/Generated/IValidatorInternalClient.cs index 4955ac9..3f57f77 100644 --- a/src/Trakx.Canton.ApiClient/Generated/IValidatorInternalClient.cs +++ b/src/Trakx.Canton.ApiClient/Generated/IValidatorInternalClient.cs @@ -339,7 +339,7 @@ public partial interface IValidatorInternalClient : ICantonApiClientBase Task> ListTransferPreapprovals(CancellationToken cancellationToken = default); /// - /// Prepare a transaction to create a TransferCommand with the given CC amount to the specified receiver + /// **Deprecated**. Prepare a transaction to create a TransferCommand with the given CC amount to the specified receiver /// from the externally hosted sender. /// The transaction then needs to be signed and submitted through /// /v0/admin/external-party/transfer-preapproval/submit-send. @@ -371,12 +371,13 @@ public partial interface IValidatorInternalClient : ICantonApiClientBase /// /// /// + [System.Obsolete] [Headers("Accept: application/json", "Content-Type: application/json")] [Post("/v0/admin/external-party/transfer-preapproval/prepare-send")] Task> PrepareTransferPreapprovalSend([Body] PrepareTransferPreapprovalSendRequest body, CancellationToken cancellationToken = default); /// - /// Submit transaction generated by /v0/admin/transfer-preapproval/prepare-send + /// **Deprecated**. Submit transaction generated by /v0/admin/transfer-preapproval/prepare-send /// together with its signature. Note that this only waits until the TransferCommand is created. /// The actual transfer will happen afterwards through automation run by the SVs. /// @@ -407,6 +408,7 @@ public partial interface IValidatorInternalClient : ICantonApiClientBase /// /// /// + [System.Obsolete] [Headers("Accept: application/json", "Content-Type: application/json")] [Post("/v0/admin/external-party/transfer-preapproval/submit-send")] Task> SubmitTransferPreapprovalSend([Body] SubmitTransferPreapprovalSendRequest body, CancellationToken cancellationToken = default); diff --git a/src/Trakx.Canton.ApiClient/OpenApiSpecs/common-internal.yaml b/src/Trakx.Canton.ApiClient/OpenApiSpecs/common-internal.yaml index 41f2f6a..cd40510 100644 --- a/src/Trakx.Canton.ApiClient/OpenApiSpecs/common-internal.yaml +++ b/src/Trakx.Canton.ApiClient/OpenApiSpecs/common-internal.yaml @@ -342,10 +342,9 @@ components: If absent or `null`, there are no more pages. FeatureSupportResponse: type: object - required: - - no_holding_fees_on_transfers + required: [] properties: - no_holding_fees_on_transfers: + dummy: type: boolean Contract: type: object diff --git a/src/Trakx.Canton.ApiClient/OpenApiSpecs/ledger-async.yaml b/src/Trakx.Canton.ApiClient/OpenApiSpecs/ledger-async.yaml index bf109a1..176678d 100644 --- a/src/Trakx.Canton.ApiClient/OpenApiSpecs/ledger-async.yaml +++ b/src/Trakx.Canton.ApiClient/OpenApiSpecs/ledger-async.yaml @@ -213,6 +213,8 @@ components: description: 'A completion represents the status of a submitted command on the ledger: it can be successful or failed.' type: object + required: + - value properties: value: $ref: '#/components/schemas/Completion1' @@ -311,6 +313,34 @@ components: - for successful/failed assign commands: identifies the target synchronizer Required + paidTrafficCost: + description: |- + The traffic cost paid by this participant node for the confirmation request + for the submitted command. + + Commands whose execution is rejected before their corresponding + confirmation request is ordered by the synchronizer will report a paid + traffic cost of zero. + If a confirmation request is ordered for a command, but the request fails + (e.g., due to contention with a concurrent contract archival), the traffic + cost is paid and reported on the failed completion for the request. + + If you want to correlate the traffic cost of a successful completion + with the transaction that resulted from the command, you can use the + ``offset`` field to retrieve the transaction using + ``UpdateService.GetUpdateByOffset`` on the same participant node; or alternatively use the ``update_id`` + field to retrieve the transaction using ``UpdateService.GetUpdateById`` on any participant node + that sees the transaction. + + Note: for completions processed before the participant started serving + traffic cost on the Ledger API, this field will be set to zero. + Additionally, the total cost incurred by the submitting node for the submission of the transaction may be greater + than the reported cost, for example if retries were issued due to failed submissions to the synchronizer. + The cost reported here is the one paid for ordering the confirmation request. + + Optional + type: integer + format: int64 JsStatus: title: JsStatus type: object @@ -479,6 +509,8 @@ components: - detect time out of commands. - provide an offset which can be used to restart consumption. type: object + required: + - value properties: value: $ref: '#/components/schemas/OffsetCheckpoint1' @@ -647,6 +679,8 @@ components: title: InterfaceFilter description: This filter matches contracts that implement a specific interface. type: object + required: + - value properties: value: $ref: '#/components/schemas/InterfaceFilter1' @@ -686,6 +720,8 @@ components: title: TemplateFilter description: This filter matches contracts of a specific template. type: object + required: + - value properties: value: $ref: '#/components/schemas/TemplateFilter1' @@ -718,6 +754,8 @@ components: title: WildcardFilter description: This filter matches all templates. type: object + required: + - value properties: value: $ref: '#/components/schemas/WildcardFilter1' @@ -1419,6 +1457,8 @@ components: - detect time out of commands. - provide an offset which can be used to restart consumption. type: object + required: + - value properties: value: $ref: '#/components/schemas/OffsetCheckpoint1' @@ -1426,6 +1466,8 @@ components: title: Reassignment description: Complete view of an on-ledger reassignment. type: object + required: + - value properties: value: $ref: '#/components/schemas/JsReassignment' @@ -1505,6 +1547,19 @@ components: Required type: string + paidTrafficCost: + description: |- + The traffic cost that this participant node paid for the corresponding (un)assignment request. + + Not set for transactions that were + - initiated by another participant + - initiated offline via the repair service + - processed before the participant started serving traffic cost on the Ledger API + - returned as part of a query filtering for a non submitting party + + Optional: can be empty + type: integer + format: int64 JsReassignmentEvent: title: JsReassignmentEvent oneOf: @@ -1549,12 +1604,16 @@ components: description: Records that a contract has been unassigned, and it becomes unusable on the source synchronizer type: object + required: + - value properties: value: $ref: '#/components/schemas/UnassignedEvent' TopologyTransaction: title: TopologyTransaction type: object + required: + - value properties: value: $ref: '#/components/schemas/JsTopologyTransaction' @@ -1659,6 +1718,8 @@ components: ParticipantAuthorizationAdded: title: ParticipantAuthorizationAdded type: object + required: + - value properties: value: $ref: '#/components/schemas/ParticipantAuthorizationAdded1' @@ -1687,6 +1748,8 @@ components: ParticipantAuthorizationChanged: title: ParticipantAuthorizationChanged type: object + required: + - value properties: value: $ref: '#/components/schemas/ParticipantAuthorizationChanged1' @@ -1715,6 +1778,8 @@ components: ParticipantAuthorizationRevoked: title: ParticipantAuthorizationRevoked type: object + required: + - value properties: value: $ref: '#/components/schemas/ParticipantAuthorizationRevoked1' @@ -1736,6 +1801,8 @@ components: description: Filtered view of an on-ledger transaction's create and archive events. type: object + required: + - value properties: value: $ref: '#/components/schemas/JsTransaction' @@ -1834,6 +1901,20 @@ components: Optional: can be empty type: string + paidTrafficCost: + description: |- + The traffic cost that this participant node paid for the confirmation + request for this transaction. + + Not set for transactions that were + - initiated by another participant + - initiated offline via the repair service + - processed before the participant started serving traffic cost on the Ledger API + - returned as part of a query filtering for a non submitting party + + Optional: can be empty + type: integer + format: int64 Event: title: Event description: |- @@ -2140,6 +2221,8 @@ components: - detect time out of commands. - provide an offset which can be used to restart consumption. type: object + required: + - value properties: value: $ref: '#/components/schemas/OffsetCheckpoint1' @@ -2147,6 +2230,8 @@ components: title: Reassignment description: Complete view of an on-ledger reassignment. type: object + required: + - value properties: value: $ref: '#/components/schemas/JsReassignment' @@ -2156,6 +2241,8 @@ components: Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. Complete view of an on-ledger transaction. type: object + required: + - value properties: value: $ref: '#/components/schemas/JsTransactionTree' diff --git a/src/Trakx.Canton.ApiClient/OpenApiSpecs/ledger.yaml b/src/Trakx.Canton.ApiClient/OpenApiSpecs/ledger.yaml index 31c66a1..d9d8585 100644 --- a/src/Trakx.Canton.ApiClient/OpenApiSpecs/ledger.yaml +++ b/src/Trakx.Canton.ApiClient/OpenApiSpecs/ledger.yaml @@ -2391,6 +2391,8 @@ components: title: AssignCommand description: Assign a contract type: object + required: + - value properties: value: $ref: '#/components/schemas/AssignCommand1' @@ -2551,6 +2553,8 @@ components: description: 'A completion represents the status of a submitted command on the ledger: it can be successful or failed.' type: object + required: + - value properties: value: $ref: '#/components/schemas/Completion1' @@ -2649,6 +2653,34 @@ components: - for successful/failed assign commands: identifies the target synchronizer Required + paidTrafficCost: + description: |- + The traffic cost paid by this participant node for the confirmation request + for the submitted command. + + Commands whose execution is rejected before their corresponding + confirmation request is ordered by the synchronizer will report a paid + traffic cost of zero. + If a confirmation request is ordered for a command, but the request fails + (e.g., due to contention with a concurrent contract archival), the traffic + cost is paid and reported on the failed completion for the request. + + If you want to correlate the traffic cost of a successful completion + with the transaction that resulted from the command, you can use the + ``offset`` field to retrieve the transaction using + ``UpdateService.GetUpdateByOffset`` on the same participant node; or alternatively use the ``update_id`` + field to retrieve the transaction using ``UpdateService.GetUpdateById`` on any participant node + that sees the transaction. + + Note: for completions processed before the participant started serving + traffic cost on the Ledger API, this field will be set to zero. + Additionally, the total cost incurred by the submitting node for the submission of the transaction may be greater + than the reported cost, for example if retries were issued due to failed submissions to the synchronizer. + The cost reported here is the one paid for ordering the confirmation request. + + Optional + type: integer + format: int64 CompletionResponse: title: CompletionResponse description: Required @@ -4498,6 +4530,8 @@ components: title: InterfaceFilter description: This filter matches contracts that implement a specific interface. type: object + required: + - value properties: value: $ref: '#/components/schemas/InterfaceFilter1' @@ -5480,6 +5514,19 @@ components: Required type: string + paidTrafficCost: + description: |- + The traffic cost that this participant node paid for the corresponding (un)assignment request. + + Not set for transactions that were + - initiated by another participant + - initiated offline via the repair service + - processed before the participant started serving traffic cost on the Ledger API + - returned as part of a query filtering for a non submitting party + + Optional: can be empty + type: integer + format: int64 JsReassignmentEvent: title: JsReassignmentEvent oneOf: @@ -5723,6 +5770,20 @@ components: Optional: can be empty type: string + paidTrafficCost: + description: |- + The traffic cost that this participant node paid for the confirmation + request for this transaction. + + Not set for transactions that were + - initiated by another participant + - initiated offline via the repair service + - processed before the participant started serving traffic cost on the Ledger API + - returned as part of a query filtering for a non submitting party + + Optional: can be empty + type: integer + format: int64 JsTransactionTree: title: JsTransactionTree description: |- @@ -5801,6 +5862,8 @@ components: description: Records that a contract has been unassigned, and it becomes unusable on the source synchronizer type: object + required: + - value properties: value: $ref: '#/components/schemas/UnassignedEvent' @@ -6112,6 +6175,8 @@ components: - detect time out of commands. - provide an offset which can be used to restart consumption. type: object + required: + - value properties: value: $ref: '#/components/schemas/OffsetCheckpoint1' @@ -6150,6 +6215,8 @@ components: - detect time out of commands. - provide an offset which can be used to restart consumption. type: object + required: + - value properties: value: $ref: '#/components/schemas/OffsetCheckpoint1' @@ -6161,6 +6228,8 @@ components: - detect time out of commands. - provide an offset which can be used to restart consumption. type: object + required: + - value properties: value: $ref: '#/components/schemas/OffsetCheckpoint1' @@ -6316,6 +6385,8 @@ components: ParticipantAuthorizationAdded: title: ParticipantAuthorizationAdded type: object + required: + - value properties: value: $ref: '#/components/schemas/ParticipantAuthorizationAdded1' @@ -6344,6 +6415,8 @@ components: ParticipantAuthorizationChanged: title: ParticipantAuthorizationChanged type: object + required: + - value properties: value: $ref: '#/components/schemas/ParticipantAuthorizationChanged1' @@ -6372,6 +6445,8 @@ components: ParticipantAuthorizationRevoked: title: ParticipantAuthorizationRevoked type: object + required: + - value properties: value: $ref: '#/components/schemas/ParticipantAuthorizationRevoked1' @@ -6527,6 +6602,8 @@ components: title: Reassignment description: Complete view of an on-ledger reassignment. type: object + required: + - value properties: value: $ref: '#/components/schemas/JsReassignment' @@ -6534,6 +6611,8 @@ components: title: Reassignment description: Complete view of an on-ledger reassignment. type: object + required: + - value properties: value: $ref: '#/components/schemas/JsReassignment' @@ -6845,6 +6924,8 @@ components: title: TemplateFilter description: This filter matches contracts of a specific template. type: object + required: + - value properties: value: $ref: '#/components/schemas/TemplateFilter1' @@ -6979,6 +7060,8 @@ components: TopologyTransaction: title: TopologyTransaction type: object + required: + - value properties: value: $ref: '#/components/schemas/JsTopologyTransaction' @@ -6999,6 +7082,8 @@ components: description: Filtered view of an on-ledger transaction's create and archive events. type: object + required: + - value properties: value: $ref: '#/components/schemas/JsTransaction' @@ -7057,6 +7142,8 @@ components: Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. Complete view of an on-ledger transaction. type: object + required: + - value properties: value: $ref: '#/components/schemas/JsTransactionTree' @@ -7095,6 +7182,8 @@ components: title: UnassignCommand description: Unassign a contract type: object + required: + - value properties: value: $ref: '#/components/schemas/UnassignCommand1' @@ -7836,6 +7925,8 @@ components: title: WildcardFilter description: This filter matches all templates. type: object + required: + - value properties: value: $ref: '#/components/schemas/WildcardFilter1' diff --git a/src/Trakx.Canton.ApiClient/OpenApiSpecs/scan-stream-server.yaml b/src/Trakx.Canton.ApiClient/OpenApiSpecs/scan-stream-server.yaml new file mode 100644 index 0000000..0524fb5 --- /dev/null +++ b/src/Trakx.Canton.ApiClient/OpenApiSpecs/scan-stream-server.yaml @@ -0,0 +1,61 @@ +openapi: 3.0.0 +info: + title: Scan Streaming API + version: 0.0.1 +servers: + - url: https://example.com/api/scan +tags: + - name: external + description: | + These endpoints are intended for public usage and will remain backward-compatible. + - name: internal + description: | + For internal usage only, not guaranteed to be stable or backward-compatible. + - name: deprecated + description: | + These endpoints are deprecated and will be removed in a future release. + - name: scan + description: | + The internal and external endpoints. +paths: + /v0/history/bulk/download/{object_key}: + get: + tags: + - external + - scan + x-jvm-package: scanStream + operationId: bulkStorageDownload + description: Download a bulk storage object + parameters: + - name: object_key + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/octet-stream: + schema: + type: string + format: binary + x-scala-type: org.apache.pekko.http.scaladsl.model.ResponseEntity + '404': + $ref: '#/components/responses/404' +components: + schemas: + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + responses: + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/src/Trakx.Canton.ApiClient/OpenApiSpecs/scan.yaml b/src/Trakx.Canton.ApiClient/OpenApiSpecs/scan.yaml index 4205d5c..c842a99 100644 --- a/src/Trakx.Canton.ApiClient/OpenApiSpecs/scan.yaml +++ b/src/Trakx.Canton.ApiClient/OpenApiSpecs/scan.yaml @@ -4325,10 +4325,9 @@ components: type: object FeatureSupportResponse: type: object - required: - - no_holding_fees_on_transfers + required: [] properties: - no_holding_fees_on_transfers: + dummy: type: boolean responses: '400': diff --git a/src/Trakx.Canton.ApiClient/OpenApiSpecs/sv-internal.yaml b/src/Trakx.Canton.ApiClient/OpenApiSpecs/sv-internal.yaml index 54f12aa..93d4fc6 100644 --- a/src/Trakx.Canton.ApiClient/OpenApiSpecs/sv-internal.yaml +++ b/src/Trakx.Canton.ApiClient/OpenApiSpecs/sv-internal.yaml @@ -1605,10 +1605,9 @@ components: type: string FeatureSupportResponse: type: object - required: - - no_holding_fees_on_transfers + required: [] properties: - no_holding_fees_on_transfers: + dummy: type: boolean responses: '400': diff --git a/src/Trakx.Canton.ApiClient/OpenApiSpecs/utilities.yaml b/src/Trakx.Canton.ApiClient/OpenApiSpecs/utilities.yaml index 0d631a4..b2fc3a3 100644 --- a/src/Trakx.Canton.ApiClient/OpenApiSpecs/utilities.yaml +++ b/src/Trakx.Canton.ApiClient/OpenApiSpecs/utilities.yaml @@ -392,6 +392,46 @@ paths: "500": $ref: "#/components/responses/500" + /api/utilities/v0/registry/transfer/v0/proof: + post: + tags: [registry] + operationId: "verifyTransferProof" + x-jvm-package: registry + description: | + Verify the outcome of a transfer of Registry Utility assets on Canton. + + Given an UpdateID and a Transfer Object, the service looks up the corresponding + ledger transaction and verifies the transfer details against the on-chain events. + + The response status indicates the transfer outcome: + - `Success`: The transfer was executed in the referenced transaction + - `Pending`: The transfer instruction has been created but not yet settled + - `Failure`: The transfer instruction was rejected or withdrawn by one of the parties + + If none of the above conditions are met, if the provided transfer details do not match + the on-chain data, or if the original TransferInstruction contract cannot be retrieved, + a `400` is returned. No further diagnostic information is included in + the error response to prevent unintended disclosure of sensitive ledger data. + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/VerifyTransferProofRequest" + responses: + "200": + description: | + Transfer proof verified. The `status` field indicates the transfer outcome + (`Success`, `Pending`, or `Failure`). See the endpoint description for details. + content: + application/json: + schema: + $ref: "#/components/schemas/VerifyTransferProofResponse" + "400": + $ref: "#/components/responses/400" + "500": + $ref: "#/components/responses/500" + components: responses: "400": @@ -783,4 +823,94 @@ components: type: string id: description: "The unique identifier of the instrument." - type: string \ No newline at end of file + type: string + + VerifyTransferProofRequest: + description: "Request to verify the outcome of a transfer of Registry Utility assets on Canton." + type: object + required: + - updateId + - transfer + properties: + updateId: + description: | + For the two-step transfer workflow, specifies the most recent UpdateId. + If the transfer has completed its second step (accept, reject, or withdraw), + use the UpdateId associated with that action. Otherwise, use the UpdateId from the initial transfer offer. + type: string + transfer: + $ref: "#/components/schemas/TransferObject" + + TransferObject: + description: "The transfer payload containing transaction details known only to the sender and receiver." + type: object + required: + - sender + - receiver + - amount + - instrumentId + - requestedAt + - executeBefore + - inputHoldingCids + - meta + properties: + sender: + description: "The party ID of the transfer sender." + type: string + receiver: + description: "The party ID of the transfer receiver." + type: string + amount: + description: "The transfer amount as a decimal string." + type: string + example: "1.0000000000" + instrumentId: + $ref: "#/components/schemas/InstrumentId" + requestedAt: + description: "The timestamp when the transfer was requested." + type: string + format: date-time + executeBefore: + description: "The deadline by which the transfer must be executed." + type: string + format: date-time + inputHoldingCids: + description: "Contract IDs of the holdings used as inputs for the transfer." + type: array + items: + type: string + meta: + $ref: "#/components/schemas/TransferMeta" + + TransferMeta: + description: "Additional metadata associated with the transfer." + type: object + required: + - values + properties: + values: + description: "Arbitrary key-value metadata attached to the transfer." + type: object + additionalProperties: + type: string + + VerifyTransferProofResponse: + description: "The outcome of verifying a transfer proof." + type: object + required: + - status + properties: + status: + $ref: "#/components/schemas/TransferProofStatus" + + TransferProofStatus: + description: | + The status of the transfer proof verification: + - `Success`: The proof is verified and the transfer was successfully concluded + - `Failure`: The proof is verified, but the transfer did not successfully conclude. + - `Pending`: The transaction is still in progress (e.g., a transfer offer has been sent but not yet accepted in a two-step flow). + type: string + enum: + - Success + - Failure + - Pending \ No newline at end of file diff --git a/src/Trakx.Canton.ApiClient/OpenApiSpecs/validator-internal.yaml b/src/Trakx.Canton.ApiClient/OpenApiSpecs/validator-internal.yaml index 9114c62..027a40a 100644 --- a/src/Trakx.Canton.ApiClient/OpenApiSpecs/validator-internal.yaml +++ b/src/Trakx.Canton.ApiClient/OpenApiSpecs/validator-internal.yaml @@ -298,10 +298,11 @@ paths: post: tags: - validator + deprecated: true x-jvm-package: validator_admin operationId: prepareTransferPreapprovalSend description: | - Prepare a transaction to create a TransferCommand with the given CC amount to the specified receiver + **Deprecated**. Prepare a transaction to create a TransferCommand with the given CC amount to the specified receiver from the externally hosted sender. The transaction then needs to be signed and submitted through /v0/admin/external-party/transfer-preapproval/submit-send. @@ -330,10 +331,11 @@ paths: post: tags: - validator + deprecated: true x-jvm-package: validator_admin operationId: submitTransferPreapprovalSend description: | - Submit transaction generated by /v0/admin/transfer-preapproval/prepare-send + **Deprecated**. Submit transaction generated by /v0/admin/transfer-preapproval/prepare-send together with its signature. Note that this only waits until the TransferCommand is created. The actual transfer will happen afterwards through automation run by the SVs. security: diff --git a/src/Trakx.Canton.ApiClient/OpenApiSpecs/wallet-internal.yaml b/src/Trakx.Canton.ApiClient/OpenApiSpecs/wallet-internal.yaml index 1f9a7bd..4262c79 100644 --- a/src/Trakx.Canton.ApiClient/OpenApiSpecs/wallet-internal.yaml +++ b/src/Trakx.Canton.ApiClient/OpenApiSpecs/wallet-internal.yaml @@ -1645,14 +1645,11 @@ components: required: - token_standard - transfer_preapproval_description - - no_holding_fees_on_transfers properties: token_standard: type: boolean transfer_preapproval_description: type: boolean - no_holding_fees_on_transfers: - type: boolean AllocateAmuletRequest: type: object required: diff --git a/tests/Trakx.Canton.ApiClient.Tests/Configuration/CantonApiClientConfigurationTests.cs b/tests/Trakx.Canton.ApiClient.Tests/Configuration/CantonApiClientConfigurationTests.cs index 3afb51b..3359b04 100644 --- a/tests/Trakx.Canton.ApiClient.Tests/Configuration/CantonApiClientConfigurationTests.cs +++ b/tests/Trakx.Canton.ApiClient.Tests/Configuration/CantonApiClientConfigurationTests.cs @@ -22,6 +22,7 @@ public class CantonApiClientConfigurationTests [InlineData(typeof(IAnsExternalClient), $"{SpliceApiUrl}/validator")] [InlineData(typeof(IScanClient), $"{SpliceApiUrl}/scan")] [InlineData(typeof(IScanProxyClient), $"{SpliceApiUrl}/validator")] + [InlineData(typeof(IScanStreamServerClient), $"{SpliceApiUrl}/scan")] [InlineData(typeof(ISplitwellInternalClient), $"{SpliceApiUrl}/splitwell")] [InlineData(typeof(ISvInternalClient), $"{SpliceApiUrl}/sv")] [InlineData(typeof(ITokenMetadataV1Client), TokenStandardApiUrl)]