diff --git a/api-specs/ledger-api/3.4.11/asyncapi.yaml b/api-specs/ledger-api/3.4.11/asyncapi.yaml new file mode 100644 index 000000000..8e250c1ab --- /dev/null +++ b/api-specs/ledger-api/3.4.11/asyncapi.yaml @@ -0,0 +1,2230 @@ +asyncapi: 2.6.0 +info: + title: JSON Ledger API WebSocket endpoints + version: 3.4.11-SNAPSHOT +channels: + /v2/commands/completions: + description: Get completions stream + subscribe: + operationId: onV2CommandsCompletions + description: Get completions stream + message: + $ref: '#/components/messages/Either_JsCantonError_CompletionStreamResponse' + publish: + operationId: sendV2CommandsCompletions + description: Get completions stream + message: + $ref: '#/components/messages/CompletionStreamRequest' + bindings: + ws: + method: GET + /v2/state/active-contracts: + description: Get active contracts stream + subscribe: + operationId: onV2StateActive-contracts + description: Get active contracts stream + message: + $ref: '#/components/messages/Either_JsCantonError_JsGetActiveContractsResponse' + publish: + operationId: sendV2StateActive-contracts + description: Get active contracts stream + message: + $ref: '#/components/messages/GetActiveContractsRequest' + bindings: + ws: + method: GET + /v2/updates: + description: Get updates stream + subscribe: + operationId: onV2Updates + description: Get updates stream + message: + $ref: '#/components/messages/Either_JsCantonError_JsGetUpdatesResponse' + publish: + operationId: sendV2Updates + description: Get updates stream + message: + $ref: '#/components/messages/GetUpdatesRequest' + bindings: + ws: + method: GET + /v2/updates/flats: + description: Get flat transactions update stream. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates instead. + subscribe: + operationId: onV2UpdatesFlats + description: Get flat transactions update stream. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates instead. + message: + $ref: '#/components/messages/Either_JsCantonError_JsGetUpdatesResponse' + publish: + operationId: sendV2UpdatesFlats + description: Get flat transactions update stream. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates instead. + message: + $ref: '#/components/messages/GetUpdatesRequest' + bindings: + ws: + method: GET + /v2/updates/trees: + description: Get update transactions tree stream. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates instead. + subscribe: + operationId: onV2UpdatesTrees + description: Get update transactions tree stream. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates instead. + message: + $ref: '#/components/messages/Either_JsCantonError_JsGetUpdateTreesResponse' + publish: + operationId: sendV2UpdatesTrees + description: Get update transactions tree stream. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates instead. + message: + $ref: '#/components/messages/GetUpdatesRequest' + bindings: + ws: + method: GET +components: + schemas: + JsCantonError: + title: JsCantonError + type: object + required: + - code + - cause + - context + - errorCategory + properties: + code: + type: string + cause: + type: string + correlationId: + type: string + traceId: + type: string + context: + $ref: '#/components/schemas/Map_String' + resources: + type: array + items: + $ref: '#/components/schemas/Tuple2_String_String' + errorCategory: + type: integer + format: int32 + grpcCodeValue: + type: integer + format: int32 + retryInfo: + type: string + definiteAnswer: + type: boolean + Map_String: + title: Map_String + type: object + additionalProperties: + type: string + Tuple2_String_String: + title: Tuple2_String_String + type: array + prefixItems: + - type: string + - type: string + CompletionStreamRequest: + title: CompletionStreamRequest + type: object + required: + - userId + - beginExclusive + properties: + userId: + description: |- + Only completions of commands submitted with the same user_id will be visible in the stream. + Must be a valid UserIdString (as described in ``value.proto``). + Required unless authentication is used with a user token. + In that case, the token's user-id will be used for the request's user_id. + type: string + parties: + description: |- + Non-empty list of parties whose data should be included. + The stream shows only completions of commands for which at least one of the ``act_as`` parties is in the given set of parties. + Must be a valid PartyIdString (as described in ``value.proto``). + Required + type: array + items: + type: string + beginExclusive: + description: |- + This optional field indicates the minimum offset for completions. This can be used to resume an earlier completion stream. + If not set the ledger uses the ledger begin offset instead. + If specified, it must be a valid absolute offset (positive integer) or zero (ledger begin offset). + If the ledger has been pruned, this parameter must be specified and greater than the pruning offset. + type: integer + format: int64 + Either_JsCantonError_CompletionStreamResponse: + title: Either_JsCantonError_CompletionStreamResponse + oneOf: + - $ref: '#/components/schemas/CompletionStreamResponse' + - $ref: '#/components/schemas/JsCantonError' + Map_K_V: + title: Map_K_V + type: object + additionalProperties: + type: string + CompletionStreamResponse: + title: CompletionStreamResponse + type: object + required: + - completionResponse + properties: + completionResponse: + $ref: '#/components/schemas/CompletionResponse' + CompletionResponse: + title: CompletionResponse + oneOf: + - type: object + required: + - Completion + properties: + Completion: + $ref: '#/components/schemas/Completion' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty1' + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint' + Completion: + title: Completion + 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' + Completion1: + title: Completion + description: 'A completion represents the status of a submitted command on the + ledger: it can be successful or failed.' + type: object + required: + - commandId + - updateId + - userId + - submissionId + - deduplicationPeriod + - offset + properties: + commandId: + description: |- + The ID of the succeeded or failed command. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + status: + $ref: '#/components/schemas/JsStatus' + description: |- + Identifies the exact type of the error. + It uses the same format of conveying error details as it is used for the RPC responses of the APIs. + Optional + updateId: + description: |- + The update_id of the transaction or reassignment that resulted from the command with command_id. + Only set for successfully executed commands. + Must be a valid LedgerString (as described in ``value.proto``). + type: string + userId: + description: |- + The user-id that was used for the submission, as described in ``commands.proto``. + Must be a valid UserIdString (as described in ``value.proto``). + Optional for historic completions where this data is not available. + type: string + actAs: + description: |- + The set of parties on whose behalf the commands were executed. + Contains the ``act_as`` parties from ``commands.proto`` + filtered to the requesting parties in CompletionStreamRequest. + The order of the parties need not be the same as in the submission. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Optional for historic completions where this data is not available. + type: array + items: + type: string + submissionId: + description: |- + The submission ID this completion refers to, as described in ``commands.proto``. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + offset: + description: |- + May be used in a subsequent CompletionStreamRequest to resume the consumption of this stream at a later time. + Required, must be a valid absolute offset (positive integer). + type: integer + format: int64 + synchronizerTime: + $ref: '#/components/schemas/SynchronizerTime' + description: |- + The synchronizer along with its record time. + The synchronizer id provided, in case of + + - successful/failed transactions: identifies the synchronizer of the transaction + - for successful/failed unassign commands: identifies the source synchronizer + - for successful/failed assign commands: identifies the target synchronizer + + Required + JsStatus: + title: JsStatus + type: object + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + $ref: '#/components/schemas/ProtoAny' + ProtoAny: + title: ProtoAny + type: object + required: + - typeUrl + - value + - unknownFields + properties: + typeUrl: + type: string + value: + type: string + unknownFields: + $ref: '#/components/schemas/UnknownFieldSet' + valueDecoded: + type: string + UnknownFieldSet: + title: UnknownFieldSet + type: object + required: + - fields + properties: + fields: + $ref: '#/components/schemas/Map_Int_Field' + Map_Int_Field: + title: Map_Int_Field + type: object + additionalProperties: + $ref: '#/components/schemas/Field' + Field: + title: Field + type: object + properties: + varint: + type: array + items: + type: integer + format: int64 + fixed64: + type: array + items: + type: integer + format: int64 + fixed32: + type: array + items: + type: integer + format: int32 + lengthDelimited: + type: array + items: + type: string + DeduplicationPeriod: + title: DeduplicationPeriod + oneOf: + - type: object + required: + - DeduplicationDuration + properties: + DeduplicationDuration: + $ref: '#/components/schemas/DeduplicationDuration' + - type: object + required: + - DeduplicationOffset + properties: + DeduplicationOffset: + $ref: '#/components/schemas/DeduplicationOffset' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty' + DeduplicationDuration: + title: DeduplicationDuration + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Duration' + Duration: + title: Duration + type: object + required: + - seconds + - nanos + properties: + seconds: + type: integer + format: int64 + nanos: + type: integer + format: int32 + unknownFields: + $ref: '#/components/schemas/UnknownFieldSet' + description: This field is automatically added as part of protobuf to json + mapping + DeduplicationOffset: + title: DeduplicationOffset + type: object + required: + - value + properties: + value: + type: integer + format: int64 + Empty: + title: Empty + type: object + TraceContext: + title: TraceContext + type: object + properties: + traceparent: + description: https://www.w3.org/TR/trace-context/ + type: string + tracestate: + description: '' + type: string + SynchronizerTime: + title: SynchronizerTime + type: object + required: + - synchronizerId + properties: + synchronizerId: + description: |- + The id of the synchronizer. + Required + type: string + recordTime: + description: |- + All commands with a maximum record time below this value MUST be considered lost if their completion has not arrived before this checkpoint. + Required + type: string + Empty1: + title: Empty + type: object + OffsetCheckpoint: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - 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' + OffsetCheckpoint1: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - detect time out of commands. + - provide an offset which can be used to restart consumption. + type: object + required: + - offset + properties: + offset: + description: |- + The participant's offset, the details of the offset field are described in ``community/ledger-api/README.md``. + Required, must be a valid absolute offset (positive integer). + type: integer + format: int64 + synchronizerTimes: + description: '' + type: array + items: + $ref: '#/components/schemas/SynchronizerTime' + GetActiveContractsRequest: + title: GetActiveContractsRequest + description: |- + If the given offset is different than the ledger end, and there are (un)assignments in-flight at the given offset, + the snapshot may fail with "FAILED_PRECONDITION/PARTICIPANT_PRUNED_DATA_ACCESSED". + Note that it is ok to request acs snapshots for party migration with offsets other than ledger end, because party + migration is not concerned with incomplete (un)assignments. + type: object + required: + - verbose + - activeAtOffset + properties: + filter: + $ref: '#/components/schemas/TransactionFilter' + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Templates to include in the served snapshot, per party. + Optional, if specified event_format must be unset, if not specified event_format must be set. + verbose: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + Optional, if specified event_format must be unset. + type: boolean + activeAtOffset: + description: |- + The offset at which the snapshot of the active contracts will be computed. + Must be no greater than the current ledger end offset. + Must be greater than or equal to the last pruning offset. + Required, must be a valid absolute offset (positive integer) or ledger begin offset (zero). + If zero, the empty set will be returned. + type: integer + format: int64 + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: |- + Format of the contract_entries in the result. In case of CreatedEvent the presentation will be of + TRANSACTION_SHAPE_ACS_DELTA. + Optional for backwards compatibility, defaults to an EventFormat where: + + - filters_by_party is the filter.filters_by_party from this request + - filters_for_any_party is the filter.filters_for_any_party from this request + - verbose is the verbose field from this request + TransactionFilter: + title: TransactionFilter + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Used both for filtering create and archive events as well as for filtering transaction trees. + type: object + required: + - filtersByParty + properties: + filtersByParty: + $ref: '#/components/schemas/Map_Filters' + description: |- + Each key must be a valid PartyIdString (as described in ``value.proto``). + The interpretation of the filter depends on the transaction-shape being filtered: + + 1. For **transaction trees** (used in GetUpdateTreesResponse for backwards compatibility) all party keys used as + wildcard filters, and all subtrees whose root has one of the listed parties as an informee are returned. + If there are ``CumulativeFilter``s, those will control returned ``CreatedEvent`` fields where applicable, but will + not be used for template/interface filtering. + 2. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + the listed parties and match the per-party filter. + 3. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + stakeholders include at least one of the listed parties and match the per-party filter. + filtersForAnyParty: + $ref: '#/components/schemas/Filters' + description: |- + Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same + with the per-party filter as described above. + Map_Filters: + title: Map_Filters + type: object + additionalProperties: + $ref: '#/components/schemas/Filters' + Filters: + title: Filters + description: The union of a set of template filters, interface filters, or a + wildcard. + type: object + properties: + cumulative: + description: |- + Every filter in the cumulative list expands the scope of the resulting stream. Each interface, + template or wildcard filter means additional events that will match the query. + The impact of include_interface_view and include_created_event_blob fields in the filters will + also be accumulated. + A template or an interface SHOULD NOT appear twice in the accumulative field. + A wildcard filter SHOULD NOT be defined more than once in the accumulative field. + Optional, if no ``CumulativeFilter`` defined, the default of a single ``WildcardFilter`` with + include_created_event_blob unset is used. + type: array + items: + $ref: '#/components/schemas/CumulativeFilter' + CumulativeFilter: + title: CumulativeFilter + description: |- + A filter that matches all contracts that are either an instance of one of + the ``template_filters`` or that match one of the ``interface_filters``. + type: object + required: + - identifierFilter + properties: + identifierFilter: + $ref: '#/components/schemas/IdentifierFilter' + IdentifierFilter: + title: IdentifierFilter + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty2' + - type: object + required: + - InterfaceFilter + properties: + InterfaceFilter: + $ref: '#/components/schemas/InterfaceFilter' + - type: object + required: + - TemplateFilter + properties: + TemplateFilter: + $ref: '#/components/schemas/TemplateFilter' + - type: object + required: + - WildcardFilter + properties: + WildcardFilter: + $ref: '#/components/schemas/WildcardFilter' + Empty2: + title: Empty + type: object + InterfaceFilter: + title: InterfaceFilter + description: This filter matches contracts that implement a specific interface. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/InterfaceFilter1' + InterfaceFilter1: + title: InterfaceFilter + description: This filter matches contracts that implement a specific interface. + type: object + required: + - includeInterfaceView + - includeCreatedEventBlob + properties: + interfaceId: + description: |- + The interface that a matching contract must implement. + The ``interface_id`` needs to be valid: corresponding interface should be defined in + one of the available packages at the time of the query. + Both package-name and package-id reference formats for the identifier are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + includeInterfaceView: + description: |- + Whether to include the interface view on the contract in the returned ``CreatedEvent``. + Use this to access contract data in a uniform manner in your API client. + Optional + type: boolean + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract create event payload in your API client + for submitting it as a disclosed contract with future commands. + Optional + type: boolean + TemplateFilter: + title: TemplateFilter + description: This filter matches contracts of a specific template. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/TemplateFilter1' + TemplateFilter1: + title: TemplateFilter + description: This filter matches contracts of a specific template. + type: object + required: + - includeCreatedEventBlob + properties: + templateId: + description: |- + A template for which the payload should be included in the response. + The ``template_id`` needs to be valid: corresponding template should be defined in + one of the available packages at the time of the query. + Both package-name and package-id reference formats for the identifier are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract event payload in your API client + for submitting it as a disclosed contract with future commands. + Optional + type: boolean + WildcardFilter: + title: WildcardFilter + description: This filter matches all templates. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/WildcardFilter1' + WildcardFilter1: + title: WildcardFilter + description: This filter matches all templates. + type: object + required: + - includeCreatedEventBlob + properties: + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract create event payload in your API client + for submitting it as a disclosed contract with future commands. + Optional + type: boolean + EventFormat: + title: EventFormat + description: |- + A format for events which defines both which events should be included + and what data should be computed and included for them. + + Note that some of the filtering behavior depends on the `TransactionShape`, + which is expected to be specified alongside usages of `EventFormat`. + type: object + required: + - filtersByParty + - verbose + properties: + filtersByParty: + $ref: '#/components/schemas/Map_Filters' + description: |- + Each key must be a valid PartyIdString (as described in ``value.proto``). + The interpretation of the filter depends on the transaction-shape being filtered: + + 1. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + the listed parties and match the per-party filter. + 2. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + stakeholders include at least one of the listed parties and match the per-party filter. + + Optional + filtersForAnyParty: + $ref: '#/components/schemas/Filters' + description: |- + Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same + with the per-party filter as described above. + Optional + verbose: + description: |- + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + Optional + type: boolean + Either_JsCantonError_JsGetActiveContractsResponse: + title: Either_JsCantonError_JsGetActiveContractsResponse + oneOf: + - $ref: '#/components/schemas/JsCantonError' + - $ref: '#/components/schemas/JsGetActiveContractsResponse' + JsGetActiveContractsResponse: + title: JsGetActiveContractsResponse + type: object + required: + - workflowId + - contractEntry + properties: + workflowId: + description: |- + The workflow ID used in command submission which corresponds to the contract_entry. Only set if + the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + contractEntry: + $ref: '#/components/schemas/JsContractEntry' + JsContractEntry: + title: JsContractEntry + oneOf: + - type: object + required: + - JsActiveContract + properties: + JsActiveContract: + $ref: '#/components/schemas/JsActiveContract' + - type: object + required: + - JsEmpty + properties: + JsEmpty: + $ref: '#/components/schemas/JsEmpty' + - type: object + required: + - JsIncompleteAssigned + properties: + JsIncompleteAssigned: + $ref: '#/components/schemas/JsIncompleteAssigned' + - type: object + required: + - JsIncompleteUnassigned + properties: + JsIncompleteUnassigned: + $ref: '#/components/schemas/JsIncompleteUnassigned' + JsActiveContract: + title: JsActiveContract + type: object + required: + - createdEvent + - synchronizerId + - reassignmentCounter + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + Required + The event as it appeared in the context of its last update (i.e. daml transaction or + reassignment). In particular, the last offset, node_id pair is preserved. + The last update is the most recent update created or assigned this contract on synchronizer_id synchronizer. + The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used + for lookups. + synchronizerId: + description: |- + A valid synchronizer id + Required + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + This field will be the reassignment_counter of the latest observable activation event on this synchronizer, which is + before the active_at_offset. + Required + type: integer + format: int64 + CreatedEvent: + title: CreatedEvent + description: Records that a contract has been created, and choices may now be + exercised on it. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - createdEventBlob + - createdAt + - packageName + - representativePackageId + - acsDelta + properties: + offset: + description: |- + 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. + Required, it is a valid absolute offset (positive integer) + type: integer + format: int64 + nodeId: + description: |- + 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. + Required, must be valid node ID (non-negative integer) + type: integer + format: int32 + contractId: + description: |- + The ID of the created contract. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + templateId: + description: |- + The template of the created contract. + The identifier uses the package-id reference format. + + Required + type: string + contractKey: + description: |- + The key of the created contract. + This will be set if and only if ``template_id`` defines a contract key. + Optional + createArgument: {} + createdEventBlob: + description: |- + 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 + type: string + interfaceViews: + description: |- + 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 + type: array + items: + $ref: '#/components/schemas/JsInterfaceView' + witnessParties: + description: |- + 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 + type: array + items: + type: string + signatories: + description: |- + The signatories for this contract as specified by the template. + Required + type: array + items: + type: string + observers: + description: |- + The observers for this contract as specified explicitly by the template or implicitly as choice controllers. + This field never contains parties that are signatories. + Required + type: array + items: + type: string + createdAt: + description: |- + Ledger effective time of the transaction that created the contract. + Required + type: string + packageName: + description: |- + The package name of the created contract. + Required + type: string + representativePackageId: + description: |- + 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 + type: string + acsDelta: + description: |- + 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 + type: boolean + JsInterfaceView: + title: JsInterfaceView + description: View of a create event matched by an interface filter. + type: object + required: + - interfaceId + - viewStatus + properties: + interfaceId: + description: |- + The interface implemented by the matched event. + The identifier uses the package-id reference format. + + Required + type: string + viewStatus: + $ref: '#/components/schemas/JsStatus' + description: |- + Whether the view was successfully computed, and if not, + the reason for the error. The error is reported using the same rules + for error codes and messages as the errors returned for API requests. + Required + viewValue: + description: |- + The value of the interface's view method on this event. + Set if it was requested in the ``InterfaceFilter`` and it could be + successfully computed. + Optional + JsEmpty: + title: JsEmpty + type: object + JsIncompleteAssigned: + title: JsIncompleteAssigned + type: object + required: + - assignedEvent + properties: + assignedEvent: + $ref: '#/components/schemas/JsAssignedEvent' + description: Required + JsAssignedEvent: + title: JsAssignedEvent + description: Records that a contract has been assigned, and it can be used on + the target synchronizer. + type: object + required: + - source + - target + - reassignmentId + - submitter + - reassignmentCounter + - createdEvent + properties: + source: + description: |- + The ID of the source synchronizer. + Must be a valid synchronizer id. + Required + type: string + target: + description: |- + The ID of the target synchronizer. + Must be a valid synchronizer id. + Required + type: string + reassignmentId: + description: |- + The ID from the unassigned event. + For correlation capabilities. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + submitter: + description: |- + Party on whose behalf the assign command was executed. + Empty if the assignment happened offline via the repair service. + Must be a valid PartyIdString (as described in ``value.proto``). + Optional + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + Required + type: integer + format: int64 + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + Required + The offset of this event refers to the offset of the assignment, + while the node_id is the index of within the batch. + JsIncompleteUnassigned: + title: JsIncompleteUnassigned + type: object + required: + - createdEvent + - unassignedEvent + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + Required + The event as it appeared in the context of its last activation update (i.e. daml transaction or + reassignment). In particular, the last activation offset, node_id pair is preserved. + The last activation update is the most recent update created or assigned this contract on synchronizer_id synchronizer before + the unassigned_event. + The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used + for lookups. + unassignedEvent: + $ref: '#/components/schemas/UnassignedEvent' + description: Required + UnassignedEvent: + title: UnassignedEvent + description: Records that a contract has been unassigned, and it becomes unusable + on the source synchronizer + type: object + required: + - reassignmentId + - contractId + - source + - target + - submitter + - reassignmentCounter + - packageName + - offset + - nodeId + properties: + reassignmentId: + description: |- + The ID of the unassignment. This needs to be used as an input for a assign ReassignmentCommand. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + contractId: + description: |- + The ID of the reassigned contract. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + templateId: + description: |- + The template of the reassigned contract. + The identifier uses the package-id reference format. + + Required + type: string + source: + description: |- + The ID of the source synchronizer + Must be a valid synchronizer id + Required + type: string + target: + description: |- + The ID of the target synchronizer + Must be a valid synchronizer id + Required + type: string + submitter: + description: |- + Party on whose behalf the unassign command was executed. + Empty if the unassignment happened offline via the repair service. + Must be a valid PartyIdString (as described in ``value.proto``). + Optional + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + Required + type: integer + format: int64 + assignmentExclusivity: + description: |- + Assignment exclusivity + Before this time (measured on the target synchronizer), only the submitter of the unassignment can initiate the assignment + Defined for reassigning participants. + Optional + type: string + witnessParties: + description: |- + The parties that are notified of this event. + Required + type: array + items: + type: string + packageName: + description: |- + The package name of the contract. + Required + type: string + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Reassignments can thus NOT be assumed to have the same offsets on different participant nodes. + Required, it is a valid absolute offset (positive integer) + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of reassignments. + Required, must be valid node ID (non-negative integer) + type: integer + format: int32 + GetUpdatesRequest: + title: GetUpdatesRequest + type: object + required: + - beginExclusive + - verbose + properties: + beginExclusive: + description: |- + Beginning of the requested ledger section (non-negative integer). + The response will only contain transactions whose offset is strictly greater than this. + If zero, the stream will start from the beginning of the ledger. + If positive, the streaming will start after this absolute offset. + If the ledger has been pruned, this parameter must be specified and be greater than the pruning offset. + type: integer + format: int64 + endInclusive: + description: |- + End of the requested ledger section. + The response will only contain transactions whose offset is less than or equal to this. + Optional, if empty, the stream will not terminate. + If specified, the stream will terminate after this absolute offset (positive integer) is reached. + type: integer + format: int64 + filter: + $ref: '#/components/schemas/TransactionFilter' + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Requesting parties with template filters. + Template filters must be empty for GetUpdateTrees requests. + Optional for backwards compatibility, if defined update_format must be unset + verbose: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels, record and variant type ids + for record fields. + Optional for backwards compatibility, if defined update_format must be unset + type: boolean + updateFormat: + $ref: '#/components/schemas/UpdateFormat' + description: |- + Must be unset for GetUpdateTrees request. + Optional for backwards compatibility for GetUpdates request: defaults to an UpdateFormat where: + + - include_transactions.event_format.filters_by_party = the filter.filters_by_party on this request + - include_transactions.event_format.filters_for_any_party = the filter.filters_for_any_party on this request + - include_transactions.event_format.verbose = the same flag specified on this request + - include_transactions.transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + - include_reassignments.filter = the same filter specified on this request + - include_reassignments.verbose = the same flag specified on this request + - include_topology_events.include_participant_authorization_events.parties = all the parties specified in filter + UpdateFormat: + title: UpdateFormat + description: A format specifying what updates to include and how to render them. + type: object + properties: + includeTransactions: + $ref: '#/components/schemas/TransactionFormat' + description: |- + Include Daml transactions in streams. + Optional, if unset, no transactions are emitted in the stream. + includeReassignments: + $ref: '#/components/schemas/EventFormat' + description: |- + Include (un)assignments in the stream. + The events in the result take the shape TRANSACTION_SHAPE_ACS_DELTA. + Optional, if unset, no (un)assignments are emitted in the stream. + includeTopologyEvents: + $ref: '#/components/schemas/TopologyFormat' + description: |- + Include topology events in streams. + Optional, if unset no topology events are emitted in the stream. + TransactionFormat: + title: TransactionFormat + description: |- + A format that specifies what events to include in Daml transactions + and what data to compute and include for them. + type: object + required: + - transactionShape + properties: + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: Required + transactionShape: + description: |- + What transaction shape to use for interpreting the filters of the event format. + Required + type: string + enum: + - TRANSACTION_SHAPE_UNSPECIFIED + - TRANSACTION_SHAPE_ACS_DELTA + - TRANSACTION_SHAPE_LEDGER_EFFECTS + TopologyFormat: + title: TopologyFormat + description: A format specifying which topology transactions to include and + how to render them. + type: object + properties: + includeParticipantAuthorizationEvents: + $ref: '#/components/schemas/ParticipantAuthorizationTopologyFormat' + description: |- + Include participant authorization topology events in streams. + Optional, if unset no participant authorization topology events are emitted in the stream. + ParticipantAuthorizationTopologyFormat: + title: ParticipantAuthorizationTopologyFormat + description: A format specifying which participant authorization topology transactions + to include and how to render them. + type: object + properties: + parties: + description: |- + List of parties for which the topology transactions should be sent. + Empty means: for all parties. + type: array + items: + type: string + Either_JsCantonError_JsGetUpdatesResponse: + title: Either_JsCantonError_JsGetUpdatesResponse + oneOf: + - $ref: '#/components/schemas/JsCantonError' + - $ref: '#/components/schemas/JsGetUpdatesResponse' + JsGetUpdatesResponse: + title: JsGetUpdatesResponse + type: object + required: + - update + properties: + update: + $ref: '#/components/schemas/Update' + Update: + title: Update + oneOf: + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint2' + - type: object + required: + - Reassignment + properties: + Reassignment: + $ref: '#/components/schemas/Reassignment' + - type: object + required: + - TopologyTransaction + properties: + TopologyTransaction: + $ref: '#/components/schemas/TopologyTransaction' + - type: object + required: + - Transaction + properties: + Transaction: + $ref: '#/components/schemas/Transaction' + OffsetCheckpoint2: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - 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' + Reassignment: + title: Reassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsReassignment' + JsReassignment: + title: JsReassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - updateId + - commandId + - workflowId + - offset + - recordTime + - synchronizerId + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this reassignment. Missing for everyone except the submitting party on the submitting participant. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + workflowId: + description: |- + The workflow ID used in reassignment command submission. Only set if the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + offset: + description: |- + The participant's offset. The details of this field are described in ``community/ledger-api/README.md``. + Required, must be a valid absolute offset (positive integer). + type: integer + format: int64 + events: + description: The collection of reassignment events. Required. + type: array + items: + $ref: '#/components/schemas/JsReassignmentEvent' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + recordTime: + description: |- + The time at which the reassignment was recorded. The record time refers to the source/target + synchronizer for an unassign/assign event respectively. + Required + type: string + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized this Reassignment. + Required + type: string + JsReassignmentEvent: + title: JsReassignmentEvent + oneOf: + - type: object + required: + - JsAssignmentEvent + properties: + JsAssignmentEvent: + $ref: '#/components/schemas/JsAssignmentEvent' + - type: object + required: + - JsUnassignedEvent + properties: + JsUnassignedEvent: + $ref: '#/components/schemas/JsUnassignedEvent' + JsAssignmentEvent: + title: JsAssignmentEvent + type: object + required: + - source + - target + - reassignmentId + - submitter + - reassignmentCounter + - createdEvent + properties: + source: + type: string + target: + type: string + reassignmentId: + type: string + submitter: + type: string + reassignmentCounter: + type: integer + format: int64 + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + JsUnassignedEvent: + title: JsUnassignedEvent + 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' + JsTopologyTransaction: + title: JsTopologyTransaction + type: object + required: + - updateId + - offset + - synchronizerId + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + Required, it is a valid absolute offset (positive integer). + type: integer + format: int64 + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the topology transaction. + Required + type: string + recordTime: + description: |- + The time at which the changes in the topology transaction become effective. There is a small delay between a + topology transaction being sequenced and the changes it contains becoming effective. Topology transactions appear + in order relative to a synchronizer based on their effective time rather than their sequencing time. + Required + type: string + events: + description: |- + A non-empty list of topology events. + Required + type: array + items: + $ref: '#/components/schemas/TopologyEvent' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + TopologyEvent: + title: TopologyEvent + type: object + required: + - event + properties: + event: + $ref: '#/components/schemas/TopologyEventEvent' + TopologyEventEvent: + title: TopologyEventEvent + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty3' + - type: object + required: + - ParticipantAuthorizationAdded + properties: + ParticipantAuthorizationAdded: + $ref: '#/components/schemas/ParticipantAuthorizationAdded' + - type: object + required: + - ParticipantAuthorizationChanged + properties: + ParticipantAuthorizationChanged: + $ref: '#/components/schemas/ParticipantAuthorizationChanged' + - type: object + required: + - ParticipantAuthorizationRevoked + properties: + ParticipantAuthorizationRevoked: + $ref: '#/components/schemas/ParticipantAuthorizationRevoked' + Empty3: + title: Empty + type: object + ParticipantAuthorizationAdded: + title: ParticipantAuthorizationAdded + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationAdded1' + ParticipantAuthorizationAdded1: + title: ParticipantAuthorizationAdded + type: object + required: + - partyId + - participantId + - participantPermission + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + participantPermission: + description: Required + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + ParticipantAuthorizationChanged: + title: ParticipantAuthorizationChanged + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationChanged1' + ParticipantAuthorizationChanged1: + title: ParticipantAuthorizationChanged + type: object + required: + - partyId + - participantId + - participantPermission + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + participantPermission: + description: Required + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + ParticipantAuthorizationRevoked: + title: ParticipantAuthorizationRevoked + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationRevoked1' + ParticipantAuthorizationRevoked1: + title: ParticipantAuthorizationRevoked + type: object + required: + - partyId + - participantId + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + Transaction: + title: Transaction + description: Filtered view of an on-ledger transaction's create and archive + events. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsTransaction' + JsTransaction: + title: JsTransaction + description: Filtered view of an on-ledger transaction's create and archive + events. + type: object + required: + - updateId + - commandId + - workflowId + - effectiveAt + - offset + - synchronizerId + - recordTime + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + workflowId: + description: |- + The workflow ID used in command submission. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + effectiveAt: + description: |- + Ledger effective time. + Required + type: string + events: + description: |- + The collection of events. + Contains: + + - ``CreatedEvent`` or ``ArchivedEvent`` in case of ACS_DELTA transaction shape + - ``CreatedEvent`` or ``ExercisedEvent`` in case of LEDGER_EFFECTS transaction shape + + Required + type: array + items: + $ref: '#/components/schemas/Event' + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + Required, it is a valid absolute offset (positive integer). + type: integer + format: int64 + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the transaction. + Required + type: string + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + recordTime: + description: |- + The time at which the transaction was recorded. The record time refers to the synchronizer + which synchronized the transaction. + Required + type: string + externalTransactionHash: + description: |- + For transaction externally signed, contains the external transaction hash + signed by the external party. Can be used to correlate an external submission with a committed transaction. + Optional + type: string + Event: + title: Event + description: |- + Events in transactions can have two primary shapes: + + - ACS delta: events can be CreatedEvent or ArchivedEvent + - ledger effects: events can be CreatedEvent or ExercisedEvent + + In the update service the events are restricted to the events + visible for the parties specified in the transaction filter. Each + event message type below contains a ``witness_parties`` field which + indicates the subset of the requested parties that can see the event + in question. + oneOf: + - type: object + required: + - ArchivedEvent + properties: + ArchivedEvent: + $ref: '#/components/schemas/ArchivedEvent' + - type: object + required: + - CreatedEvent + properties: + CreatedEvent: + $ref: '#/components/schemas/CreatedEvent' + - type: object + required: + - ExercisedEvent + properties: + ExercisedEvent: + $ref: '#/components/schemas/ExercisedEvent' + ArchivedEvent: + title: ArchivedEvent + description: Records that a contract has been archived, and choices may no longer + be exercised on it. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - packageName + properties: + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + Required, it is a valid absolute offset (positive integer) + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating transaction or reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of transactions. + Required, must be valid node ID (non-negative integer) + type: integer + format: int32 + contractId: + description: |- + The ID of the archived contract. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + templateId: + description: |- + Identifies the template that defines the choice that archived the contract. + This template's package-id may differ from the target contract's package-id + if the target contract has been upgraded or downgraded. + + The identifier uses the package-id reference format. + + Required + type: string + witnessParties: + description: |- + The parties that are notified of this event. For an ``ArchivedEvent``, + these are the intersection of the stakeholders of the contract in + question and the parties specified in the ``TransactionFilter``. The + stakeholders are the union of the signatories and the observers of + the contract. + Each one of its elements must be a valid PartyIdString (as described + in ``value.proto``). + Required + type: array + items: + type: string + packageName: + description: |- + The package name of the contract. + Required + type: string + implementedInterfaces: + description: |- + The interfaces implemented by the target template that have been + matched from the interface filter query. + Populated only in case interface filters with include_interface_view set. + + If defined, the identifier uses the package-id reference format. + + Optional + type: array + items: + type: string + ExercisedEvent: + title: ExercisedEvent + description: Records that a choice has been exercised on a target contract. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - choice + - choiceArgument + - consuming + - lastDescendantNodeId + - exerciseResult + - packageName + - acsDelta + properties: + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + Required, it is a valid absolute offset (positive integer) + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating transaction or reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of transactions. + Required, must be valid node ID (non-negative integer) + type: integer + format: int32 + contractId: + description: |- + The ID of the target contract. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + templateId: + description: |- + Identifies the template that defines the executed choice. + This template's package-id may differ from the target contract's package-id + if the target contract has been upgraded or downgraded. + + The identifier uses the package-id reference format. + + Required + type: string + interfaceId: + description: |- + The interface where the choice is defined, if inherited. + If defined, the identifier uses the package-id reference format. + + Optional + type: string + choice: + description: |- + The choice that was exercised on the target contract. + Must be a valid NameString (as described in ``value.proto``). + Required + type: string + choiceArgument: + description: |- + The argument of the exercised choice. + Required + actingParties: + description: |- + The parties that exercised the choice. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Required + type: array + items: + type: string + consuming: + description: |- + If true, the target contract may no longer be exercised. + Required + type: boolean + witnessParties: + description: |- + The parties that are notified of this event. The witnesses of an exercise + node will depend on whether the exercise was consuming or not. + If consuming, the witnesses are the union of the stakeholders, + the actors and all informees of all the ancestors of this event this + participant knows about. + If not consuming, the witnesses are the union of the signatories, + the actors and all informees of all the ancestors of this event this + participant knows about. + In both cases the witnesses are limited to the querying parties, or not + limited in case anyParty filters are used. + Note that the actors might not necessarily be observers + and thus stakeholders. This is the case when the controllers of a + choice are specified using "flexible controllers", using the + ``choice ... controller`` syntax, and said controllers are not + explicitly marked as observers. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Required + type: array + items: + type: string + lastDescendantNodeId: + description: |- + Specifies the upper boundary of the node ids of the events in the same transaction that appeared as a result of + this ``ExercisedEvent``. This allows unambiguous identification of all the members of the subtree rooted at this + node. A full subtree can be constructed when all descendant nodes are present in the stream. If nodes are heavily + filtered, it is only possible to determine if a node is in a consequent subtree or not. + Required + type: integer + format: int32 + exerciseResult: + description: |- + The result of exercising the choice. + Required + packageName: + description: |- + The package name of the contract. + Required + type: string + implementedInterfaces: + description: |- + If the event is consuming, the interfaces implemented by the target template that have been + matched from the interface filter query. + Populated only in case interface filters with include_interface_view set. + + The identifier uses the package-id reference format. + + Optional + type: array + items: + type: string + acsDelta: + description: |- + 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 + type: boolean + Either_JsCantonError_JsGetUpdateTreesResponse: + title: Either_JsCantonError_JsGetUpdateTreesResponse + oneOf: + - $ref: '#/components/schemas/JsCantonError' + - $ref: '#/components/schemas/JsGetUpdateTreesResponse' + JsGetUpdateTreesResponse: + title: JsGetUpdateTreesResponse + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - update + properties: + update: + $ref: '#/components/schemas/Update1' + Update1: + title: Update + oneOf: + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint3' + - type: object + required: + - Reassignment + properties: + Reassignment: + $ref: '#/components/schemas/Reassignment1' + - type: object + required: + - TransactionTree + properties: + TransactionTree: + $ref: '#/components/schemas/TransactionTree' + OffsetCheckpoint3: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - 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' + Reassignment1: + title: Reassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsReassignment' + TransactionTree: + title: TransactionTree + description: |- + 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' + JsTransactionTree: + title: JsTransactionTree + description: |- + 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: + - updateId + - commandId + - workflowId + - offset + - eventsById + - synchronizerId + - recordTime + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + workflowId: + description: |- + The workflow ID used in command submission. Only set if the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + effectiveAt: + description: |- + Ledger effective time. + Required + type: string + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + Required, it is a valid absolute offset (positive integer). + type: integer + format: int64 + eventsById: + $ref: '#/components/schemas/Map_Int_TreeEvent' + description: |- + Changes to the ledger that were caused by this transaction. Nodes of the transaction tree. + Each key must be a valid node ID (non-negative integer). + Required + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the transaction. + Required + type: string + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + recordTime: + description: |- + The time at which the transaction was recorded. The record time refers to the synchronizer + which synchronized the transaction. + Required + type: string + Map_Int_TreeEvent: + title: Map_Int_TreeEvent + type: object + additionalProperties: + $ref: '#/components/schemas/TreeEvent' + TreeEvent: + title: TreeEvent + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Each tree event message type below contains a ``witness_parties`` field which + indicates the subset of the requested parties that can see the event + in question. + + Note that transaction trees might contain events with + _no_ witness parties, which were included simply because they were + children of events which have witnesses. + oneOf: + - type: object + required: + - CreatedTreeEvent + properties: + CreatedTreeEvent: + $ref: '#/components/schemas/CreatedTreeEvent' + - type: object + required: + - ExercisedTreeEvent + properties: + ExercisedTreeEvent: + $ref: '#/components/schemas/ExercisedTreeEvent' + CreatedTreeEvent: + title: CreatedTreeEvent + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CreatedEvent' + ExercisedTreeEvent: + title: ExercisedTreeEvent + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ExercisedEvent' + messages: + CompletionStreamRequest: + payload: + $ref: '#/components/schemas/CompletionStreamRequest' + contentType: application/json + Either_JsCantonError_CompletionStreamResponse: + payload: + $ref: '#/components/schemas/Either_JsCantonError_CompletionStreamResponse' + contentType: application/json + GetActiveContractsRequest: + payload: + $ref: '#/components/schemas/GetActiveContractsRequest' + contentType: application/json + Either_JsCantonError_JsGetActiveContractsResponse: + payload: + $ref: '#/components/schemas/Either_JsCantonError_JsGetActiveContractsResponse' + contentType: application/json + GetUpdatesRequest: + payload: + $ref: '#/components/schemas/GetUpdatesRequest' + contentType: application/json + Either_JsCantonError_JsGetUpdatesResponse: + payload: + $ref: '#/components/schemas/Either_JsCantonError_JsGetUpdatesResponse' + contentType: application/json + Either_JsCantonError_JsGetUpdateTreesResponse: + payload: + $ref: '#/components/schemas/Either_JsCantonError_JsGetUpdateTreesResponse' + contentType: application/json + securitySchemes: + httpAuth: + type: http + description: Ledger API standard JWT token + scheme: bearer + httpApiKeyAuth: + type: httpApiKey + description: Ledger API standard JWT token (websocket) + name: Sec-WebSocket-Protocol + in: header diff --git a/api-specs/ledger-api/3.4.11/openapi.yaml b/api-specs/ledger-api/3.4.11/openapi.yaml new file mode 100644 index 000000000..fee96ed9b --- /dev/null +++ b/api-specs/ledger-api/3.4.11/openapi.yaml @@ -0,0 +1,7406 @@ +openapi: 3.0.3 +info: + title: JSON Ledger API HTTP endpoints + version: 3.4.11-SNAPSHOT +paths: + /v2/commands/submit-and-wait: + post: + description: Submit a batch of commands and wait for the completion details + operationId: postV2CommandsSubmit-and-wait + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsCommands' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitAndWaitResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/submit-and-wait-for-transaction: + post: + description: Submit a batch of commands and wait for the transaction response + operationId: postV2CommandsSubmit-and-wait-for-transaction + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsSubmitAndWaitForTransactionRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsSubmitAndWaitForTransactionResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/submit-and-wait-for-reassignment: + post: + description: Submit a batch of reassignment commands and wait for the reassignment + response + operationId: postV2CommandsSubmit-and-wait-for-reassignment + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitAndWaitForReassignmentRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsSubmitAndWaitForReassignmentResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/submit-and-wait-for-transaction-tree: + post: + description: Submit a batch of commands and wait for the transaction trees response. + Provided for backwards compatibility, it will be removed in the Canton version + 3.5.0, use submit-and-wait-for-transaction instead. + operationId: postV2CommandsSubmit-and-wait-for-transaction-tree + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsCommands' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsSubmitAndWaitForTransactionTreeResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/async/submit: + post: + description: Submit a command asynchronously + operationId: postV2CommandsAsyncSubmit + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsCommands' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/async/submit-reassignment: + post: + description: Submit reassignment command asynchronously + operationId: postV2CommandsAsyncSubmit-reassignment + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitReassignmentRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitReassignmentResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/completions: + post: + description: |- + Query completions list (blocking call) + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2CommandsCompletions + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CompletionStreamRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/CompletionStreamResponse' + '400': + description: 'Invalid value for: body, Invalid value for: query parameter + limit, Invalid value for: query parameter stream_idle_timeout_ms, Invalid + value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/events/events-by-contract-id: + post: + description: Get events by contract Id + operationId: postV2EventsEvents-by-contract-id + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetEventsByContractIdRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetEventsByContractIdResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/version: + get: + description: Get the version details of the participant node + operationId: getV2Version + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetLedgerApiVersionResponse' + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/dars/validate: + post: + description: Validates a DAR for upgrade-compatibility against the current vetting + state on the target synchronizer + operationId: postV2DarsValidate + parameters: + - name: synchronizerId + in: query + required: false + schema: + type: string + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + required: true + responses: + '200': + description: '' + '400': + description: 'Invalid value for: body, Invalid value for: query parameter + synchronizerId, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/dars: + post: + description: Upload a DAR to the participant node + operationId: postV2Dars + parameters: + - name: vetAllPackages + in: query + required: false + schema: + type: boolean + - name: synchronizerId + in: query + required: false + schema: + type: string + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UploadDarFileResponse' + '400': + description: 'Invalid value for: body, Invalid value for: query parameter + vetAllPackages, Invalid value for: query parameter synchronizerId, Invalid + value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/packages: + get: + description: List all packages uploaded on the participant node + operationId: getV2Packages + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListPackagesResponse' + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: Upload a DAR to the participant node. Behaves the same as /dars. + This endpoint will be deprecated and removed in a future release. + operationId: postV2Packages + parameters: + - name: vetAllPackages + in: query + required: false + schema: + type: boolean + - name: synchronizerId + in: query + required: false + schema: + type: string + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UploadDarFileResponse' + '400': + description: 'Invalid value for: body, Invalid value for: query parameter + vetAllPackages, Invalid value for: query parameter synchronizerId, Invalid + value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/packages/{package-id}: + get: + description: Download the package for the requested package-id + operationId: getV2PackagesPackage-id + parameters: + - name: package-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + headers: + Canton-Package-Hash: + required: true + schema: + type: string + content: + application/octet-stream: + schema: + type: string + format: binary + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/packages/{package-id}/status: + get: + description: Get package status + operationId: getV2PackagesPackage-idStatus + parameters: + - name: package-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetPackageStatusResponse' + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/package-vetting: + get: + description: List vetted packages + operationId: getV2Package-vetting + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListVettedPackagesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListVettedPackagesResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: Update vetted packages + operationId: postV2Package-vetting + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateVettedPackagesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateVettedPackagesResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/parties: + get: + description: List all known parties. + operationId: getV2Parties + parameters: + - name: identity-provider-id + in: query + required: false + schema: + type: string + - name: filter-party + in: query + required: false + schema: + type: string + - name: pageSize + in: query + description: maximum number of elements in a returned page + required: false + schema: + type: integer + format: int32 + - name: pageToken + in: query + description: token - to continue results from a given page, leave empty to + start from the beginning of the list, obtain token from the result of previous + page + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListKnownPartiesResponse' + '400': + description: 'Invalid value for: query parameter identity-provider-id, Invalid + value for: query parameter filter-party, Invalid value for: query parameter + pageSize, Invalid value for: query parameter pageToken, Invalid value + for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: Allocate a new party to the participant node + operationId: postV2Parties + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AllocatePartyRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AllocatePartyResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/parties/external/allocate: + post: + description: Allocate a new external party + operationId: postV2PartiesExternalAllocate + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateExternalPartyRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateExternalPartyResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/parties/participant-id: + get: + description: Get participant id + operationId: getV2PartiesParticipant-id + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetParticipantIdResponse' + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/parties/{party}: + get: + description: Get party details + operationId: getV2PartiesParty + parameters: + - name: party + in: path + required: true + schema: + type: string + - name: identity-provider-id + in: query + required: false + schema: + type: string + - name: parties + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetPartiesResponse' + '400': + description: 'Invalid value for: query parameter identity-provider-id, Invalid + value for: query parameter parties, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + patch: + description: Allocate a new party to the participant node + operationId: patchV2PartiesParty + parameters: + - name: party + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePartyDetailsRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePartyDetailsResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/parties/external/generate-topology: + post: + description: Generate a topology for an external party + operationId: postV2PartiesExternalGenerate-topology + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateExternalPartyTopologyRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateExternalPartyTopologyResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/state/active-contracts: + post: + description: |- + Query active contracts list (blocking call). + Querying active contracts is an expensive operation and if possible should not be repeated often. + Consider querying active contracts initially (for a given offset) + and then repeatedly call one of `/v2/updates/...`endpoints to get subsequent modifications. + You can also use websockets to get updates with better performance. + + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2StateActive-contracts + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetActiveContractsRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/JsGetActiveContractsResponse' + '400': + description: 'Invalid value for: body, Invalid value for: query parameter + limit, Invalid value for: query parameter stream_idle_timeout_ms, Invalid + value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/state/connected-synchronizers: + get: + description: Get connected synchronizers + operationId: getV2StateConnected-synchronizers + parameters: + - name: party + in: query + required: false + schema: + type: string + - name: participantId + in: query + required: false + schema: + type: string + - name: identityProviderId + in: query + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetConnectedSynchronizersResponse' + '400': + description: 'Invalid value for: query parameter party, Invalid value for: + query parameter participantId, Invalid value for: query parameter identityProviderId, + Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/state/ledger-end: + get: + description: Get ledger end + operationId: getV2StateLedger-end + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetLedgerEndResponse' + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/state/latest-pruned-offsets: + get: + description: Get latest pruned offsets + operationId: getV2StateLatest-pruned-offsets + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetLatestPrunedOffsetsResponse' + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates: + post: + description: |- + Query updates list (blocking call) + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2Updates + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/JsGetUpdatesResponse' + '400': + description: 'Invalid value for: body, Invalid value for: query parameter + limit, Invalid value for: query parameter stream_idle_timeout_ms, Invalid + value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/flats: + post: + description: |- + Query flat transactions update list (blocking call). Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates instead. + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2UpdatesFlats + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/JsGetUpdatesResponse' + '400': + description: 'Invalid value for: body, Invalid value for: query parameter + limit, Invalid value for: query parameter stream_idle_timeout_ms, Invalid + value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/trees: + post: + description: |- + Query update transactions tree list (blocking call). Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates instead. + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2UpdatesTrees + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/JsGetUpdateTreesResponse' + '400': + description: 'Invalid value for: body, Invalid value for: query parameter + limit, Invalid value for: query parameter stream_idle_timeout_ms, Invalid + value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/transaction-tree-by-offset/{offset}: + get: + description: Get transaction tree by offset. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates/update-by-offset + instead. + operationId: getV2UpdatesTransaction-tree-by-offsetOffset + parameters: + - name: offset + in: path + required: true + schema: + type: integer + format: int64 + - name: parties + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetTransactionTreeResponse' + '400': + description: 'Invalid value for: path parameter offset, Invalid value for: + query parameter parties, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/transaction-by-offset: + post: + description: Get transaction by offset. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates/update-by-offset + instead. + operationId: postV2UpdatesTransaction-by-offset + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetTransactionByOffsetRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetTransactionResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/update-by-offset: + post: + description: Get update by offset + operationId: postV2UpdatesUpdate-by-offset + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdateByOffsetRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetUpdateResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/transaction-by-id: + post: + description: Get transaction by id. Provided for backwards compatibility, it + will be removed in the Canton version 3.5.0, use v2/updates/update-by-id instead. + operationId: postV2UpdatesTransaction-by-id + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetTransactionByIdRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetTransactionResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/update-by-id: + post: + description: Get update by id + operationId: postV2UpdatesUpdate-by-id + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdateByIdRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetUpdateResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/transaction-tree-by-id/{update-id}: + get: + description: Get transaction tree by id. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates/update-by-id + instead. + operationId: getV2UpdatesTransaction-tree-by-idUpdate-id + parameters: + - name: update-id + in: path + required: true + schema: + type: string + - name: parties + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetTransactionTreeResponse' + '400': + description: 'Invalid value for: query parameter parties, Invalid value + for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/users: + get: + description: List all users. + operationId: getV2Users + parameters: + - name: pageSize + in: query + description: maximum number of elements in a returned page + required: false + schema: + type: integer + format: int32 + - name: pageToken + in: query + description: token - to continue results from a given page, leave empty to + start from the beginning of the list, obtain token from the result of previous + page + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersResponse' + '400': + description: 'Invalid value for: query parameter pageSize, Invalid value + for: query parameter pageToken, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: Create user. + operationId: postV2Users + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateUserRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateUserResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/users/{user-id}: + get: + description: Get user details. + operationId: getV2UsersUser-id + parameters: + - name: user-id + in: path + required: true + schema: + type: string + - name: identity-provider-id + in: query + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetUserResponse' + '400': + description: 'Invalid value for: query parameter identity-provider-id, Invalid + value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + delete: + description: Delete user. + operationId: deleteV2UsersUser-id + parameters: + - name: user-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + type: object + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + patch: + description: Update user. + operationId: patchV2UsersUser-id + parameters: + - name: user-id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/authenticated-user: + get: + description: Get current user details (uses user for JWT). + operationId: getV2Authenticated-user + parameters: + - name: identity-provider-id + in: query + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetUserResponse' + '400': + description: 'Invalid value for: query parameter identity-provider-id, Invalid + value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/users/{user-id}/rights: + get: + description: List user rights. + operationId: getV2UsersUser-idRights + parameters: + - name: user-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListUserRightsResponse' + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: Grant user rights. + operationId: postV2UsersUser-idRights + parameters: + - name: user-id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GrantUserRightsRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GrantUserRightsResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + patch: + description: Revoke user rights. + operationId: patchV2UsersUser-idRights + parameters: + - name: user-id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RevokeUserRightsRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RevokeUserRightsResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/users/{user-id}/identity-provider-id: + patch: + description: Update user identity provider. + operationId: patchV2UsersUser-idIdentity-provider-id + parameters: + - name: user-id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserIdentityProviderIdRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserIdentityProviderIdResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/idps: + get: + description: List all identity provider configs + operationId: getV2Idps + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListIdentityProviderConfigsResponse' + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: Create identity provider configs + operationId: postV2Idps + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIdentityProviderConfigRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIdentityProviderConfigResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/idps/{idp-id}: + get: + description: Get identity provider config + operationId: getV2IdpsIdp-id + parameters: + - name: idp-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetIdentityProviderConfigResponse' + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + delete: + description: Delete identity provider config + operationId: deleteV2IdpsIdp-id + parameters: + - name: idp-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteIdentityProviderConfigResponse' + '400': + description: 'Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + patch: + description: Update identity provider config + operationId: patchV2IdpsIdp-id + parameters: + - name: idp-id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIdentityProviderConfigRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIdentityProviderConfigResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/prepare: + post: + description: Prepare commands for signing + operationId: postV2Interactive-submissionPrepare + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsPrepareSubmissionRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsPrepareSubmissionResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/execute: + post: + description: Execute a signed transaction + operationId: postV2Interactive-submissionExecute + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsExecuteSubmissionRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ExecuteSubmissionResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/executeAndWait: + post: + description: Execute a signed transaction and wait for its completion + operationId: postV2Interactive-submissionExecuteandwait + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsExecuteSubmissionAndWaitRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ExecuteSubmissionAndWaitResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/executeAndWaitForTransaction: + post: + description: Execute a signed transaction and wait for the transaction response + operationId: postV2Interactive-submissionExecuteandwaitfortransaction + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsExecuteSubmissionAndWaitForTransactionRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsExecuteSubmissionAndWaitForTransactionResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/preferred-package-version: + get: + description: Get the preferred package version for constructing a command submission + operationId: getV2Interactive-submissionPreferred-package-version + parameters: + - name: parties + in: query + required: false + schema: + type: array + items: + type: string + - name: package-name + in: query + required: true + schema: + type: string + - name: vetting_valid_at + in: query + required: false + schema: + type: string + format: date-time + - name: synchronizer-id + in: query + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetPreferredPackageVersionResponse' + '400': + description: 'Invalid value for: query parameter parties, Invalid value + for: query parameter package-name, Invalid value for: query parameter + vetting_valid_at, Invalid value for: query parameter synchronizer-id, + Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/preferred-packages: + post: + description: Get the version of preferred packages for constructing a command + submission + operationId: postV2Interactive-submissionPreferred-packages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetPreferredPackagesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetPreferredPackagesResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/contracts/contract-by-id: + post: + description: | + Looking up contract data by contract ID. + This endpoint is experimental / alpha, therefore no backwards compatibility is guaranteed. + This endpoint must not be used to look up contracts which entered the participant via party replication + or repair service. + operationId: postV2ContractsContract-by-id + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetContractRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetContractResponse' + '400': + description: 'Invalid value for: body, Invalid value for: headers' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] +components: + schemas: + AllocateExternalPartyRequest: + title: AllocateExternalPartyRequest + description: 'Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id)``' + type: object + required: + - synchronizer + - identityProviderId + properties: + synchronizer: + description: |- + TODO(#27670) support synchronizer aliases + Synchronizer ID on which to onboard the party + Required + type: string + onboardingTransactions: + description: |- + TopologyTransactions to onboard the external party + Can contain: + - A namespace for the party. + This can be either a single NamespaceDelegation, + or DecentralizedNamespaceDefinition along with its authorized namespace owners in the form of NamespaceDelegations. + May be provided, if so it must be fully authorized by the signatures in this request combined with the existing topology state. + - A PartyToKeyMapping to register the party's signing keys. + May be provided, if so it must be fully authorized by the signatures in this request combined with the existing topology state. + - A PartyToParticipant to register the hosting relationship of the party. + Must be provided. + Required + type: array + items: + $ref: '#/components/schemas/SignedTransaction' + multiHashSignatures: + description: |- + Optional signatures of the combined hash of all onboarding_transactions + This may be used instead of providing signatures on each individual transaction + type: array + items: + $ref: '#/components/schemas/Signature' + identityProviderId: + description: |- + The id of the ``Identity Provider`` + If not set, assume the party is managed by the default identity provider. + Optional + type: string + AllocateExternalPartyResponse: + title: AllocateExternalPartyResponse + type: object + required: + - partyId + properties: + partyId: + description: '' + type: string + AllocatePartyRequest: + title: AllocatePartyRequest + description: 'Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id)``' + type: object + required: + - partyIdHint + - identityProviderId + - synchronizerId + - userId + properties: + partyIdHint: + description: |- + A hint to the participant which party ID to allocate. It can be + ignored. + Must be a valid PartyIdString (as described in ``value.proto``). + Optional + type: string + localMetadata: + $ref: '#/components/schemas/ObjectMeta' + description: |- + Formerly "display_name" + Participant-local metadata to be stored in the ``PartyDetails`` of this newly allocated party. + Optional + identityProviderId: + description: |- + The id of the ``Identity Provider`` + Optional, if not set, assume the party is managed by the default identity provider or party is not hosted by the participant. + type: string + synchronizerId: + description: |- + The synchronizer, on which the party should be allocated. + For backwards compatibility, this field may be omitted, if the participant is connected to only one synchronizer. + Otherwise a synchronizer must be specified. + Optional + type: string + userId: + description: |- + The user who will get the act_as rights to the newly allocated party. + If set to an empty string (the default), no user will get rights to the party. + Optional + type: string + AllocatePartyResponse: + title: AllocatePartyResponse + type: object + properties: + partyDetails: + $ref: '#/components/schemas/PartyDetails' + description: '' + ArchivedEvent: + title: ArchivedEvent + description: Records that a contract has been archived, and choices may no longer + be exercised on it. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - packageName + properties: + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + Required, it is a valid absolute offset (positive integer) + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating transaction or reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of transactions. + Required, must be valid node ID (non-negative integer) + type: integer + format: int32 + contractId: + description: |- + The ID of the archived contract. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + templateId: + description: |- + Identifies the template that defines the choice that archived the contract. + This template's package-id may differ from the target contract's package-id + if the target contract has been upgraded or downgraded. + + The identifier uses the package-id reference format. + + Required + type: string + witnessParties: + description: |- + The parties that are notified of this event. For an ``ArchivedEvent``, + these are the intersection of the stakeholders of the contract in + question and the parties specified in the ``TransactionFilter``. The + stakeholders are the union of the signatories and the observers of + the contract. + Each one of its elements must be a valid PartyIdString (as described + in ``value.proto``). + Required + type: array + items: + type: string + packageName: + description: |- + The package name of the contract. + Required + type: string + implementedInterfaces: + description: |- + The interfaces implemented by the target template that have been + matched from the interface filter query. + Populated only in case interface filters with include_interface_view set. + + If defined, the identifier uses the package-id reference format. + + Optional + type: array + items: + type: string + AssignCommand: + title: AssignCommand + description: Assign a contract + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/AssignCommand1' + AssignCommand1: + title: AssignCommand + description: Assign a contract + type: object + required: + - reassignmentId + - source + - target + properties: + reassignmentId: + description: |- + The ID from the unassigned event to be completed by this assignment. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + source: + description: |- + The ID of the source synchronizer + Must be a valid synchronizer id + Required + type: string + target: + description: |- + The ID of the target synchronizer + Must be a valid synchronizer id + Required + type: string + CanActAs: + title: CanActAs + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CanActAs1' + CanActAs1: + title: CanActAs + type: object + required: + - party + properties: + party: + type: string + CanExecuteAs: + title: CanExecuteAs + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CanExecuteAs1' + CanExecuteAs1: + title: CanExecuteAs + type: object + required: + - party + properties: + party: + type: string + CanExecuteAsAnyParty: + title: CanExecuteAsAnyParty + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CanExecuteAsAnyParty1' + CanExecuteAsAnyParty1: + title: CanExecuteAsAnyParty + type: object + CanReadAs: + title: CanReadAs + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CanReadAs1' + CanReadAs1: + title: CanReadAs + type: object + required: + - party + properties: + party: + type: string + CanReadAsAnyParty: + title: CanReadAsAnyParty + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CanReadAsAnyParty1' + CanReadAsAnyParty1: + title: CanReadAsAnyParty + type: object + Command: + title: Command + description: A command can either create a new contract or exercise a choice + on an existing contract. + oneOf: + - type: object + required: + - CreateAndExerciseCommand + properties: + CreateAndExerciseCommand: + $ref: '#/components/schemas/CreateAndExerciseCommand' + - type: object + required: + - CreateCommand + properties: + CreateCommand: + $ref: '#/components/schemas/CreateCommand' + - type: object + required: + - ExerciseByKeyCommand + properties: + ExerciseByKeyCommand: + $ref: '#/components/schemas/ExerciseByKeyCommand' + - type: object + required: + - ExerciseCommand + properties: + ExerciseCommand: + $ref: '#/components/schemas/ExerciseCommand' + Command1: + title: Command + description: A command can either create a new contract or exercise a choice + on an existing contract. + oneOf: + - type: object + required: + - AssignCommand + properties: + AssignCommand: + $ref: '#/components/schemas/AssignCommand' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty2' + - type: object + required: + - UnassignCommand + properties: + UnassignCommand: + $ref: '#/components/schemas/UnassignCommand' + Completion: + title: Completion + 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' + Completion1: + title: Completion + description: 'A completion represents the status of a submitted command on the + ledger: it can be successful or failed.' + type: object + required: + - commandId + - updateId + - userId + - submissionId + - deduplicationPeriod + - offset + properties: + commandId: + description: |- + The ID of the succeeded or failed command. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + status: + $ref: '#/components/schemas/JsStatus' + description: |- + Identifies the exact type of the error. + It uses the same format of conveying error details as it is used for the RPC responses of the APIs. + Optional + updateId: + description: |- + The update_id of the transaction or reassignment that resulted from the command with command_id. + Only set for successfully executed commands. + Must be a valid LedgerString (as described in ``value.proto``). + type: string + userId: + description: |- + The user-id that was used for the submission, as described in ``commands.proto``. + Must be a valid UserIdString (as described in ``value.proto``). + Optional for historic completions where this data is not available. + type: string + actAs: + description: |- + The set of parties on whose behalf the commands were executed. + Contains the ``act_as`` parties from ``commands.proto`` + filtered to the requesting parties in CompletionStreamRequest. + The order of the parties need not be the same as in the submission. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Optional for historic completions where this data is not available. + type: array + items: + type: string + submissionId: + description: |- + The submission ID this completion refers to, as described in ``commands.proto``. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod1' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + offset: + description: |- + May be used in a subsequent CompletionStreamRequest to resume the consumption of this stream at a later time. + Required, must be a valid absolute offset (positive integer). + type: integer + format: int64 + synchronizerTime: + $ref: '#/components/schemas/SynchronizerTime' + description: |- + The synchronizer along with its record time. + The synchronizer id provided, in case of + + - successful/failed transactions: identifies the synchronizer of the transaction + - for successful/failed unassign commands: identifies the source synchronizer + - for successful/failed assign commands: identifies the target synchronizer + + Required + CompletionResponse: + title: CompletionResponse + oneOf: + - type: object + required: + - Completion + properties: + Completion: + $ref: '#/components/schemas/Completion' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty4' + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint' + CompletionStreamRequest: + title: CompletionStreamRequest + type: object + required: + - userId + - beginExclusive + properties: + userId: + description: |- + Only completions of commands submitted with the same user_id will be visible in the stream. + Must be a valid UserIdString (as described in ``value.proto``). + Required unless authentication is used with a user token. + In that case, the token's user-id will be used for the request's user_id. + type: string + parties: + description: |- + Non-empty list of parties whose data should be included. + The stream shows only completions of commands for which at least one of the ``act_as`` parties is in the given set of parties. + Must be a valid PartyIdString (as described in ``value.proto``). + Required + type: array + items: + type: string + beginExclusive: + description: |- + This optional field indicates the minimum offset for completions. This can be used to resume an earlier completion stream. + If not set the ledger uses the ledger begin offset instead. + If specified, it must be a valid absolute offset (positive integer) or zero (ledger begin offset). + If the ledger has been pruned, this parameter must be specified and greater than the pruning offset. + type: integer + format: int64 + CompletionStreamResponse: + title: CompletionStreamResponse + type: object + required: + - completionResponse + properties: + completionResponse: + $ref: '#/components/schemas/CompletionResponse' + ConnectedSynchronizer: + title: ConnectedSynchronizer + type: object + required: + - synchronizerAlias + - synchronizerId + - permission + properties: + synchronizerAlias: + type: string + synchronizerId: + type: string + permission: + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + CostEstimation: + title: CostEstimation + description: |- + Estimation of the cost of submitting the prepared transaction + The estimation is done against the synchronizer chosen during preparation of the transaction + (or the one explicitly requested). + The cost of re-assigning contracts to another synchronizer when necessary is not included in the estimation. + type: object + required: + - confirmationRequestTrafficCostEstimation + - confirmationResponseTrafficCostEstimation + - totalTrafficCostEstimation + properties: + estimationTimestamp: + description: Timestamp at which the estimation was made + type: string + confirmationRequestTrafficCostEstimation: + description: Estimated traffic cost of the confirmation request associated + with the transaction + type: integer + format: int64 + confirmationResponseTrafficCostEstimation: + description: |- + Estimated traffic cost of the confirmation response associated with the transaction + This field can also be used as an indication of the cost that other potential confirming nodes + of the party will incur to approve or reject the transaction + type: integer + format: int64 + totalTrafficCostEstimation: + description: Sum of the fields above + type: integer + format: int64 + CostEstimationHints: + title: CostEstimationHints + description: Hints to improve cost estimation precision of a prepared transaction + type: object + required: + - disabled + properties: + disabled: + description: |- + Disable cost estimation + Default (not set) is false + type: boolean + expectedSignatures: + description: |- + Details on the keys that will be used to sign the transaction (how many and of which type). + Signature size impacts the cost of the transaction. + If empty, the signature sizes will be approximated with threshold-many signatures (where threshold is defined + in the PartyToKeyMapping of the external party), using keys in the order they are registered. + Optional (empty list is equivalent to not providing this field) + type: array + items: + type: string + enum: + - SIGNING_ALGORITHM_SPEC_UNSPECIFIED + - SIGNING_ALGORITHM_SPEC_ED25519 + - SIGNING_ALGORITHM_SPEC_EC_DSA_SHA_256 + - SIGNING_ALGORITHM_SPEC_EC_DSA_SHA_384 + CreateAndExerciseCommand: + title: CreateAndExerciseCommand + description: Create a contract and exercise a choice on it in the same transaction. + type: object + required: + - templateId + - createArguments + - choice + - choiceArgument + properties: + templateId: + description: |- + The template of the contract the client wants to create. + Both package-name and package-id reference identifier formats for the template-id are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + createArguments: + description: |- + The arguments required for creating a contract from this template. + Required + choice: + description: |- + The name of the choice the client wants to exercise. + Must be a valid NameString (as described in ``value.proto``). + Required + type: string + choiceArgument: + description: |- + The argument for this choice. + Required + CreateCommand: + title: CreateCommand + description: Create a new contract instance based on a template. + type: object + required: + - templateId + - createArguments + properties: + templateId: + description: |- + The template of contract the client wants to create. + Both package-name and package-id reference identifier formats for the template-id are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + createArguments: + description: |- + The arguments required for creating a contract from this template. + Required + CreateIdentityProviderConfigRequest: + title: CreateIdentityProviderConfigRequest + type: object + properties: + identityProviderConfig: + $ref: '#/components/schemas/IdentityProviderConfig' + description: Required + CreateIdentityProviderConfigResponse: + title: CreateIdentityProviderConfigResponse + type: object + properties: + identityProviderConfig: + $ref: '#/components/schemas/IdentityProviderConfig' + description: '' + CreateUserRequest: + title: CreateUserRequest + description: |2- + RPC requests and responses + /////////////////////////// + Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(user.identity_provider_id)`` + type: object + properties: + user: + $ref: '#/components/schemas/User' + description: |- + The user to create. + Required + rights: + description: |- + The rights to be assigned to the user upon creation, + which SHOULD include appropriate rights for the ``user.primary_party``. + Optional + type: array + items: + $ref: '#/components/schemas/Right' + CreateUserResponse: + title: CreateUserResponse + type: object + properties: + user: + $ref: '#/components/schemas/User' + description: Created user. + CreatedEvent: + title: CreatedEvent + description: Records that a contract has been created, and choices may now be + exercised on it. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - createdEventBlob + - createdAt + - packageName + - representativePackageId + - acsDelta + properties: + offset: + description: |- + 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. + Required, it is a valid absolute offset (positive integer) + type: integer + format: int64 + nodeId: + description: |- + 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. + Required, must be valid node ID (non-negative integer) + type: integer + format: int32 + contractId: + description: |- + The ID of the created contract. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + templateId: + description: |- + The template of the created contract. + The identifier uses the package-id reference format. + + Required + type: string + contractKey: + description: |- + The key of the created contract. + This will be set if and only if ``template_id`` defines a contract key. + Optional + createArgument: {} + createdEventBlob: + description: |- + 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 + type: string + interfaceViews: + description: |- + 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 + type: array + items: + $ref: '#/components/schemas/JsInterfaceView' + witnessParties: + description: |- + 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 + type: array + items: + type: string + signatories: + description: |- + The signatories for this contract as specified by the template. + Required + type: array + items: + type: string + observers: + description: |- + The observers for this contract as specified explicitly by the template or implicitly as choice controllers. + This field never contains parties that are signatories. + Required + type: array + items: + type: string + createdAt: + description: |- + Ledger effective time of the transaction that created the contract. + Required + type: string + packageName: + description: |- + The package name of the created contract. + Required + type: string + representativePackageId: + description: |- + 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 + type: string + acsDelta: + description: |- + 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 + type: boolean + CreatedTreeEvent: + title: CreatedTreeEvent + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CreatedEvent' + CumulativeFilter: + title: CumulativeFilter + description: |- + A filter that matches all contracts that are either an instance of one of + the ``template_filters`` or that match one of the ``interface_filters``. + type: object + required: + - identifierFilter + properties: + identifierFilter: + $ref: '#/components/schemas/IdentifierFilter' + DeduplicationDuration: + title: DeduplicationDuration + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Duration' + DeduplicationDuration1: + title: DeduplicationDuration + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Duration' + DeduplicationDuration2: + title: DeduplicationDuration + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Duration' + DeduplicationOffset: + title: DeduplicationOffset + type: object + required: + - value + properties: + value: + type: integer + format: int64 + DeduplicationOffset1: + title: DeduplicationOffset + type: object + required: + - value + properties: + value: + type: integer + format: int64 + DeduplicationOffset2: + title: DeduplicationOffset + type: object + required: + - value + properties: + value: + type: integer + format: int64 + DeduplicationPeriod: + title: DeduplicationPeriod + description: |- + Specifies the deduplication period for the change ID. + If omitted, the participant will assume the configured maximum deduplication time. + oneOf: + - type: object + required: + - DeduplicationDuration + properties: + DeduplicationDuration: + $ref: '#/components/schemas/DeduplicationDuration' + - type: object + required: + - DeduplicationOffset + properties: + DeduplicationOffset: + $ref: '#/components/schemas/DeduplicationOffset' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty' + DeduplicationPeriod1: + title: DeduplicationPeriod + description: |- + The actual deduplication window used for the submission, which is derived from + ``Commands.deduplication_period``. The ledger may convert the deduplication period into other + descriptions and extend the period in implementation-specified ways. + + Used to audit the deduplication guarantee described in ``commands.proto``. + + Optional; the deduplication guarantee applies even if the completion omits this field. + oneOf: + - type: object + required: + - DeduplicationDuration + properties: + DeduplicationDuration: + $ref: '#/components/schemas/DeduplicationDuration1' + - type: object + required: + - DeduplicationOffset + properties: + DeduplicationOffset: + $ref: '#/components/schemas/DeduplicationOffset1' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty3' + DeduplicationPeriod2: + title: DeduplicationPeriod + oneOf: + - type: object + required: + - DeduplicationDuration + properties: + DeduplicationDuration: + $ref: '#/components/schemas/DeduplicationDuration2' + - type: object + required: + - DeduplicationOffset + properties: + DeduplicationOffset: + $ref: '#/components/schemas/DeduplicationOffset2' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty10' + DeleteIdentityProviderConfigResponse: + title: DeleteIdentityProviderConfigResponse + description: Does not (yet) contain any data. + type: object + DisclosedContract: + title: DisclosedContract + description: |- + An additional contract that is used to resolve + contract & contract key lookups. + type: object + required: + - contractId + - createdEventBlob + - synchronizerId + properties: + templateId: + description: |- + The template id of the contract. + The identifier uses the package-id reference format. + + If provided, used to validate the template id of the contract serialized in the created_event_blob. + Optional + type: string + contractId: + description: |- + The contract id + + If provided, used to validate the contract id of the contract serialized in the created_event_blob. + Optional + type: string + createdEventBlob: + description: |- + Opaque byte string containing the complete payload required by the Daml engine + to reconstruct a contract not known to the receiving participant. + Required + type: string + synchronizerId: + description: |- + The ID of the synchronizer where the contract is currently assigned + Optional + type: string + Duration: + title: Duration + type: object + required: + - seconds + - nanos + properties: + seconds: + type: integer + format: int64 + nanos: + type: integer + format: int32 + unknownFields: + $ref: '#/components/schemas/UnknownFieldSet' + description: This field is automatically added as part of protobuf to json + mapping + Empty: + title: Empty + type: object + Empty1: + title: Empty + type: object + Empty10: + title: Empty + type: object + Empty2: + title: Empty + type: object + Empty3: + title: Empty + type: object + Empty4: + title: Empty + type: object + Empty5: + title: Empty + type: object + Empty6: + title: Empty + type: object + Empty7: + title: Empty + type: object + Empty8: + title: Empty + type: object + Empty9: + title: Empty + type: object + Event: + title: Event + description: |- + Events in transactions can have two primary shapes: + + - ACS delta: events can be CreatedEvent or ArchivedEvent + - ledger effects: events can be CreatedEvent or ExercisedEvent + + In the update service the events are restricted to the events + visible for the parties specified in the transaction filter. Each + event message type below contains a ``witness_parties`` field which + indicates the subset of the requested parties that can see the event + in question. + oneOf: + - type: object + required: + - ArchivedEvent + properties: + ArchivedEvent: + $ref: '#/components/schemas/ArchivedEvent' + - type: object + required: + - CreatedEvent + properties: + CreatedEvent: + $ref: '#/components/schemas/CreatedEvent' + - type: object + required: + - ExercisedEvent + properties: + ExercisedEvent: + $ref: '#/components/schemas/ExercisedEvent' + EventFormat: + title: EventFormat + description: |- + A format for events which defines both which events should be included + and what data should be computed and included for them. + + Note that some of the filtering behavior depends on the `TransactionShape`, + which is expected to be specified alongside usages of `EventFormat`. + type: object + required: + - filtersByParty + - verbose + properties: + filtersByParty: + $ref: '#/components/schemas/Map_Filters' + description: |- + Each key must be a valid PartyIdString (as described in ``value.proto``). + The interpretation of the filter depends on the transaction-shape being filtered: + + 1. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + the listed parties and match the per-party filter. + 2. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + stakeholders include at least one of the listed parties and match the per-party filter. + + Optional + filtersForAnyParty: + $ref: '#/components/schemas/Filters' + description: |- + Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same + with the per-party filter as described above. + Optional + verbose: + description: |- + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + Optional + type: boolean + ExecuteSubmissionAndWaitResponse: + title: ExecuteSubmissionAndWaitResponse + type: object + required: + - updateId + - completionOffset + properties: + updateId: + description: |- + The id of the transaction that resulted from the submitted command. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + completionOffset: + description: |- + The details of the offset field are described in ``community/ledger-api/README.md``. + Required + type: integer + format: int64 + ExecuteSubmissionResponse: + title: ExecuteSubmissionResponse + type: object + ExerciseByKeyCommand: + title: ExerciseByKeyCommand + description: Exercise a choice on an existing contract specified by its key. + type: object + required: + - templateId + - contractKey + - choice + - choiceArgument + properties: + templateId: + description: |- + The template of contract the client wants to exercise. + Both package-name and package-id reference identifier formats for the template-id are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + contractKey: + description: |- + The key of the contract the client wants to exercise upon. + Required + choice: + description: |- + The name of the choice the client wants to exercise. + Must be a valid NameString (as described in ``value.proto``) + Required + type: string + choiceArgument: + description: |- + The argument for this choice. + Required + ExerciseCommand: + title: ExerciseCommand + description: Exercise a choice on an existing contract. + type: object + required: + - templateId + - contractId + - choice + - choiceArgument + properties: + templateId: + description: |- + The template or interface of the contract the client wants to exercise. + Both package-name and package-id reference identifier formats for the template-id are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + To exercise a choice on an interface, specify the interface identifier in the template_id field. + + Required + type: string + contractId: + description: |- + The ID of the contract the client wants to exercise upon. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + choice: + description: |- + The name of the choice the client wants to exercise. + Must be a valid NameString (as described in ``value.proto``) + Required + type: string + choiceArgument: + description: |- + The argument for this choice. + Required + ExercisedEvent: + title: ExercisedEvent + description: Records that a choice has been exercised on a target contract. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - choice + - choiceArgument + - consuming + - lastDescendantNodeId + - exerciseResult + - packageName + - acsDelta + properties: + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + Required, it is a valid absolute offset (positive integer) + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating transaction or reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of transactions. + Required, must be valid node ID (non-negative integer) + type: integer + format: int32 + contractId: + description: |- + The ID of the target contract. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + templateId: + description: |- + Identifies the template that defines the executed choice. + This template's package-id may differ from the target contract's package-id + if the target contract has been upgraded or downgraded. + + The identifier uses the package-id reference format. + + Required + type: string + interfaceId: + description: |- + The interface where the choice is defined, if inherited. + If defined, the identifier uses the package-id reference format. + + Optional + type: string + choice: + description: |- + The choice that was exercised on the target contract. + Must be a valid NameString (as described in ``value.proto``). + Required + type: string + choiceArgument: + description: |- + The argument of the exercised choice. + Required + actingParties: + description: |- + The parties that exercised the choice. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Required + type: array + items: + type: string + consuming: + description: |- + If true, the target contract may no longer be exercised. + Required + type: boolean + witnessParties: + description: |- + The parties that are notified of this event. The witnesses of an exercise + node will depend on whether the exercise was consuming or not. + If consuming, the witnesses are the union of the stakeholders, + the actors and all informees of all the ancestors of this event this + participant knows about. + If not consuming, the witnesses are the union of the signatories, + the actors and all informees of all the ancestors of this event this + participant knows about. + In both cases the witnesses are limited to the querying parties, or not + limited in case anyParty filters are used. + Note that the actors might not necessarily be observers + and thus stakeholders. This is the case when the controllers of a + choice are specified using "flexible controllers", using the + ``choice ... controller`` syntax, and said controllers are not + explicitly marked as observers. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Required + type: array + items: + type: string + lastDescendantNodeId: + description: |- + Specifies the upper boundary of the node ids of the events in the same transaction that appeared as a result of + this ``ExercisedEvent``. This allows unambiguous identification of all the members of the subtree rooted at this + node. A full subtree can be constructed when all descendant nodes are present in the stream. If nodes are heavily + filtered, it is only possible to determine if a node is in a consequent subtree or not. + Required + type: integer + format: int32 + exerciseResult: + description: |- + The result of exercising the choice. + Required + packageName: + description: |- + The package name of the contract. + Required + type: string + implementedInterfaces: + description: |- + If the event is consuming, the interfaces implemented by the target template that have been + matched from the interface filter query. + Populated only in case interface filters with include_interface_view set. + + The identifier uses the package-id reference format. + + Optional + type: array + items: + type: string + acsDelta: + description: |- + 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 + type: boolean + ExercisedTreeEvent: + title: ExercisedTreeEvent + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ExercisedEvent' + ExperimentalCommandInspectionService: + title: ExperimentalCommandInspectionService + description: Whether the Ledger API supports command inspection service + type: object + required: + - supported + properties: + supported: + description: '' + type: boolean + ExperimentalFeatures: + title: ExperimentalFeatures + description: See the feature message definitions for descriptions. + type: object + properties: + staticTime: + $ref: '#/components/schemas/ExperimentalStaticTime' + description: '' + commandInspectionService: + $ref: '#/components/schemas/ExperimentalCommandInspectionService' + description: '' + ExperimentalStaticTime: + title: ExperimentalStaticTime + description: Ledger is in the static time mode and exposes a time service. + type: object + required: + - supported + properties: + supported: + description: '' + type: boolean + FeaturesDescriptor: + title: FeaturesDescriptor + type: object + properties: + experimental: + $ref: '#/components/schemas/ExperimentalFeatures' + description: |- + Features under development or features that are used + for ledger implementation testing purposes only. + + Daml applications SHOULD not depend on these in production. + userManagement: + $ref: '#/components/schemas/UserManagementFeature' + description: |- + If set, then the Ledger API server supports user management. + It is recommended that clients query this field to gracefully adjust their behavior for + ledgers that do not support user management. + partyManagement: + $ref: '#/components/schemas/PartyManagementFeature' + description: |- + If set, then the Ledger API server supports party management configurability. + It is recommended that clients query this field to gracefully adjust their behavior to + maximum party page size. + offsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpointFeature' + description: It contains the timeouts related to the periodic offset checkpoint + emission + packageFeature: + $ref: '#/components/schemas/PackageFeature' + description: |- + If set, then the Ledger API server supports package listing + configurability. It is recommended that clients query this field to + gracefully adjust their behavior to maximum package listing page size. + Field: + title: Field + type: object + properties: + varint: + type: array + items: + type: integer + format: int64 + fixed64: + type: array + items: + type: integer + format: int64 + fixed32: + type: array + items: + type: integer + format: int32 + lengthDelimited: + type: array + items: + type: string + FieldMask: + title: FieldMask + type: object + required: + - unknownFields + properties: + paths: + type: array + items: + type: string + unknownFields: + $ref: '#/components/schemas/UnknownFieldSet' + Filters: + title: Filters + description: The union of a set of template filters, interface filters, or a + wildcard. + type: object + properties: + cumulative: + description: |- + Every filter in the cumulative list expands the scope of the resulting stream. Each interface, + template or wildcard filter means additional events that will match the query. + The impact of include_interface_view and include_created_event_blob fields in the filters will + also be accumulated. + A template or an interface SHOULD NOT appear twice in the accumulative field. + A wildcard filter SHOULD NOT be defined more than once in the accumulative field. + Optional, if no ``CumulativeFilter`` defined, the default of a single ``WildcardFilter`` with + include_created_event_blob unset is used. + type: array + items: + $ref: '#/components/schemas/CumulativeFilter' + GenerateExternalPartyTopologyRequest: + title: GenerateExternalPartyTopologyRequest + type: object + required: + - synchronizer + - partyHint + - localParticipantObservationOnly + - confirmationThreshold + properties: + synchronizer: + description: |- + TODO(#27670) support synchronizer aliases + Required: synchronizer-id for which we are building this request. + type: string + partyHint: + description: 'Required: the actual party id will be constructed from this + hint and a fingerprint of the public key' + type: string + publicKey: + $ref: '#/components/schemas/SigningPublicKey' + description: 'Required: public key' + localParticipantObservationOnly: + description: 'Optional: if true, then the local participant will only be + observing, not confirming. Default false.' + type: boolean + otherConfirmingParticipantUids: + description: 'Optional: other participant ids which should be confirming + for this party' + type: array + items: + type: string + confirmationThreshold: + description: 'Optional: Confirmation threshold >= 1 for the party. Defaults + to all available confirmers (or if set to 0).' + type: integer + format: int32 + observingParticipantUids: + description: 'Optional: other observing participant ids for this party' + type: array + items: + type: string + GenerateExternalPartyTopologyResponse: + title: GenerateExternalPartyTopologyResponse + description: Response message with topology transactions and the multi-hash + to be signed. + type: object + required: + - partyId + - publicKeyFingerprint + - multiHash + properties: + partyId: + description: the generated party id + type: string + publicKeyFingerprint: + description: the fingerprint of the supplied public key + type: string + topologyTransactions: + description: |- + The serialized topology transactions which need to be signed and submitted as part of the allocate party process + Note that the serialization includes the versioning information. Therefore, the transaction here is serialized + as an `UntypedVersionedMessage` which in turn contains the serialized `TopologyTransaction` in the version + supported by the synchronizer. + type: array + items: + type: string + multiHash: + description: the multi-hash which may be signed instead of each individual + transaction + type: string + GetActiveContractsRequest: + title: GetActiveContractsRequest + description: |- + If the given offset is different than the ledger end, and there are (un)assignments in-flight at the given offset, + the snapshot may fail with "FAILED_PRECONDITION/PARTICIPANT_PRUNED_DATA_ACCESSED". + Note that it is ok to request acs snapshots for party migration with offsets other than ledger end, because party + migration is not concerned with incomplete (un)assignments. + type: object + required: + - verbose + - activeAtOffset + properties: + filter: + $ref: '#/components/schemas/TransactionFilter' + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Templates to include in the served snapshot, per party. + Optional, if specified event_format must be unset, if not specified event_format must be set. + verbose: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + Optional, if specified event_format must be unset. + type: boolean + activeAtOffset: + description: |- + The offset at which the snapshot of the active contracts will be computed. + Must be no greater than the current ledger end offset. + Must be greater than or equal to the last pruning offset. + Required, must be a valid absolute offset (positive integer) or ledger begin offset (zero). + If zero, the empty set will be returned. + type: integer + format: int64 + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: |- + Format of the contract_entries in the result. In case of CreatedEvent the presentation will be of + TRANSACTION_SHAPE_ACS_DELTA. + Optional for backwards compatibility, defaults to an EventFormat where: + + - filters_by_party is the filter.filters_by_party from this request + - filters_for_any_party is the filter.filters_for_any_party from this request + - verbose is the verbose field from this request + GetConnectedSynchronizersResponse: + title: GetConnectedSynchronizersResponse + type: object + properties: + connectedSynchronizers: + description: '' + type: array + items: + $ref: '#/components/schemas/ConnectedSynchronizer' + GetContractRequest: + title: GetContractRequest + type: object + required: + - contractId + properties: + contractId: + description: |- + The ID of the contract. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + queryingParties: + description: |- + The list of querying parties + The stakeholders of the referenced contract must have an intersection with any of these parties + to return the result. + Optional, if no querying_parties specified, all possible contracts could be returned. + type: array + items: + type: string + GetContractResponse: + title: GetContractResponse + type: object + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + The representative_package_id will be always set to the contract package ID, therefore this endpoint should + not be used to lookup contract which entered the participant via party replication or repair service. + The witnesses field will contain only the querying_parties which are also stakeholders of the contract as well. + The following fields of the created event cannot be populated, so those should not be used / parsed: + + - offset + - node_id + - created_event_blob + - interface_views + - acs_delta + + Required + GetEventsByContractIdRequest: + title: GetEventsByContractIdRequest + type: object + required: + - contractId + properties: + contractId: + description: |- + The contract id being queried. + Required + type: string + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: |- + Format of the events in the result, the presentation will be of TRANSACTION_SHAPE_ACS_DELTA. + Required + GetIdentityProviderConfigResponse: + title: GetIdentityProviderConfigResponse + type: object + properties: + identityProviderConfig: + $ref: '#/components/schemas/IdentityProviderConfig' + description: '' + GetLatestPrunedOffsetsResponse: + title: GetLatestPrunedOffsetsResponse + type: object + required: + - participantPrunedUpToInclusive + - allDivulgedContractsPrunedUpToInclusive + properties: + participantPrunedUpToInclusive: + description: |- + It will always be a non-negative integer. + If positive, the absolute offset up to which the ledger has been pruned, + disregarding the state of all divulged contracts pruning. + If zero, the ledger has not been pruned yet. + type: integer + format: int64 + allDivulgedContractsPrunedUpToInclusive: + description: |- + It will always be a non-negative integer. + If positive, the absolute offset up to which all divulged events have been pruned on the ledger. + It can be at or before the ``participant_pruned_up_to_inclusive`` offset. + For more details about all divulged events pruning, + see ``PruneRequest.prune_all_divulged_contracts`` in ``participant_pruning_service.proto``. + If zero, the divulged events have not been pruned yet. + type: integer + format: int64 + GetLedgerApiVersionResponse: + title: GetLedgerApiVersionResponse + type: object + required: + - version + properties: + version: + description: The version of the ledger API. + type: string + features: + $ref: '#/components/schemas/FeaturesDescriptor' + description: |- + The features supported by this Ledger API endpoint. + + Daml applications CAN use the feature descriptor on top of + version constraints on the Ledger API version to determine + whether a given Ledger API endpoint supports the features + required to run the application. + + See the feature descriptions themselves for the relation between + Ledger API versions and feature presence. + GetLedgerEndResponse: + title: GetLedgerEndResponse + type: object + required: + - offset + properties: + offset: + description: |- + It will always be a non-negative integer. + If zero, the participant view of the ledger is empty. + If positive, the absolute offset of the ledger as viewed by the participant. + type: integer + format: int64 + GetPackageStatusResponse: + title: GetPackageStatusResponse + type: object + required: + - packageStatus + properties: + packageStatus: + description: The status of the package. + type: string + enum: + - PACKAGE_STATUS_UNSPECIFIED + - PACKAGE_STATUS_REGISTERED + GetParticipantIdResponse: + title: GetParticipantIdResponse + type: object + required: + - participantId + properties: + participantId: + description: |- + Identifier of the participant, which SHOULD be globally unique. + Must be a valid LedgerString (as describe in ``value.proto``). + type: string + GetPartiesResponse: + title: GetPartiesResponse + type: object + properties: + partyDetails: + description: |- + The details of the requested Daml parties by the participant, if known. + The party details may not be in the same order as requested. + Required + type: array + items: + $ref: '#/components/schemas/PartyDetails' + GetPreferredPackageVersionResponse: + title: GetPreferredPackageVersionResponse + type: object + properties: + packagePreference: + $ref: '#/components/schemas/PackagePreference' + description: |- + Not populated when no preferred package is found + Optional + GetPreferredPackagesRequest: + title: GetPreferredPackagesRequest + type: object + required: + - synchronizerId + properties: + packageVettingRequirements: + description: |- + The package-name vetting requirements for which the preferred packages should be resolved. + + Generally it is enough to provide the requirements for the intended command's root package-names. + Additional package-name requirements can be provided when additional Daml transaction informees need to use + package dependencies of the command's root packages. + + Required + type: array + items: + $ref: '#/components/schemas/PackageVettingRequirement' + synchronizerId: + description: |- + The synchronizer whose vetting state should be used for resolving this query. + If not specified, the vetting states of all synchronizers to which the participant is connected are used. + Optional + type: string + vettingValidAt: + description: |- + The timestamp at which the package vetting validity should be computed + on the latest topology snapshot as seen by the participant. + If not provided, the participant's current clock time is used. + Optional + type: string + GetPreferredPackagesResponse: + title: GetPreferredPackagesResponse + type: object + required: + - synchronizerId + properties: + packageReferences: + description: |- + The package references of the preferred packages. + Must contain one package reference for each requested package-name. + + If you build command submissions whose content depends on the returned + preferred packages, then we recommend submitting the preferred package-ids + in the ``package_id_selection_preference`` of the command submission to + avoid race conditions with concurrent changes of the on-ledger package vetting state. + + Required + type: array + items: + $ref: '#/components/schemas/PackageReference' + synchronizerId: + description: |- + The synchronizer for which the package preferences are computed. + If the synchronizer_id was specified in the request, then it matches the request synchronizer_id. + Required + type: string + GetTransactionByIdRequest: + title: GetTransactionByIdRequest + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - updateId + properties: + updateId: + description: |- + The ID of a particular transaction. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + requestingParties: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + The parties whose events the client expects to see. + Events that are not visible for the parties in this collection will not be present in the response. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Optional for backwards compatibility for GetTransactionById request: if defined transaction_format must be + unset (falling back to defaults). + type: array + items: + type: string + transactionFormat: + $ref: '#/components/schemas/TransactionFormat' + description: |- + Optional for GetTransactionById request for backwards compatibility: defaults to a transaction_format, where: + + - event_format.filters_by_party will have template-wildcard filters for all the requesting_parties + - event_format.filters_for_any_party is unset + - event_format.verbose = true + - transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + GetTransactionByOffsetRequest: + title: GetTransactionByOffsetRequest + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - offset + properties: + offset: + description: |- + The offset of the transaction being looked up. + Must be a valid absolute offset (positive integer). + Required + type: integer + format: int64 + requestingParties: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + The parties whose events the client expects to see. + Events that are not visible for the parties in this collection will not be present in the response. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Optional for backwards compatibility for GetTransactionByOffset request: if defined transaction_format must be + unset (falling back to defaults). + type: array + items: + type: string + transactionFormat: + $ref: '#/components/schemas/TransactionFormat' + description: |- + Optional for GetTransactionByOffset request for backwards compatibility: defaults to a TransactionFormat, where: + + - event_format.filters_by_party will have template-wildcard filters for all the requesting_parties + - event_format.filters_for_any_party is unset + - event_format.verbose = true + - transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + GetUpdateByIdRequest: + title: GetUpdateByIdRequest + type: object + required: + - updateId + properties: + updateId: + description: |- + The ID of a particular update. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + updateFormat: + $ref: '#/components/schemas/UpdateFormat' + description: |- + The format for the update. + Required + GetUpdateByOffsetRequest: + title: GetUpdateByOffsetRequest + type: object + required: + - offset + properties: + offset: + description: |- + The offset of the update being looked up. + Must be a valid absolute offset (positive integer). + Required + type: integer + format: int64 + updateFormat: + $ref: '#/components/schemas/UpdateFormat' + description: |- + The format for the update. + Required + GetUpdatesRequest: + title: GetUpdatesRequest + type: object + required: + - beginExclusive + - verbose + properties: + beginExclusive: + description: |- + Beginning of the requested ledger section (non-negative integer). + The response will only contain transactions whose offset is strictly greater than this. + If zero, the stream will start from the beginning of the ledger. + If positive, the streaming will start after this absolute offset. + If the ledger has been pruned, this parameter must be specified and be greater than the pruning offset. + type: integer + format: int64 + endInclusive: + description: |- + End of the requested ledger section. + The response will only contain transactions whose offset is less than or equal to this. + Optional, if empty, the stream will not terminate. + If specified, the stream will terminate after this absolute offset (positive integer) is reached. + type: integer + format: int64 + filter: + $ref: '#/components/schemas/TransactionFilter' + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Requesting parties with template filters. + Template filters must be empty for GetUpdateTrees requests. + Optional for backwards compatibility, if defined update_format must be unset + verbose: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels, record and variant type ids + for record fields. + Optional for backwards compatibility, if defined update_format must be unset + type: boolean + updateFormat: + $ref: '#/components/schemas/UpdateFormat' + description: |- + Must be unset for GetUpdateTrees request. + Optional for backwards compatibility for GetUpdates request: defaults to an UpdateFormat where: + + - include_transactions.event_format.filters_by_party = the filter.filters_by_party on this request + - include_transactions.event_format.filters_for_any_party = the filter.filters_for_any_party on this request + - include_transactions.event_format.verbose = the same flag specified on this request + - include_transactions.transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + - include_reassignments.filter = the same filter specified on this request + - include_reassignments.verbose = the same flag specified on this request + - include_topology_events.include_participant_authorization_events.parties = all the parties specified in filter + GetUserResponse: + title: GetUserResponse + type: object + properties: + user: + $ref: '#/components/schemas/User' + description: Retrieved user. + GrantUserRightsRequest: + title: GrantUserRightsRequest + description: |- + Add the rights to the set of rights granted to the user. + + Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id)`` + type: object + required: + - userId + - identityProviderId + properties: + userId: + description: |- + The user to whom to grant rights. + Required + type: string + rights: + description: |- + The rights to grant. + Optional + type: array + items: + $ref: '#/components/schemas/Right' + identityProviderId: + description: |- + The id of the ``Identity Provider`` + Optional, if not set, assume the user is managed by the default identity provider. + type: string + GrantUserRightsResponse: + title: GrantUserRightsResponse + type: object + properties: + newlyGrantedRights: + description: The rights that were newly granted by the request. + type: array + items: + $ref: '#/components/schemas/Right' + Identifier: + title: Identifier + type: object + required: + - packageId + - moduleName + - entityName + properties: + packageId: + type: string + moduleName: + type: string + entityName: + type: string + IdentifierFilter: + title: IdentifierFilter + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty1' + - type: object + required: + - InterfaceFilter + properties: + InterfaceFilter: + $ref: '#/components/schemas/InterfaceFilter' + - type: object + required: + - TemplateFilter + properties: + TemplateFilter: + $ref: '#/components/schemas/TemplateFilter' + - type: object + required: + - WildcardFilter + properties: + WildcardFilter: + $ref: '#/components/schemas/WildcardFilter' + IdentityProviderAdmin: + title: IdentityProviderAdmin + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/IdentityProviderAdmin1' + IdentityProviderAdmin1: + title: IdentityProviderAdmin + type: object + IdentityProviderConfig: + title: IdentityProviderConfig + type: object + required: + - identityProviderId + - isDeactivated + - issuer + - jwksUrl + - audience + properties: + identityProviderId: + description: |- + The identity provider identifier + Must be a valid LedgerString (as describe in ``value.proto``). + Required + type: string + isDeactivated: + description: |- + When set, the callers using JWT tokens issued by this identity provider are denied all access + to the Ledger API. + Optional, + Modifiable + type: boolean + issuer: + description: |- + Specifies the issuer of the JWT token. + The issuer value is a case sensitive URL using the https scheme that contains scheme, host, + and optionally, port number and path components and no query or fragment components. + Required + Modifiable + type: string + jwksUrl: + description: |- + The JWKS (JSON Web Key Set) URL. + The Ledger API uses JWKs (JSON Web Keys) from the provided URL to verify that the JWT has been + signed with the loaded JWK. Only RS256 (RSA Signature with SHA-256) signing algorithm is supported. + Required + Modifiable + type: string + audience: + description: |- + Specifies the audience of the JWT token. + When set, the callers using JWT tokens issued by this identity provider are allowed to get an access + only if the "aud" claim includes the string specified here + Optional, + Modifiable + type: string + InterfaceFilter: + title: InterfaceFilter + description: This filter matches contracts that implement a specific interface. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/InterfaceFilter1' + InterfaceFilter1: + title: InterfaceFilter + description: This filter matches contracts that implement a specific interface. + type: object + required: + - includeInterfaceView + - includeCreatedEventBlob + properties: + interfaceId: + description: |- + The interface that a matching contract must implement. + The ``interface_id`` needs to be valid: corresponding interface should be defined in + one of the available packages at the time of the query. + Both package-name and package-id reference formats for the identifier are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + includeInterfaceView: + description: |- + Whether to include the interface view on the contract in the returned ``CreatedEvent``. + Use this to access contract data in a uniform manner in your API client. + Optional + type: boolean + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract create event payload in your API client + for submitting it as a disclosed contract with future commands. + Optional + type: boolean + JsActiveContract: + title: JsActiveContract + type: object + required: + - createdEvent + - synchronizerId + - reassignmentCounter + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + Required + The event as it appeared in the context of its last update (i.e. daml transaction or + reassignment). In particular, the last offset, node_id pair is preserved. + The last update is the most recent update created or assigned this contract on synchronizer_id synchronizer. + The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used + for lookups. + synchronizerId: + description: |- + A valid synchronizer id + Required + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + This field will be the reassignment_counter of the latest observable activation event on this synchronizer, which is + before the active_at_offset. + Required + type: integer + format: int64 + JsArchived: + title: JsArchived + type: object + required: + - archivedEvent + - synchronizerId + properties: + archivedEvent: + $ref: '#/components/schemas/ArchivedEvent' + description: Required + synchronizerId: + description: |- + Required + The synchronizer which sequenced the archival of the contract + type: string + JsAssignedEvent: + title: JsAssignedEvent + description: Records that a contract has been assigned, and it can be used on + the target synchronizer. + type: object + required: + - source + - target + - reassignmentId + - submitter + - reassignmentCounter + - createdEvent + properties: + source: + description: |- + The ID of the source synchronizer. + Must be a valid synchronizer id. + Required + type: string + target: + description: |- + The ID of the target synchronizer. + Must be a valid synchronizer id. + Required + type: string + reassignmentId: + description: |- + The ID from the unassigned event. + For correlation capabilities. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + submitter: + description: |- + Party on whose behalf the assign command was executed. + Empty if the assignment happened offline via the repair service. + Must be a valid PartyIdString (as described in ``value.proto``). + Optional + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + Required + type: integer + format: int64 + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + Required + The offset of this event refers to the offset of the assignment, + while the node_id is the index of within the batch. + JsAssignmentEvent: + title: JsAssignmentEvent + type: object + required: + - source + - target + - reassignmentId + - submitter + - reassignmentCounter + - createdEvent + properties: + source: + type: string + target: + type: string + reassignmentId: + type: string + submitter: + type: string + reassignmentCounter: + type: integer + format: int64 + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + JsCantonError: + title: JsCantonError + type: object + required: + - code + - cause + - context + - errorCategory + properties: + code: + type: string + cause: + type: string + correlationId: + type: string + traceId: + type: string + context: + $ref: '#/components/schemas/Map_String' + resources: + type: array + items: + $ref: '#/components/schemas/Tuple2_String_String' + errorCategory: + type: integer + format: int32 + grpcCodeValue: + type: integer + format: int32 + retryInfo: + type: string + definiteAnswer: + type: boolean + JsCommands: + title: JsCommands + description: A composite command that groups multiple commands together. + type: object + required: + - commandId + properties: + commands: + description: |- + Individual elements of this atomic command. Must be non-empty. + Required + type: array + items: + $ref: '#/components/schemas/Command' + commandId: + description: |- + Uniquely identifies the command. + The triple (user_id, act_as, command_id) constitutes the change ID for the intended ledger change, + where act_as is interpreted as a set of party names. + The change ID can be used for matching the intended ledger changes with all their completions. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + actAs: + description: |- + Set of parties on whose behalf the command should be executed. + If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + to act on behalf of each of the given parties. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Required, must be non-empty. + type: array + items: + type: string + userId: + description: |- + Uniquely identifies the participant user that issued the command. + Must be a valid UserIdString (as described in ``value.proto``). + Required unless authentication is used with a user token. + In that case, the token's user-id will be used for the request's user_id. + type: string + readAs: + description: |- + Set of parties on whose behalf (in addition to all parties listed in ``act_as``) contracts can be retrieved. + This affects Daml operations such as ``fetch``, ``fetchByKey``, ``lookupByKey``, ``exercise``, and ``exerciseByKey``. + Note: A participant node of a Daml network can host multiple parties. Each contract present on the participant + node is only visible to a subset of these parties. A command can only use contracts that are visible to at least + one of the parties in ``act_as`` or ``read_as``. This visibility check is independent from the Daml authorization + rules for fetch operations. + If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + to read contract data on behalf of each of the given parties. + Optional + type: array + items: + type: string + workflowId: + description: |- + Identifier of the on-ledger workflow that this command is a part of. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod' + minLedgerTimeAbs: + description: |- + Lower bound for the ledger time assigned to the resulting transaction. + Note: The ledger time of a transaction is assigned as part of command interpretation. + Use this property if you expect that command interpretation will take a considerate amount of time, such that by + the time the resulting transaction is sequenced, its assigned ledger time is not valid anymore. + Must not be set at the same time as min_ledger_time_rel. + Optional + type: string + minLedgerTimeRel: + $ref: '#/components/schemas/Duration' + description: |- + Same as min_ledger_time_abs, but specified as a duration, starting from the time the command is received by the server. + Must not be set at the same time as min_ledger_time_abs. + Optional + submissionId: + description: |- + A unique identifier to distinguish completions for different submissions with the same change ID. + Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + with the same change ID. + Must be a valid LedgerString (as described in ``value.proto``). + + If omitted, the participant or the committer may set a value of their choice. + Optional + type: string + disclosedContracts: + description: |- + Additional contracts used to resolve contract & contract key lookups. + Optional + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + synchronizerId: + description: |- + Must be a valid synchronizer id + Optional + type: string + packageIdSelectionPreference: + description: |- + The package-id selection preference of the client for resolving + package names and interface instances in command submission and interpretation + type: array + items: + type: string + prefetchContractKeys: + description: |- + Fetches the contract keys into the caches to speed up the command processing. + Should only contain contract keys that are expected to be resolved during interpretation of the commands. + Keys of disclosed contracts do not need prefetching. + + Optional + type: array + items: + $ref: '#/components/schemas/PrefetchContractKey' + JsContractEntry: + title: JsContractEntry + description: |- + For a contract there could be multiple contract_entry-s in the entire snapshot. These together define + the state of one contract in the snapshot. + A contract_entry is included in the result, if and only if there is at least one stakeholder party of the contract + that is hosted on the synchronizer at the time of the event and the party satisfies the + ``TransactionFilter`` in the query. + oneOf: + - type: object + required: + - JsActiveContract + properties: + JsActiveContract: + $ref: '#/components/schemas/JsActiveContract' + - type: object + required: + - JsEmpty + properties: + JsEmpty: + $ref: '#/components/schemas/JsEmpty' + - type: object + required: + - JsIncompleteAssigned + properties: + JsIncompleteAssigned: + $ref: '#/components/schemas/JsIncompleteAssigned' + - type: object + required: + - JsIncompleteUnassigned + properties: + JsIncompleteUnassigned: + $ref: '#/components/schemas/JsIncompleteUnassigned' + JsCreated: + title: JsCreated + type: object + required: + - createdEvent + - synchronizerId + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + Required + The event as it appeared in the context of its original update (i.e. daml transaction or + reassignment) on this participant node. You can use its offset and node_id to find the + corresponding update and the node within it. + synchronizerId: + description: |- + The synchronizer which sequenced the creation of the contract + Required + type: string + JsEmpty: + title: JsEmpty + type: object + JsExecuteSubmissionAndWaitForTransactionRequest: + title: JsExecuteSubmissionAndWaitForTransactionRequest + type: object + required: + - deduplicationPeriod + - submissionId + - userId + - hashingSchemeVersion + properties: + preparedTransaction: + description: |- + the prepared transaction + Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse` + obtained from calling `prepareSubmission`. + Required + type: string + partySignatures: + $ref: '#/components/schemas/PartySignatures' + description: |- + The party(ies) signatures that authorize the prepared submission to be executed by this node. + Each party can provide one or more signatures.. + and one or more parties can sign. + Note that currently, only single party submissions are supported. + Required + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod2' + submissionId: + description: |- + A unique identifier to distinguish completions for different submissions with the same change ID. + Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + with the same change ID. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + userId: + description: |- + See [PrepareSubmissionRequest.user_id] + Optional + type: string + hashingSchemeVersion: + description: |- + The hashing scheme version used when building the hash + Required + type: string + enum: + - HASHING_SCHEME_VERSION_UNSPECIFIED + - HASHING_SCHEME_VERSION_V2 + minLedgerTime: + $ref: '#/components/schemas/MinLedgerTime' + description: |- + If set will influence the chosen ledger effective time but will not result in a submission delay so any override + should be scheduled to executed within the window allowed by synchronizer. + Optional + transactionFormat: + $ref: '#/components/schemas/TransactionFormat' + description: |- + If no ``transaction_format`` is provided, a default will be used where ``transaction_shape`` is set to + TRANSACTION_SHAPE_ACS_DELTA, ``event_format`` is defined with ``filters_by_party`` containing wildcard-template + filter for all original ``act_as`` and ``read_as`` parties and the ``verbose`` flag is set. + When the ``transaction_shape`` TRANSACTION_SHAPE_ACS_DELTA shape is used (explicitly or is defaulted to as explained above), + events will only be returned if the submitting party is hosted on this node. + Optional + JsExecuteSubmissionAndWaitForTransactionResponse: + title: JsExecuteSubmissionAndWaitForTransactionResponse + type: object + required: + - transaction + properties: + transaction: + $ref: '#/components/schemas/JsTransaction' + description: |- + The transaction that resulted from the submitted command. + The transaction might contain no events (request conditions result in filtering out all of them). + Required + JsExecuteSubmissionAndWaitRequest: + title: JsExecuteSubmissionAndWaitRequest + type: object + required: + - deduplicationPeriod + - submissionId + - userId + - hashingSchemeVersion + properties: + preparedTransaction: + description: |- + the prepared transaction + Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse` + obtained from calling `prepareSubmission`. + Required + type: string + partySignatures: + $ref: '#/components/schemas/PartySignatures' + description: |- + The party(ies) signatures that authorize the prepared submission to be executed by this node. + Each party can provide one or more signatures.. + and one or more parties can sign. + Note that currently, only single party submissions are supported. + Required + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod2' + submissionId: + description: |- + A unique identifier to distinguish completions for different submissions with the same change ID. + Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + with the same change ID. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + userId: + description: |- + See [PrepareSubmissionRequest.user_id] + Optional + type: string + hashingSchemeVersion: + description: |- + The hashing scheme version used when building the hash + Required + type: string + enum: + - HASHING_SCHEME_VERSION_UNSPECIFIED + - HASHING_SCHEME_VERSION_V2 + minLedgerTime: + $ref: '#/components/schemas/MinLedgerTime' + description: |- + If set will influence the chosen ledger effective time but will not result in a submission delay so any override + should be scheduled to executed within the window allowed by synchronizer. + Optional + JsExecuteSubmissionRequest: + title: JsExecuteSubmissionRequest + type: object + required: + - deduplicationPeriod + - submissionId + - userId + - hashingSchemeVersion + properties: + preparedTransaction: + description: |- + the prepared transaction + Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse` + obtained from calling `prepareSubmission`. + Required + type: string + partySignatures: + $ref: '#/components/schemas/PartySignatures' + description: |- + The party(ies) signatures that authorize the prepared submission to be executed by this node. + Each party can provide one or more signatures.. + and one or more parties can sign. + Note that currently, only single party submissions are supported. + Required + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod2' + submissionId: + description: |- + A unique identifier to distinguish completions for different submissions with the same change ID. + Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + with the same change ID. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + userId: + description: |- + See [PrepareSubmissionRequest.user_id] + Optional + type: string + hashingSchemeVersion: + description: |- + The hashing scheme version used when building the hash + Required + type: string + enum: + - HASHING_SCHEME_VERSION_UNSPECIFIED + - HASHING_SCHEME_VERSION_V2 + minLedgerTime: + $ref: '#/components/schemas/MinLedgerTime' + description: |- + If set will influence the chosen ledger effective time but will not result in a submission delay so any override + should be scheduled to executed within the window allowed by synchronizer. + Optional + JsGetActiveContractsResponse: + title: JsGetActiveContractsResponse + type: object + required: + - workflowId + - contractEntry + properties: + workflowId: + description: |- + The workflow ID used in command submission which corresponds to the contract_entry. Only set if + the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + contractEntry: + $ref: '#/components/schemas/JsContractEntry' + JsGetEventsByContractIdResponse: + title: JsGetEventsByContractIdResponse + type: object + properties: + created: + $ref: '#/components/schemas/JsCreated' + description: |- + The create event for the contract with the ``contract_id`` given in the request + provided it exists and has not yet been pruned. + Optional + archived: + $ref: '#/components/schemas/JsArchived' + description: |- + The archive event for the contract with the ``contract_id`` given in the request + provided such an archive event exists and it has not yet been pruned. + Optional + JsGetTransactionResponse: + title: JsGetTransactionResponse + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - transaction + properties: + transaction: + $ref: '#/components/schemas/JsTransaction' + description: Required + JsGetTransactionTreeResponse: + title: JsGetTransactionTreeResponse + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - transaction + properties: + transaction: + $ref: '#/components/schemas/JsTransactionTree' + description: Required + JsGetUpdateResponse: + title: JsGetUpdateResponse + type: object + required: + - update + properties: + update: + $ref: '#/components/schemas/Update' + JsGetUpdateTreesResponse: + title: JsGetUpdateTreesResponse + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - update + properties: + update: + $ref: '#/components/schemas/Update1' + JsGetUpdatesResponse: + title: JsGetUpdatesResponse + type: object + required: + - update + properties: + update: + $ref: '#/components/schemas/Update' + JsIncompleteAssigned: + title: JsIncompleteAssigned + type: object + required: + - assignedEvent + properties: + assignedEvent: + $ref: '#/components/schemas/JsAssignedEvent' + description: Required + JsIncompleteUnassigned: + title: JsIncompleteUnassigned + type: object + required: + - createdEvent + - unassignedEvent + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + Required + The event as it appeared in the context of its last activation update (i.e. daml transaction or + reassignment). In particular, the last activation offset, node_id pair is preserved. + The last activation update is the most recent update created or assigned this contract on synchronizer_id synchronizer before + the unassigned_event. + The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used + for lookups. + unassignedEvent: + $ref: '#/components/schemas/UnassignedEvent' + description: Required + JsInterfaceView: + title: JsInterfaceView + description: View of a create event matched by an interface filter. + type: object + required: + - interfaceId + - viewStatus + properties: + interfaceId: + description: |- + The interface implemented by the matched event. + The identifier uses the package-id reference format. + + Required + type: string + viewStatus: + $ref: '#/components/schemas/JsStatus' + description: |- + Whether the view was successfully computed, and if not, + the reason for the error. The error is reported using the same rules + for error codes and messages as the errors returned for API requests. + Required + viewValue: + description: |- + The value of the interface's view method on this event. + Set if it was requested in the ``InterfaceFilter`` and it could be + successfully computed. + Optional + JsPrepareSubmissionRequest: + title: JsPrepareSubmissionRequest + type: object + required: + - userId + - commandId + - synchronizerId + - verboseHashing + properties: + userId: + description: |- + Uniquely identifies the participant user that prepares the transaction. + Must be a valid UserIdString (as described in ``value.proto``). + Required unless authentication is used with a user token. + In that case, the token's user-id will be used for the request's user_id. + Optional + type: string + commandId: + description: |- + Uniquely identifies the command. + The triple (user_id, act_as, command_id) constitutes the change ID for the intended ledger change, + where act_as is interpreted as a set of party names. + The change ID can be used for matching the intended ledger changes with all their completions. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + commands: + description: |- + Individual elements of this atomic command. Must be non-empty. + Limitation: Only single command transaction are currently supported by the API. + The field is marked as repeated in preparation for future support of multiple commands. + Required + type: array + items: + $ref: '#/components/schemas/Command' + minLedgerTime: + $ref: '#/components/schemas/MinLedgerTime' + description: Optional + actAs: + description: |- + Set of parties on whose behalf the command should be executed, if submitted. + If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + to **read** (not act) on behalf of each of the given parties. This is because this RPC merely prepares a transaction + and does not execute it. Therefore read authorization is sufficient even for actAs parties. + Note: This may change, and more specific authorization scope may be introduced in the future. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Required, must be non-empty. + type: array + items: + type: string + readAs: + description: |- + Set of parties on whose behalf (in addition to all parties listed in ``act_as``) contracts can be retrieved. + This affects Daml operations such as ``fetch``, ``fetchByKey``, ``lookupByKey``, ``exercise``, and ``exerciseByKey``. + Note: A command can only use contracts that are visible to at least + one of the parties in ``act_as`` or ``read_as``. This visibility check is independent from the Daml authorization + rules for fetch operations. + If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + to read contract data on behalf of each of the given parties. + Optional + type: array + items: + type: string + disclosedContracts: + description: |- + Additional contracts used to resolve contract & contract key lookups. + Optional + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + synchronizerId: + description: |- + Must be a valid synchronizer id + If not set, a suitable synchronizer that this node is connected to will be chosen + Optional + type: string + packageIdSelectionPreference: + description: |- + The package-id selection preference of the client for resolving + package names and interface instances in command submission and interpretation + Optional + type: array + items: + type: string + verboseHashing: + description: |- + When true, the response will contain additional details on how the transaction was encoded and hashed + This can be useful for troubleshooting of hash mismatches. Should only be used for debugging. + Optional, default to false + type: boolean + prefetchContractKeys: + description: |- + Fetches the contract keys into the caches to speed up the command processing. + Should only contain contract keys that are expected to be resolved during interpretation of the commands. + Keys of disclosed contracts do not need prefetching. + + Optional + type: array + items: + $ref: '#/components/schemas/PrefetchContractKey' + maxRecordTime: + description: |- + Maximum timestamp at which the transaction can be recorded onto the ledger via the synchronizer specified in the `PrepareSubmissionResponse`. + If submitted after it will be rejected even if otherwise valid, in which case it needs to be prepared and signed again + with a new valid max_record_time. + Use this to limit the time-to-life of a prepared transaction, + which is useful to know when it can definitely not be accepted + anymore and resorting to preparing another transaction for the same + intent is safe again. + Optional + type: string + estimateTrafficCost: + $ref: '#/components/schemas/CostEstimationHints' + description: |- + Hints to improve the accuracy of traffic cost estimation. + The estimation logic assumes that this node will be used for the execution of the transaction + If another node is used instead, the estimation may be less precise. + Request amplification is not accounted for in the estimation: each amplified request will + result in the cost of the confirmation request to be charged additionally. + + Optional - Traffic cost estimation is enabled by default if this field is not set + To turn off cost estimation, set the CostEstimationHints#disabled field to true + JsPrepareSubmissionResponse: + title: JsPrepareSubmissionResponse + description: '[docs-entry-end: HashingSchemeVersion]' + type: object + required: + - preparedTransactionHash + - hashingSchemeVersion + properties: + preparedTransaction: + description: |- + The interpreted transaction, it represents the ledger changes necessary to execute the commands specified in the request. + Clients MUST display the content of the transaction to the user for them to validate before signing the hash if the preparing participant is not trusted. + type: string + preparedTransactionHash: + description: |- + Hash of the transaction, this is what needs to be signed by the party to authorize the transaction. + Only provided for convenience, clients MUST recompute the hash from the raw transaction if the preparing participant is not trusted. + May be removed in future versions + type: string + hashingSchemeVersion: + description: The hashing scheme version used when building the hash + type: string + enum: + - HASHING_SCHEME_VERSION_UNSPECIFIED + - HASHING_SCHEME_VERSION_V2 + hashingDetails: + description: |- + Optional additional details on how the transaction was encoded and hashed. Only set if verbose_hashing = true in the request + Note that there are no guarantees on the stability of the format or content of this field. + Its content should NOT be parsed and should only be used for troubleshooting purposes. + type: string + costEstimation: + $ref: '#/components/schemas/CostEstimation' + description: |- + Traffic cost estimation of the prepared transaction + Optional + JsReassignment: + title: JsReassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - updateId + - commandId + - workflowId + - offset + - recordTime + - synchronizerId + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this reassignment. Missing for everyone except the submitting party on the submitting participant. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + workflowId: + description: |- + The workflow ID used in reassignment command submission. Only set if the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + offset: + description: |- + The participant's offset. The details of this field are described in ``community/ledger-api/README.md``. + Required, must be a valid absolute offset (positive integer). + type: integer + format: int64 + events: + description: The collection of reassignment events. Required. + type: array + items: + $ref: '#/components/schemas/JsReassignmentEvent' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + recordTime: + description: |- + The time at which the reassignment was recorded. The record time refers to the source/target + synchronizer for an unassign/assign event respectively. + Required + type: string + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized this Reassignment. + Required + type: string + JsReassignmentEvent: + title: JsReassignmentEvent + oneOf: + - type: object + required: + - JsAssignmentEvent + properties: + JsAssignmentEvent: + $ref: '#/components/schemas/JsAssignmentEvent' + - type: object + required: + - JsUnassignedEvent + properties: + JsUnassignedEvent: + $ref: '#/components/schemas/JsUnassignedEvent' + JsStatus: + title: JsStatus + type: object + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + $ref: '#/components/schemas/ProtoAny' + JsSubmitAndWaitForReassignmentResponse: + title: JsSubmitAndWaitForReassignmentResponse + type: object + required: + - reassignment + properties: + reassignment: + $ref: '#/components/schemas/JsReassignment' + description: |- + The reassignment that resulted from the submitted reassignment command. + The reassignment might contain no events (request conditions result in filtering out all of them). + Required + JsSubmitAndWaitForTransactionRequest: + title: JsSubmitAndWaitForTransactionRequest + description: These commands are executed as a single atomic transaction. + type: object + required: + - commands + properties: + commands: + $ref: '#/components/schemas/JsCommands' + description: |- + The commands to be submitted. + Required + transactionFormat: + $ref: '#/components/schemas/TransactionFormat' + description: |- + If no ``transaction_format`` is provided, a default will be used where ``transaction_shape`` is set to + TRANSACTION_SHAPE_ACS_DELTA, ``event_format`` is defined with ``filters_by_party`` containing wildcard-template + filter for all original ``act_as`` and ``read_as`` parties and the ``verbose`` flag is set. + Optional + JsSubmitAndWaitForTransactionResponse: + title: JsSubmitAndWaitForTransactionResponse + type: object + required: + - transaction + properties: + transaction: + $ref: '#/components/schemas/JsTransaction' + description: |- + The transaction that resulted from the submitted command. + The transaction might contain no events (request conditions result in filtering out all of them). + Required + JsSubmitAndWaitForTransactionTreeResponse: + title: JsSubmitAndWaitForTransactionTreeResponse + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - transactionTree + properties: + transactionTree: + $ref: '#/components/schemas/JsTransactionTree' + JsTopologyTransaction: + title: JsTopologyTransaction + type: object + required: + - updateId + - offset + - synchronizerId + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + Required, it is a valid absolute offset (positive integer). + type: integer + format: int64 + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the topology transaction. + Required + type: string + recordTime: + description: |- + The time at which the changes in the topology transaction become effective. There is a small delay between a + topology transaction being sequenced and the changes it contains becoming effective. Topology transactions appear + in order relative to a synchronizer based on their effective time rather than their sequencing time. + Required + type: string + events: + description: |- + A non-empty list of topology events. + Required + type: array + items: + $ref: '#/components/schemas/TopologyEvent' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + JsTransaction: + title: JsTransaction + description: Filtered view of an on-ledger transaction's create and archive + events. + type: object + required: + - updateId + - commandId + - workflowId + - effectiveAt + - offset + - synchronizerId + - recordTime + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + workflowId: + description: |- + The workflow ID used in command submission. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + effectiveAt: + description: |- + Ledger effective time. + Required + type: string + events: + description: |- + The collection of events. + Contains: + + - ``CreatedEvent`` or ``ArchivedEvent`` in case of ACS_DELTA transaction shape + - ``CreatedEvent`` or ``ExercisedEvent`` in case of LEDGER_EFFECTS transaction shape + + Required + type: array + items: + $ref: '#/components/schemas/Event' + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + Required, it is a valid absolute offset (positive integer). + type: integer + format: int64 + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the transaction. + Required + type: string + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + recordTime: + description: |- + The time at which the transaction was recorded. The record time refers to the synchronizer + which synchronized the transaction. + Required + type: string + externalTransactionHash: + description: |- + For transaction externally signed, contains the external transaction hash + signed by the external party. Can be used to correlate an external submission with a committed transaction. + Optional + type: string + JsTransactionTree: + title: JsTransactionTree + description: |- + 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: + - updateId + - commandId + - workflowId + - offset + - eventsById + - synchronizerId + - recordTime + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + workflowId: + description: |- + The workflow ID used in command submission. Only set if the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + effectiveAt: + description: |- + Ledger effective time. + Required + type: string + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + Required, it is a valid absolute offset (positive integer). + type: integer + format: int64 + eventsById: + $ref: '#/components/schemas/Map_Int_TreeEvent' + description: |- + Changes to the ledger that were caused by this transaction. Nodes of the transaction tree. + Each key must be a valid node ID (non-negative integer). + Required + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the transaction. + Required + type: string + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + recordTime: + description: |- + The time at which the transaction was recorded. The record time refers to the synchronizer + which synchronized the transaction. + Required + type: string + JsUnassignedEvent: + title: JsUnassignedEvent + 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' + Kind: + title: Kind + description: Required + oneOf: + - type: object + required: + - CanActAs + properties: + CanActAs: + $ref: '#/components/schemas/CanActAs' + - type: object + required: + - CanExecuteAs + properties: + CanExecuteAs: + $ref: '#/components/schemas/CanExecuteAs' + - type: object + required: + - CanExecuteAsAnyParty + properties: + CanExecuteAsAnyParty: + $ref: '#/components/schemas/CanExecuteAsAnyParty' + - type: object + required: + - CanReadAs + properties: + CanReadAs: + $ref: '#/components/schemas/CanReadAs' + - type: object + required: + - CanReadAsAnyParty + properties: + CanReadAsAnyParty: + $ref: '#/components/schemas/CanReadAsAnyParty' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty8' + - type: object + required: + - IdentityProviderAdmin + properties: + IdentityProviderAdmin: + $ref: '#/components/schemas/IdentityProviderAdmin' + - type: object + required: + - ParticipantAdmin + properties: + ParticipantAdmin: + $ref: '#/components/schemas/ParticipantAdmin' + ListIdentityProviderConfigsResponse: + title: ListIdentityProviderConfigsResponse + type: object + properties: + identityProviderConfigs: + description: '' + type: array + items: + $ref: '#/components/schemas/IdentityProviderConfig' + ListKnownPartiesResponse: + title: ListKnownPartiesResponse + type: object + required: + - nextPageToken + properties: + partyDetails: + description: |- + The details of all Daml parties known by the participant. + Required + type: array + items: + $ref: '#/components/schemas/PartyDetails' + nextPageToken: + description: |- + Pagination token to retrieve the next page. + Empty, if there are no further results. + type: string + ListPackagesResponse: + title: ListPackagesResponse + type: object + properties: + packageIds: + description: |- + The IDs of all Daml-LF packages supported by the server. + Each element must be a valid PackageIdString (as described in ``value.proto``). + Required + type: array + items: + type: string + ListUserRightsResponse: + title: ListUserRightsResponse + type: object + properties: + rights: + description: All rights of the user. + type: array + items: + $ref: '#/components/schemas/Right' + ListUsersResponse: + title: ListUsersResponse + type: object + required: + - nextPageToken + properties: + users: + description: A subset of users of the participant node that fit into this + page. + type: array + items: + $ref: '#/components/schemas/User' + nextPageToken: + description: |- + Pagination token to retrieve the next page. + Empty, if there are no further results. + type: string + ListVettedPackagesRequest: + title: ListVettedPackagesRequest + type: object + required: + - pageToken + - pageSize + properties: + packageMetadataFilter: + $ref: '#/components/schemas/PackageMetadataFilter' + description: |- + The package metadata filter the returned vetted packages set must satisfy. + Optional + topologyStateFilter: + $ref: '#/components/schemas/TopologyStateFilter' + description: |- + The topology filter the returned vetted packages set must satisfy. + Optional + pageToken: + description: |- + Pagination token to determine the specific page to fetch. Using the token + guarantees that ``VettedPackages`` on a subsequent page are all greater + (``VettedPackages`` are sorted by synchronizer ID then participant ID) than + the last ``VettedPackages`` on a previous page. + + The server does not store intermediate results between calls chained by a + series of page tokens. As a consequence, if new vetted packages are being + added and a page is requested twice using the same token, more packages can + be returned on the second call. + + Leave unspecified (i.e. as empty string) to fetch the first page. + + Optional + type: string + pageSize: + description: |- + Maximum number of ``VettedPackages`` results to return in a single page. + + If the page_size is unspecified (i.e. left as 0), the server will decide + the number of results to be returned. + + If the page_size exceeds the maximum supported by the server, an + error will be returned. + + To obtain the server's maximum consult the PackageService descriptor + available in the VersionService. + + Optional + type: integer + format: int32 + ListVettedPackagesResponse: + title: ListVettedPackagesResponse + type: object + required: + - nextPageToken + properties: + vettedPackages: + description: |- + All ``VettedPackages`` that contain at least one ``VettedPackage`` matching + both a ``PackageMetadataFilter`` and a ``TopologyStateFilter``. + Sorted by synchronizer_id then participant_id. + type: array + items: + $ref: '#/components/schemas/VettedPackages' + nextPageToken: + description: |- + Pagination token to retrieve the next page. + Empty string if there are no further results. + type: string + Map_Filters: + title: Map_Filters + type: object + additionalProperties: + $ref: '#/components/schemas/Filters' + Map_Int_Field: + title: Map_Int_Field + type: object + additionalProperties: + $ref: '#/components/schemas/Field' + Map_Int_TreeEvent: + title: Map_Int_TreeEvent + type: object + additionalProperties: + $ref: '#/components/schemas/TreeEvent' + Map_String: + title: Map_String + type: object + additionalProperties: + type: string + MinLedgerTime: + title: MinLedgerTime + type: object + required: + - time + properties: + time: + $ref: '#/components/schemas/Time' + MinLedgerTimeAbs: + title: MinLedgerTimeAbs + type: object + required: + - value + properties: + value: + type: string + MinLedgerTimeRel: + title: MinLedgerTimeRel + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Duration' + NoPrior: + title: NoPrior + type: object + ObjectMeta: + title: ObjectMeta + description: |- + Represents metadata corresponding to a participant resource (e.g. a participant user or participant local information about a party). + + Based on ``ObjectMeta`` meta used in Kubernetes API. + See https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/v1/generated.proto#L640 + type: object + required: + - resourceVersion + - annotations + properties: + resourceVersion: + description: |- + An opaque, non-empty value, populated by a participant server which represents the internal version of the resource + this ``ObjectMeta`` message is attached to. The participant server will change it to a unique value each time the corresponding resource is updated. + You must not rely on the format of resource version. The participant server might change it without notice. + You can obtain the newest resource version value by issuing a read request. + You may use it for concurrent change detection by passing it back unmodified in an update request. + The participant server will then compare the passed value with the value maintained by the system to determine + if any other updates took place since you had read the resource version. + Upon a successful update you are guaranteed that no other update took place during your read-modify-write sequence. + However, if another update took place during your read-modify-write sequence then your update will fail with an appropriate error. + Concurrent change control is optional. It will be applied only if you include a resource version in an update request. + When creating a new instance of a resource you must leave the resource version empty. + Its value will be populated by the participant server upon successful resource creation. + Optional + type: string + annotations: + $ref: '#/components/schemas/Map_String' + description: |- + A set of modifiable key-value pairs that can be used to represent arbitrary, client-specific metadata. + Constraints: + + 1. The total size over all keys and values cannot exceed 256kb in UTF-8 encoding. + 2. Keys are composed of an optional prefix segment and a required name segment such that: + + - key prefix, when present, must be a valid DNS subdomain with at most 253 characters, followed by a '/' (forward slash) character, + - name segment must have at most 63 characters that are either alphanumeric ([a-z0-9A-Z]), or a '.' (dot), '-' (dash) or '_' (underscore); + and it must start and end with an alphanumeric character. + + 3. Values can be any non-empty strings. + + Keys with empty prefix are reserved for end-users. + Properties set by external tools or internally by the participant server must use non-empty key prefixes. + Duplicate keys are disallowed by the semantics of the protobuf3 maps. + See: https://developers.google.com/protocol-buffers/docs/proto3#maps + Annotations may be a part of a modifiable resource. + Use the resource's update RPC to update its annotations. + In order to add a new annotation or update an existing one using an update RPC, provide the desired annotation in the update request. + In order to remove an annotation using an update RPC, provide the target annotation's key but set its value to the empty string in the update request. + Optional + Modifiable + OffsetCheckpoint: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - 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' + OffsetCheckpoint1: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - detect time out of commands. + - provide an offset which can be used to restart consumption. + type: object + required: + - offset + properties: + offset: + description: |- + The participant's offset, the details of the offset field are described in ``community/ledger-api/README.md``. + Required, must be a valid absolute offset (positive integer). + type: integer + format: int64 + synchronizerTimes: + description: '' + type: array + items: + $ref: '#/components/schemas/SynchronizerTime' + OffsetCheckpoint2: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - 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' + OffsetCheckpoint3: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - 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' + OffsetCheckpointFeature: + title: OffsetCheckpointFeature + type: object + properties: + maxOffsetCheckpointEmissionDelay: + $ref: '#/components/schemas/Duration' + description: The maximum delay to emmit a new OffsetCheckpoint if it exists + Operation: + title: Operation + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty5' + - type: object + required: + - Unvet + properties: + Unvet: + $ref: '#/components/schemas/Unvet' + - type: object + required: + - Vet + properties: + Vet: + $ref: '#/components/schemas/Vet' + PackageFeature: + title: PackageFeature + type: object + required: + - maxVettedPackagesPageSize + properties: + maxVettedPackagesPageSize: + description: |- + The maximum number of vetted packages the server can return in a single + response (page) when listing them. + type: integer + format: int32 + PackageMetadataFilter: + title: PackageMetadataFilter + description: |- + Filter the VettedPackages by package metadata. + + A PackageMetadataFilter without package_ids and without package_name_prefixes + matches any vetted package. + + Non-empty fields specify candidate values of which at least one must match. + If both fields are set, then a candidate is returned if it matches one of the fields. + type: object + properties: + packageIds: + description: |- + If this list is non-empty, any vetted package with a package ID in this + list will match the filter. + type: array + items: + type: string + packageNamePrefixes: + description: |- + If this list is non-empty, any vetted package with a name matching at least + one prefix in this list will match the filter. + type: array + items: + type: string + PackagePreference: + title: PackagePreference + type: object + required: + - synchronizerId + properties: + packageReference: + $ref: '#/components/schemas/PackageReference' + description: |- + The package reference of the preferred package. + Required + synchronizerId: + description: |- + The synchronizer for which the preferred package was computed. + If the synchronizer_id was specified in the request, then it matches the request synchronizer_id. + Required + type: string + PackageReference: + title: PackageReference + type: object + required: + - packageId + - packageName + - packageVersion + properties: + packageId: + description: Required + type: string + packageName: + description: Required + type: string + packageVersion: + description: Required + type: string + PackageVettingRequirement: + title: PackageVettingRequirement + description: Defines a package-name for which the commonly vetted package with + the highest version must be found. + type: object + required: + - packageName + properties: + parties: + description: |- + The parties whose participants' vetting state should be considered when resolving the preferred package. + Required + type: array + items: + type: string + packageName: + description: |- + The package-name for which the preferred package should be resolved. + Required + type: string + ParticipantAdmin: + title: ParticipantAdmin + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAdmin1' + ParticipantAdmin1: + title: ParticipantAdmin + type: object + ParticipantAuthorizationAdded: + title: ParticipantAuthorizationAdded + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationAdded1' + ParticipantAuthorizationAdded1: + title: ParticipantAuthorizationAdded + type: object + required: + - partyId + - participantId + - participantPermission + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + participantPermission: + description: Required + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + ParticipantAuthorizationChanged: + title: ParticipantAuthorizationChanged + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationChanged1' + ParticipantAuthorizationChanged1: + title: ParticipantAuthorizationChanged + type: object + required: + - partyId + - participantId + - participantPermission + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + participantPermission: + description: Required + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + ParticipantAuthorizationRevoked: + title: ParticipantAuthorizationRevoked + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationRevoked1' + ParticipantAuthorizationRevoked1: + title: ParticipantAuthorizationRevoked + type: object + required: + - partyId + - participantId + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + ParticipantAuthorizationTopologyFormat: + title: ParticipantAuthorizationTopologyFormat + description: A format specifying which participant authorization topology transactions + to include and how to render them. + type: object + properties: + parties: + description: |- + List of parties for which the topology transactions should be sent. + Empty means: for all parties. + type: array + items: + type: string + PartyDetails: + title: PartyDetails + type: object + required: + - party + - isLocal + - identityProviderId + properties: + party: + description: |- + The stable unique identifier of a Daml party. + Must be a valid PartyIdString (as described in ``value.proto``). + Required + type: string + isLocal: + description: |- + true if party is hosted by the participant and the party shares the same identity provider as the user issuing the request. + Optional + type: boolean + localMetadata: + $ref: '#/components/schemas/ObjectMeta' + description: |- + Participant-local metadata of this party. + Optional, + Modifiable + identityProviderId: + description: |- + The id of the ``Identity Provider`` + Optional, if not set, there could be 3 options: + + 1. the party is managed by the default identity provider. + 2. party is not hosted by the participant. + 3. party is hosted by the participant, but is outside of the user's identity provider. + type: string + PartyManagementFeature: + title: PartyManagementFeature + type: object + required: + - maxPartiesPageSize + properties: + maxPartiesPageSize: + description: The maximum number of parties the server can return in a single + response (page). + type: integer + format: int32 + PartySignatures: + title: PartySignatures + description: Additional signatures provided by the submitting parties + type: object + properties: + signatures: + description: |- + Additional signatures provided by all individual parties + Required + type: array + items: + $ref: '#/components/schemas/SinglePartySignatures' + PrefetchContractKey: + title: PrefetchContractKey + description: Preload contracts + type: object + required: + - contractKey + properties: + templateId: + description: |- + The template of contract the client wants to prefetch. + Both package-name and package-id reference identifier formats for the template-id are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + contractKey: + description: |- + The key of the contract the client wants to prefetch. + Required + Prior: + title: Prior + type: object + required: + - value + properties: + value: + type: integer + format: int32 + PriorTopologySerial: + title: PriorTopologySerial + description: |- + The serial of last ``VettedPackages`` topology transaction on a given + participant and synchronizer. + type: object + required: + - serial + properties: + serial: + $ref: '#/components/schemas/Serial' + ProtoAny: + title: ProtoAny + type: object + required: + - typeUrl + - value + - unknownFields + properties: + typeUrl: + type: string + value: + type: string + unknownFields: + $ref: '#/components/schemas/UnknownFieldSet' + valueDecoded: + type: string + Reassignment: + title: Reassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsReassignment' + Reassignment1: + title: Reassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsReassignment' + ReassignmentCommand: + title: ReassignmentCommand + type: object + required: + - command + properties: + command: + $ref: '#/components/schemas/Command1' + ReassignmentCommands: + title: ReassignmentCommands + type: object + required: + - workflowId + - userId + - commandId + - submitter + - submissionId + properties: + workflowId: + description: |- + Identifier of the on-ledger workflow that this command is a part of. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + userId: + description: |- + Uniquely identifies the participant user that issued the command. + Must be a valid UserIdString (as described in ``value.proto``). + Required unless authentication is used with a user token. + In that case, the token's user-id will be used for the request's user_id. + type: string + commandId: + description: |- + Uniquely identifies the command. + The triple (user_id, submitter, command_id) constitutes the change ID for the intended ledger change. + The change ID can be used for matching the intended ledger changes with all their completions. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + submitter: + description: |- + Party on whose behalf the command should be executed. + If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + to act on behalf of the given party. + Must be a valid PartyIdString (as described in ``value.proto``). + Required + type: string + submissionId: + description: |- + A unique identifier to distinguish completions for different submissions with the same change ID. + Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + with the same change ID. + Must be a valid LedgerString (as described in ``value.proto``). + + If omitted, the participant or the committer may set a value of their choice. + Optional + type: string + commands: + description: Individual elements of this reassignment. Must be non-empty. + type: array + items: + $ref: '#/components/schemas/ReassignmentCommand' + RevokeUserRightsRequest: + title: RevokeUserRightsRequest + description: |- + Remove the rights from the set of rights granted to the user. + + Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id)`` + type: object + required: + - userId + - identityProviderId + properties: + userId: + description: |- + The user from whom to revoke rights. + Required + type: string + rights: + description: |- + The rights to revoke. + Optional + type: array + items: + $ref: '#/components/schemas/Right' + identityProviderId: + description: |- + The id of the ``Identity Provider`` + Optional, if not set, assume the user is managed by the default identity provider. + type: string + RevokeUserRightsResponse: + title: RevokeUserRightsResponse + type: object + properties: + newlyRevokedRights: + description: The rights that were actually revoked by the request. + type: array + items: + $ref: '#/components/schemas/Right' + Right: + title: Right + description: A right granted to a user. + type: object + required: + - kind + properties: + kind: + $ref: '#/components/schemas/Kind' + Serial: + title: Serial + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty6' + - type: object + required: + - NoPrior + properties: + NoPrior: + $ref: '#/components/schemas/NoPrior' + - type: object + required: + - Prior + properties: + Prior: + $ref: '#/components/schemas/Prior' + Signature: + title: Signature + type: object + required: + - format + - signature + - signedBy + - signingAlgorithmSpec + properties: + format: + description: '' + type: string + signature: + description: '' + type: string + signedBy: + description: The fingerprint/id of the keypair used to create this signature + and needed to verify. + type: string + signingAlgorithmSpec: + description: The signing algorithm specification used to produce this signature + type: string + SignedTransaction: + title: SignedTransaction + type: object + required: + - transaction + properties: + transaction: + type: string + signatures: + type: array + items: + $ref: '#/components/schemas/Signature' + SigningPublicKey: + title: SigningPublicKey + type: object + required: + - format + - keyData + - keySpec + properties: + format: + description: The serialization format of the public key + example: CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO + type: string + keyData: + description: Serialized public key in the format specified above + type: string + keySpec: + description: The key specification + example: SIGNING_KEY_SPEC_EC_CURVE25519 + type: string + SinglePartySignatures: + title: SinglePartySignatures + description: Signatures provided by a single party + type: object + required: + - party + properties: + party: + description: |- + Submitting party + Required + type: string + signatures: + description: |- + Signatures + Required + type: array + items: + $ref: '#/components/schemas/Signature' + SubmitAndWaitForReassignmentRequest: + title: SubmitAndWaitForReassignmentRequest + description: This reassignment is executed as a single atomic update. + type: object + properties: + reassignmentCommands: + $ref: '#/components/schemas/ReassignmentCommands' + description: |- + The reassignment commands to be submitted. + Required + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: |- + Optional + If no event_format provided, the result will contain no events. + The events in the result, will take shape TRANSACTION_SHAPE_ACS_DELTA. + SubmitAndWaitResponse: + title: SubmitAndWaitResponse + type: object + required: + - updateId + - completionOffset + properties: + updateId: + description: |- + The id of the transaction that resulted from the submitted command. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + completionOffset: + description: |- + The details of the offset field are described in ``community/ledger-api/README.md``. + Required + type: integer + format: int64 + SubmitReassignmentRequest: + title: SubmitReassignmentRequest + type: object + properties: + reassignmentCommands: + $ref: '#/components/schemas/ReassignmentCommands' + description: |- + The reassignment command to be submitted. + Required + SubmitReassignmentResponse: + title: SubmitReassignmentResponse + type: object + SubmitResponse: + title: SubmitResponse + type: object + SynchronizerTime: + title: SynchronizerTime + type: object + required: + - synchronizerId + properties: + synchronizerId: + description: |- + The id of the synchronizer. + Required + type: string + recordTime: + description: |- + All commands with a maximum record time below this value MUST be considered lost if their completion has not arrived before this checkpoint. + Required + type: string + TemplateFilter: + title: TemplateFilter + description: This filter matches contracts of a specific template. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/TemplateFilter1' + TemplateFilter1: + title: TemplateFilter + description: This filter matches contracts of a specific template. + type: object + required: + - includeCreatedEventBlob + properties: + templateId: + description: |- + A template for which the payload should be included in the response. + The ``template_id`` needs to be valid: corresponding template should be defined in + one of the available packages at the time of the query. + Both package-name and package-id reference formats for the identifier are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract event payload in your API client + for submitting it as a disclosed contract with future commands. + Optional + type: boolean + Time: + title: Time + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty9' + - type: object + required: + - MinLedgerTimeAbs + properties: + MinLedgerTimeAbs: + $ref: '#/components/schemas/MinLedgerTimeAbs' + - type: object + required: + - MinLedgerTimeRel + properties: + MinLedgerTimeRel: + $ref: '#/components/schemas/MinLedgerTimeRel' + TopologyEvent: + title: TopologyEvent + type: object + required: + - event + properties: + event: + $ref: '#/components/schemas/TopologyEventEvent' + TopologyEventEvent: + title: TopologyEventEvent + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty7' + - type: object + required: + - ParticipantAuthorizationAdded + properties: + ParticipantAuthorizationAdded: + $ref: '#/components/schemas/ParticipantAuthorizationAdded' + - type: object + required: + - ParticipantAuthorizationChanged + properties: + ParticipantAuthorizationChanged: + $ref: '#/components/schemas/ParticipantAuthorizationChanged' + - type: object + required: + - ParticipantAuthorizationRevoked + properties: + ParticipantAuthorizationRevoked: + $ref: '#/components/schemas/ParticipantAuthorizationRevoked' + TopologyFormat: + title: TopologyFormat + description: A format specifying which topology transactions to include and + how to render them. + type: object + properties: + includeParticipantAuthorizationEvents: + $ref: '#/components/schemas/ParticipantAuthorizationTopologyFormat' + description: |- + Include participant authorization topology events in streams. + Optional, if unset no participant authorization topology events are emitted in the stream. + TopologyStateFilter: + title: TopologyStateFilter + description: |- + Filter the vetted packages by the participant and synchronizer that they are + hosted on. + + Empty fields are ignored, such that a ``TopologyStateFilter`` without + participant_ids and without synchronizer_ids matches a vetted package hosted + on any participant and synchronizer. + + Non-empty fields specify candidate values of which at least one must match. + If both fields are set then at least one candidate value must match from each + field. + type: object + properties: + participantIds: + description: |- + If this list is non-empty, only vetted packages hosted on participants + listed in this field match the filter. + Query the current Ledger API's participant's ID via the public + ``GetParticipantId`` command in ``PartyManagementService``. + type: array + items: + type: string + synchronizerIds: + description: |- + If this list is non-empty, only vetted packages from the topology state of + the synchronizers in this list match the filter. + type: array + items: + type: string + TopologyTransaction: + title: TopologyTransaction + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsTopologyTransaction' + TraceContext: + title: TraceContext + type: object + properties: + traceparent: + description: https://www.w3.org/TR/trace-context/ + type: string + tracestate: + description: '' + type: string + Transaction: + title: Transaction + description: Filtered view of an on-ledger transaction's create and archive + events. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsTransaction' + TransactionFilter: + title: TransactionFilter + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Used both for filtering create and archive events as well as for filtering transaction trees. + type: object + required: + - filtersByParty + properties: + filtersByParty: + $ref: '#/components/schemas/Map_Filters' + description: |- + Each key must be a valid PartyIdString (as described in ``value.proto``). + The interpretation of the filter depends on the transaction-shape being filtered: + + 1. For **transaction trees** (used in GetUpdateTreesResponse for backwards compatibility) all party keys used as + wildcard filters, and all subtrees whose root has one of the listed parties as an informee are returned. + If there are ``CumulativeFilter``s, those will control returned ``CreatedEvent`` fields where applicable, but will + not be used for template/interface filtering. + 2. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + the listed parties and match the per-party filter. + 3. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + stakeholders include at least one of the listed parties and match the per-party filter. + filtersForAnyParty: + $ref: '#/components/schemas/Filters' + description: |- + Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same + with the per-party filter as described above. + TransactionFormat: + title: TransactionFormat + description: |- + A format that specifies what events to include in Daml transactions + and what data to compute and include for them. + type: object + required: + - transactionShape + properties: + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: Required + transactionShape: + description: |- + What transaction shape to use for interpreting the filters of the event format. + Required + type: string + enum: + - TRANSACTION_SHAPE_UNSPECIFIED + - TRANSACTION_SHAPE_ACS_DELTA + - TRANSACTION_SHAPE_LEDGER_EFFECTS + TransactionTree: + title: TransactionTree + description: |- + 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' + TreeEvent: + title: TreeEvent + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Each tree event message type below contains a ``witness_parties`` field which + indicates the subset of the requested parties that can see the event + in question. + + Note that transaction trees might contain events with + _no_ witness parties, which were included simply because they were + children of events which have witnesses. + oneOf: + - type: object + required: + - CreatedTreeEvent + properties: + CreatedTreeEvent: + $ref: '#/components/schemas/CreatedTreeEvent' + - type: object + required: + - ExercisedTreeEvent + properties: + ExercisedTreeEvent: + $ref: '#/components/schemas/ExercisedTreeEvent' + Tuple2_String_String: + title: Tuple2_String_String + type: array + maxItems: 2 + minItems: 2 + items: + type: string + UnassignCommand: + title: UnassignCommand + description: Unassign a contract + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/UnassignCommand1' + UnassignCommand1: + title: UnassignCommand + description: Unassign a contract + type: object + required: + - contractId + - source + - target + properties: + contractId: + description: |- + The ID of the contract the client wants to unassign. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + source: + description: |- + The ID of the source synchronizer + Must be a valid synchronizer id + Required + type: string + target: + description: |- + The ID of the target synchronizer + Must be a valid synchronizer id + Required + type: string + UnassignedEvent: + title: UnassignedEvent + description: Records that a contract has been unassigned, and it becomes unusable + on the source synchronizer + type: object + required: + - reassignmentId + - contractId + - source + - target + - submitter + - reassignmentCounter + - packageName + - offset + - nodeId + properties: + reassignmentId: + description: |- + The ID of the unassignment. This needs to be used as an input for a assign ReassignmentCommand. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + contractId: + description: |- + The ID of the reassigned contract. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + templateId: + description: |- + The template of the reassigned contract. + The identifier uses the package-id reference format. + + Required + type: string + source: + description: |- + The ID of the source synchronizer + Must be a valid synchronizer id + Required + type: string + target: + description: |- + The ID of the target synchronizer + Must be a valid synchronizer id + Required + type: string + submitter: + description: |- + Party on whose behalf the unassign command was executed. + Empty if the unassignment happened offline via the repair service. + Must be a valid PartyIdString (as described in ``value.proto``). + Optional + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + Required + type: integer + format: int64 + assignmentExclusivity: + description: |- + Assignment exclusivity + Before this time (measured on the target synchronizer), only the submitter of the unassignment can initiate the assignment + Defined for reassigning participants. + Optional + type: string + witnessParties: + description: |- + The parties that are notified of this event. + Required + type: array + items: + type: string + packageName: + description: |- + The package name of the contract. + Required + type: string + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Reassignments can thus NOT be assumed to have the same offsets on different participant nodes. + Required, it is a valid absolute offset (positive integer) + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of reassignments. + Required, must be valid node ID (non-negative integer) + type: integer + format: int32 + UnknownFieldSet: + title: UnknownFieldSet + type: object + required: + - fields + properties: + fields: + $ref: '#/components/schemas/Map_Int_Field' + Unvet: + title: Unvet + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Unvet1' + Unvet1: + title: Unvet + type: object + properties: + packages: + type: array + items: + $ref: '#/components/schemas/VettedPackagesRef' + Update: + title: Update + oneOf: + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint2' + - type: object + required: + - Reassignment + properties: + Reassignment: + $ref: '#/components/schemas/Reassignment' + - type: object + required: + - TopologyTransaction + properties: + TopologyTransaction: + $ref: '#/components/schemas/TopologyTransaction' + - type: object + required: + - Transaction + properties: + Transaction: + $ref: '#/components/schemas/Transaction' + Update1: + title: Update + oneOf: + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint3' + - type: object + required: + - Reassignment + properties: + Reassignment: + $ref: '#/components/schemas/Reassignment1' + - type: object + required: + - TransactionTree + properties: + TransactionTree: + $ref: '#/components/schemas/TransactionTree' + UpdateFormat: + title: UpdateFormat + description: A format specifying what updates to include and how to render them. + type: object + properties: + includeTransactions: + $ref: '#/components/schemas/TransactionFormat' + description: |- + Include Daml transactions in streams. + Optional, if unset, no transactions are emitted in the stream. + includeReassignments: + $ref: '#/components/schemas/EventFormat' + description: |- + Include (un)assignments in the stream. + The events in the result take the shape TRANSACTION_SHAPE_ACS_DELTA. + Optional, if unset, no (un)assignments are emitted in the stream. + includeTopologyEvents: + $ref: '#/components/schemas/TopologyFormat' + description: |- + Include topology events in streams. + Optional, if unset no topology events are emitted in the stream. + UpdateIdentityProviderConfigRequest: + title: UpdateIdentityProviderConfigRequest + type: object + properties: + identityProviderConfig: + $ref: '#/components/schemas/IdentityProviderConfig' + description: |- + The identity provider config to update. + Required, + Modifiable + updateMask: + $ref: '#/components/schemas/FieldMask' + description: |- + An update mask specifies how and which properties of the ``IdentityProviderConfig`` message are to be updated. + An update mask consists of a set of update paths. + A valid update path points to a field or a subfield relative to the ``IdentityProviderConfig`` message. + A valid update mask must: + + 1. contain at least one update path, + 2. contain only valid update paths. + + Fields that can be updated are marked as ``Modifiable``. + For additional information see the documentation for standard protobuf3's ``google.protobuf.FieldMask``. + Required + UpdateIdentityProviderConfigResponse: + title: UpdateIdentityProviderConfigResponse + type: object + properties: + identityProviderConfig: + $ref: '#/components/schemas/IdentityProviderConfig' + description: Updated identity provider config + UpdatePartyDetailsRequest: + title: UpdatePartyDetailsRequest + description: 'Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(party_details.identity_provider_id)``' + type: object + properties: + partyDetails: + $ref: '#/components/schemas/PartyDetails' + description: |- + Party to be updated + Required, + Modifiable + updateMask: + $ref: '#/components/schemas/FieldMask' + description: |- + An update mask specifies how and which properties of the ``PartyDetails`` message are to be updated. + An update mask consists of a set of update paths. + A valid update path points to a field or a subfield relative to the ``PartyDetails`` message. + A valid update mask must: + + 1. contain at least one update path, + 2. contain only valid update paths. + + Fields that can be updated are marked as ``Modifiable``. + An update path can also point to non-``Modifiable`` fields such as 'party' and 'local_metadata.resource_version' + because they are used: + + 1. to identify the party details resource subject to the update, + 2. for concurrent change control. + + An update path can also point to non-``Modifiable`` fields such as 'is_local' + as long as the values provided in the update request match the server values. + Examples of update paths: 'local_metadata.annotations', 'local_metadata'. + For additional information see the documentation for standard protobuf3's ``google.protobuf.FieldMask``. + For similar Ledger API see ``com.daml.ledger.api.v2.admin.UpdateUserRequest``. + Required + UpdatePartyDetailsResponse: + title: UpdatePartyDetailsResponse + type: object + properties: + partyDetails: + $ref: '#/components/schemas/PartyDetails' + description: Updated party details + UpdateUserIdentityProviderIdRequest: + title: UpdateUserIdentityProviderIdRequest + description: 'Required authorization: ``HasRight(ParticipantAdmin)``' + type: object + required: + - userId + - sourceIdentityProviderId + - targetIdentityProviderId + properties: + userId: + description: User to update + type: string + sourceIdentityProviderId: + description: Current identity provider ID of the user + type: string + targetIdentityProviderId: + description: Target identity provider ID of the user + type: string + UpdateUserIdentityProviderIdResponse: + title: UpdateUserIdentityProviderIdResponse + type: object + UpdateUserRequest: + title: UpdateUserRequest + description: 'Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(user.identity_provider_id)``' + type: object + properties: + user: + $ref: '#/components/schemas/User' + description: |- + The user to update. + Required, + Modifiable + updateMask: + $ref: '#/components/schemas/FieldMask' + description: |- + An update mask specifies how and which properties of the ``User`` message are to be updated. + An update mask consists of a set of update paths. + A valid update path points to a field or a subfield relative to the ``User`` message. + A valid update mask must: + + 1. contain at least one update path, + 2. contain only valid update paths. + + Fields that can be updated are marked as ``Modifiable``. + An update path can also point to a non-``Modifiable`` fields such as 'id' and 'metadata.resource_version' + because they are used: + + 1. to identify the user resource subject to the update, + 2. for concurrent change control. + + Examples of valid update paths: 'primary_party', 'metadata', 'metadata.annotations'. + For additional information see the documentation for standard protobuf3's ``google.protobuf.FieldMask``. + For similar Ledger API see ``com.daml.ledger.api.v2.admin.UpdatePartyDetailsRequest``. + Required + UpdateUserResponse: + title: UpdateUserResponse + type: object + properties: + user: + $ref: '#/components/schemas/User' + description: Updated user + UpdateVettedPackagesRequest: + title: UpdateVettedPackagesRequest + type: object + required: + - dryRun + - synchronizerId + properties: + changes: + description: |- + Changes to apply to the current vetting state of the participant on the + specified synchronizer. The changes are applied in order. + Any package not changed will keep their previous vetting state. + type: array + items: + $ref: '#/components/schemas/VettedPackagesChange' + dryRun: + description: |- + If dry_run is true, then the changes are only prepared, but not applied. If + a request would trigger an error when run (e.g. TOPOLOGY_DEPENDENCIES_NOT_VETTED), + it will also trigger an error when dry_run. + + Use this flag to preview a change before applying it. + type: boolean + synchronizerId: + description: |- + If set, the requested changes will take place on the specified + synchronizer. If synchronizer_id is unset and the participant is only + connected to a single synchronizer, that synchronizer will be used by + default. If synchronizer_id is unset and the participant is connected to + multiple synchronizers, the request will error out with + PACKAGE_SERVICE_CANNOT_AUTODETECT_SYNCHRONIZER. + + Optional + type: string + expectedTopologySerial: + $ref: '#/components/schemas/PriorTopologySerial' + description: |- + The serial of the last ``VettedPackages`` topology transaction of this + participant and on this synchronizer. + + Execution of the request fails if this is not correct. Use this to guard + against concurrent changes. + + If left unspecified, no validation is done against the last transaction's + serial. + + Optional + updateVettedPackagesForceFlags: + description: |- + Controls whether potentially unsafe vetting updates are allowed. + + Optional, defaults to FORCE_FLAG_UNSPECIFIED. + type: array + items: + type: string + enum: + - UPDATE_VETTED_PACKAGES_FORCE_FLAG_UNSPECIFIED + - UPDATE_VETTED_PACKAGES_FORCE_FLAG_ALLOW_VET_INCOMPATIBLE_UPGRADES + - UPDATE_VETTED_PACKAGES_FORCE_FLAG_ALLOW_UNVETTED_DEPENDENCIES + UpdateVettedPackagesResponse: + title: UpdateVettedPackagesResponse + type: object + properties: + pastVettedPackages: + $ref: '#/components/schemas/VettedPackages' + description: |- + All vetted packages on this participant and synchronizer, before the + specified changes. Empty if no vetting state existed beforehand. + newVettedPackages: + $ref: '#/components/schemas/VettedPackages' + description: All vetted packages on this participant and synchronizer, after + the specified changes. + UploadDarFileResponse: + title: UploadDarFileResponse + description: A message that is received when the upload operation succeeded. + type: object + User: + title: User + description: |2- + Users and rights + ///////////////// + Users are used to dynamically manage the rights given to Daml applications. + They are stored and managed per participant node. + type: object + required: + - id + - primaryParty + - isDeactivated + - identityProviderId + properties: + id: + description: |- + The user identifier, which must be a non-empty string of at most 128 + characters that are either alphanumeric ASCII characters or one of the symbols "@^$.!`-#+'~_|:". + Required + type: string + primaryParty: + description: |- + The primary party as which this user reads and acts by default on the ledger + *provided* it has the corresponding ``CanReadAs(primary_party)`` or + ``CanActAs(primary_party)`` rights. + Ledger API clients SHOULD set this field to a non-empty value for all users to + enable the users to act on the ledger using their own Daml party. + Users for participant administrators MAY have an associated primary party. + Optional, + Modifiable + type: string + isDeactivated: + description: |- + When set, then the user is denied all access to the Ledger API. + Otherwise, the user has access to the Ledger API as per the user's rights. + Optional, + Modifiable + type: boolean + metadata: + $ref: '#/components/schemas/ObjectMeta' + description: |- + The metadata of this user. + Note that the ``metadata.resource_version`` tracks changes to the properties described by the ``User`` message and not the user's rights. + Optional, + Modifiable + identityProviderId: + description: |- + The ID of the identity provider configured by ``Identity Provider Config`` + Optional, if not set, assume the user is managed by the default identity provider. + type: string + UserManagementFeature: + title: UserManagementFeature + type: object + required: + - supported + - maxRightsPerUser + - maxUsersPageSize + properties: + supported: + description: Whether the Ledger API server provides the user management + service. + type: boolean + maxRightsPerUser: + description: |- + The maximum number of rights that can be assigned to a single user. + Servers MUST support at least 100 rights per user. + A value of 0 means that the server enforces no rights per user limit. + type: integer + format: int32 + maxUsersPageSize: + description: |- + The maximum number of users the server can return in a single response (page). + Servers MUST support at least a 100 users per page. + A value of 0 means that the server enforces no page size limit. + type: integer + format: int32 + Vet: + title: Vet + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Vet1' + Vet1: + title: Vet + type: object + properties: + packages: + type: array + items: + $ref: '#/components/schemas/VettedPackagesRef' + newValidFromInclusive: + type: string + newValidUntilExclusive: + type: string + VettedPackage: + title: VettedPackage + description: |- + A package that is vetting on a given participant and synchronizer, + modelled after ``VettedPackage`` in `topology.proto `_, + enriched with the package name and version. + type: object + required: + - packageId + - packageName + - packageVersion + properties: + packageId: + description: Package ID of this package. Always present. + type: string + validFromInclusive: + description: |- + The time from which this package is vetted. Empty if vetting time has no + lower bound. + type: string + validUntilExclusive: + description: |- + The time until which this package is vetted. Empty if vetting time has no + upper bound. + type: string + packageName: + description: |- + Name of this package. + Only available if the package has been uploaded to the current participant. + If unavailable, is empty string. + type: string + packageVersion: + description: |- + Version of this package. + Only available if the package has been uploaded to the current participant. + If unavailable, is empty string. + type: string + VettedPackages: + title: VettedPackages + description: |- + The list of packages vetted on a given participant and synchronizer, modelled + after ``VettedPackages`` in `topology.proto `_. + The list only contains packages that matched a filter in the query that + originated it. + type: object + required: + - participantId + - synchronizerId + - topologySerial + properties: + packages: + description: |- + Sorted by package_name and package_version where known, and package_id as a + last resort. + type: array + items: + $ref: '#/components/schemas/VettedPackage' + participantId: + description: Participant on which these packages are vetted. Always present. + type: string + synchronizerId: + description: Synchronizer on which these packages are vetted. Always present. + type: string + topologySerial: + description: |- + Serial of last ``VettedPackages`` topology transaction of this participant + and on this synchronizer. Always present. + type: integer + format: int32 + VettedPackagesChange: + title: VettedPackagesChange + description: A change to the set of vetted packages. + type: object + required: + - operation + properties: + operation: + $ref: '#/components/schemas/Operation' + VettedPackagesRef: + title: VettedPackagesRef + description: |- + A reference to identify one or more packages. + + A reference matches a package if its ``package_id`` matches the package's ID, + its ``package_name`` matches the package's name, and its ``package_version`` + matches the package's version. If an attribute in the reference is left + unspecified (i.e. as an empty string), that attribute is treated as a + wildcard. At a minimum, ``package_id`` or the ``package_name`` must be + specified. + + If a reference does not match any package, the reference is considered + unresolved and the entire update request is rejected. + type: object + required: + - packageId + - packageName + - packageVersion + properties: + packageId: + description: |- + Package's package id must be the same as this field. + Optional + type: string + packageName: + description: |- + Package's name must be the same as this field. + Optional + type: string + packageVersion: + description: |- + Package's version must be the same as this field. + Optional + type: string + WildcardFilter: + title: WildcardFilter + description: This filter matches all templates. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/WildcardFilter1' + WildcardFilter1: + title: WildcardFilter + description: This filter matches all templates. + type: object + required: + - includeCreatedEventBlob + properties: + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract create event payload in your API client + for submitting it as a disclosed contract with future commands. + Optional + type: boolean + securitySchemes: + apiKeyAuth: + type: apiKey + description: Ledger API standard JWT token (websocket) + name: Sec-WebSocket-Protocol + in: header + httpAuth: + type: http + description: Ledger API standard JWT token + scheme: bearer diff --git a/api-specs/splice/0.5.8/README.md b/api-specs/splice/0.5.8/README.md new file mode 100644 index 000000000..9de52437e --- /dev/null +++ b/api-specs/splice/0.5.8/README.md @@ -0,0 +1,5 @@ +# OpenAPI + +These are the OpenAPI specification files for the Splice apps. + +Only the ones with the `external` tag should be considered publicly usable. diff --git a/api-specs/splice/0.5.8/allocation-instruction-v1.yaml b/api-specs/splice/0.5.8/allocation-instruction-v1.yaml new file mode 100644 index 000000000..8250300c0 --- /dev/null +++ b/api-specs/splice/0.5.8/allocation-instruction-v1.yaml @@ -0,0 +1,147 @@ +openapi: 3.0.0 +info: + title: allocation instruction off-ledger API + description: | + Implemented by token registries for using and managing + allocation instructions by wallets. + version: 1.0.0 +paths: + /registry/allocation-instruction/v1/allocation-factory: + post: + operationId: getAllocationFactory + description: | + Get the factory and choice context for creating allocations using the `AllocationFactory_Allocate` choice. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetFactoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/FactoryWithChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetFactoryRequest: + type: object + properties: + choiceArguments: + type: object + description: | + The arguments that are intended to be passed to the choice provided by the factory. + To avoid repeating the Daml type definitions, they are specified as JSON objects. + However the concrete format is given by how the choice arguments are encoded using the Daml JSON API + (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). + + The choice arguments are provided so that the registry can also provide choice-argument + specific contracts, e.g., the configuration for a specific instrument-id. + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + required: + - choiceArguments + FactoryWithChoiceContext: + description: | + A factory contract together with the choice context required to exercise the choice + provided by the factory. Typically used to implement the generic initiation of on-ledger workflows + via a Daml interface. + + Clients SHOULD avoid reusing the same `FactoryWithChoiceContext` for exercising multiple choices, + as the choice context MAY be specific to the choice being exercised. + type: object + properties: + factoryId: + description: The contract ID of the contract implementing the factory interface. + type: string + choiceContext: + $ref: '#/components/schemas/ChoiceContext' + required: + - factoryId + - choiceContext + ChoiceContext: + description: | + The context required to exercise a choice on a contract via an interface. + Used to retrieve additional reference date that is passed in via disclosed contracts, + which are in turn referred to via their contract ID in the `choiceContextData`. + type: object + properties: + choiceContextData: + description: The additional data to use when exercising the choice. + type: object + disclosedContracts: + description: | + The contracts that are required to be disclosed to the participant node for exercising + the choice. + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + required: + - choiceContextData + - disclosedContracts + DisclosedContract: + type: object + properties: + templateId: + type: string + contractId: + type: string + createdEventBlob: + type: string + synchronizerId: + description: | + The synchronizer to which the contract is currently assigned. + If the contract is in the process of being reassigned, then a "409" response is returned. + type: string + debugPackageName: + description: | + The name of the Daml package that was used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + debugPayload: + description: | + The contract arguments that were used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: object + debugCreatedAt: + description: | + The ledger effective time at which the contract was created. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + format: date-time + required: + - templateId + - contractId + - createdEventBlob + - synchronizerId + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string diff --git a/api-specs/splice/0.5.8/allocation-v1.yaml b/api-specs/splice/0.5.8/allocation-v1.yaml new file mode 100644 index 000000000..263759e71 --- /dev/null +++ b/api-specs/splice/0.5.8/allocation-v1.yaml @@ -0,0 +1,191 @@ +openapi: 3.0.0 +info: + title: allocation off-ledger API + description: | + Implemented by token registries for the purpose of the use and management of + allocations by wallets and apps orchestrating the settlement of asset transfers. + version: 1.1.0 +paths: + /registry/allocations/v1/{allocationId}/choice-contexts/execute-transfer: + post: + operationId: getAllocationTransferContext + description: | + Get the choice context to execute a transfer on an allocation. + parameters: + - name: allocationId + description: The contract ID of the allocation whose transfer the caller wants to execute. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /registry/allocations/v1/{allocationId}/choice-contexts/withdraw: + post: + operationId: getAllocationWithdrawContext + description: | + Get the choice context to withdraw an allocation. + parameters: + - name: allocationId + description: The contract ID of the allocation to withdraw. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /registry/allocations/v1/{allocationId}/choice-contexts/cancel: + post: + operationId: getAllocationCancelContext + description: | + Get the choice context to cancel an allocation. + parameters: + - name: allocationId + description: The contract ID of the allocation to cancel. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetChoiceContextRequest: + description: | + A request to get the context for executing a choice on a contract. + type: object + properties: + meta: + description: | + Metadata that will be passed to the choice, and should be incorporated + into the choice context. Provided for extensibility. + type: object + additionalProperties: + type: string + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + ChoiceContext: + description: | + The context required to exercise a choice on a contract via an interface. + Used to retrieve additional reference date that is passed in via disclosed contracts, + which are in turn referred to via their contract ID in the `choiceContextData`. + type: object + properties: + choiceContextData: + description: The additional data to use when exercising the choice. + type: object + disclosedContracts: + description: | + The contracts that are required to be disclosed to the participant node for exercising + the choice. + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + required: + - choiceContextData + - disclosedContracts + DisclosedContract: + type: object + properties: + templateId: + type: string + contractId: + type: string + createdEventBlob: + type: string + synchronizerId: + description: | + The synchronizer to which the contract is currently assigned. + If the contract is in the process of being reassigned, then a "409" response is returned. + type: string + debugPackageName: + description: | + The name of the Daml package that was used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + debugPayload: + description: | + The contract arguments that were used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: object + debugCreatedAt: + description: | + The ledger effective time at which the contract was created. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + format: date-time + required: + - templateId + - contractId + - createdEventBlob + - synchronizerId + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string diff --git a/api-specs/splice/0.5.8/ans-external.yaml b/api-specs/splice/0.5.8/ans-external.yaml new file mode 100644 index 000000000..0dcaef9be --- /dev/null +++ b/api-specs/splice/0.5.8/ans-external.yaml @@ -0,0 +1,187 @@ +openapi: 3.0.0 +info: + title: ANS API + version: 0.0.1 +servers: + - url: https://example.com/api/validator +tags: + - name: ans +paths: + /v0/entry/create: + post: + description: | + Requests the creation of a new ANS entry. + ANS entries need to be paid and renewed via subscription payments. + + Upon requesting the creation of the ANS entry, a subscription request is created. + The user may accept the subscription request via their wallet by offering the initial payment. + Once the subscription request is accepted, the DSO automation burns the payment and creates the ANS entry. + tags: + - ans + x-jvm-package: external.ans + operationId: createAnsEntry + security: + - userAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAnsEntryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAnsEntryResponse' + '400': + description: | + Invalid request, check the error response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/entry/all: + get: + description: | + Lists all ANS entries owned by the user. + Expired entries are not included in the response, even if the corresponding contracts are still active on the ledger. + tags: + - ans + x-jvm-package: external.ans + operationId: listAnsEntries + security: + - userAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAnsEntriesResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' +components: + securitySchemes: + userAuth: + description: | + JWT token as described in [spliceAppBearerAuth](../../../../common/src/main/openapi/common-external.yaml#/components/securitySchemes/spliceAppBearerAuth). + The subject of the token must be ledger API user of the user affected by the endpoint. + type: http + scheme: bearer + bearerFormat: JWT + schemas: + CreateAnsEntryRequest: + type: object + required: + - name + - url + - description + properties: + name: + type: string + description: | + The name of the ANS entry. + It must end with `.unverified.` where `` is the ANS acronym chosen by the DSO. + url: + type: string + description: | + A valid URL or an empty string. + Use this to link to a website, such as the homepage of an application + provided by the owner of this entry. + Must not be longer than 255 characters. + description: + type: string + description: | + A human readable description of the ANS entry. + May be empty. + Must not be longer than 140 characters. + CreateAnsEntryResponse: + description: | + The response contains the contract IDs of the corresponding subscription request. + The user must accept the subscription request via their wallet to create the ANS entry. + type: object + required: + - name + - url + - description + - entryContextCid + - subscriptionRequestCid + properties: + entryContextCid: + $ref: '#/components/schemas/ContractId' + subscriptionRequestCid: + $ref: '#/components/schemas/ContractId' + name: + type: string + description: | + The name of the ANS entry, as specified in the request. + url: + type: string + description: | + The URL of the ANS entry, as specified in the request. + description: + type: string + description: | + The description of the ANS entry, as specified in the request. + ListAnsEntriesResponse: + type: object + required: + - entries + properties: + entries: + type: array + items: + $ref: '#/components/schemas/AnsEntryResponse' + AnsEntryResponse: + type: object + required: + - contractId + - name + - amount + - unit + - expiresAt + - paymentInterval + - paymentDuration + properties: + contractId: + $ref: '#/components/schemas/ContractId' + name: + type: string + amount: + type: string + unit: + type: string + expiresAt: + type: string + paymentInterval: + type: string + paymentDuration: + type: string + ContractId: + type: string + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + responses: + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.5.8/common-external.yaml b/api-specs/splice/0.5.8/common-external.yaml new file mode 100644 index 000000000..f3fc6df97 --- /dev/null +++ b/api-specs/splice/0.5.8/common-external.yaml @@ -0,0 +1,223 @@ +openapi: 3.0.0 +info: + title: Common schemas for Splice API definitions + version: 0.0.1 +paths: + /status: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getHealthStatus + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + /version: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getVersion + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Version' + /readyz: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isReady + responses: + '200': + description: ok + '503': + description: service_unavailable + /livez: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isLive + responses: + '200': + description: ok + '503': + description: service_unavailable +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: not implemented + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + ContractId: + type: string + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + Status: + type: object + required: + - id + - uptime + - ports + - active + properties: + id: + type: string + uptime: + type: string + ports: + type: object + additionalProperties: + type: integer + format: int32 + extra: + type: string + format: binary + active: + type: boolean + NotInitialized: + type: object + required: + - active + properties: + active: + type: boolean + SuccessStatusResponse: + type: object + required: + - success + properties: + success: + $ref: '#/components/schemas/Status' + NotInitializedStatusResponse: + type: object + required: + - not_initialized + properties: + not_initialized: + $ref: '#/components/schemas/NotInitialized' + FailureStatusResponse: + type: object + required: + - failed + properties: + failed: + $ref: '#/components/schemas/ErrorResponse' + NodeStatus: + oneOf: + - $ref: '#/components/schemas/SuccessStatusResponse' + - $ref: '#/components/schemas/NotInitializedStatusResponse' + - $ref: '#/components/schemas/FailureStatusResponse' + Version: + type: object + required: + - version + - commit_ts + properties: + version: + type: string + commit_ts: + type: string + format: date-time + securitySchemes: + spliceAppBearerAuth: + description: | + HTTP bearer authentication with a JWT token of the form: + ``` + { + "sub": "ledger-api-user", + "aud": "audience-of-app" + } + ``` + The subject must be the ledger API user requests should be submitted at, e.g., + if you want to operate as the validator operator this is the ledger-api-user configured in your validator config. + + The audience must be the audience specified in the auth section of your app's configuration. + + The token must be signed with the algorithm and configuration specified in the auth section of your app's configuration. + type: http + scheme: bearer + bearerFormat: JWT diff --git a/api-specs/splice/0.5.8/common-internal.yaml b/api-specs/splice/0.5.8/common-internal.yaml new file mode 100644 index 000000000..95c8074ab --- /dev/null +++ b/api-specs/splice/0.5.8/common-internal.yaml @@ -0,0 +1,368 @@ +openapi: 3.0.0 +info: + title: Common schemas for Splice API definitions + version: 0.0.1 +paths: {} +components: + schemas: + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + AssignedContract: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + - domain_id + MaybeCachedContract: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + MaybeCachedContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + MaybeCachedContractMap: + type: object + additionalProperties: + $ref: '#/components/schemas/MaybeCachedContract' + MaybeCachedContractWithStateMap: + description: | + Always created with respect to an input set of contract IDs. If an input + contract ID is absent from the keys of this map, that contract should be + considered removed by the caller; if present, `contract` may be empty, + reflecting that the caller should already have the full contract data + for that contract ID. Contracts not present in the input set will have + full contract data. `domain_id` is always up-to-date; if undefined the + contract is currently unassigned to a synchronizer, i.e. "in-flight". + type: object + additionalProperties: + $ref: '#/components/schemas/MaybeCachedContractWithState' + NodeIdentitiesDump: + type: object + required: + - id + - keys + - authorizedStoreSnapshot + properties: + id: + type: string + keys: + type: array + items: + $ref: '#/components/schemas/NodeKey' + authorizedStoreSnapshot: + description: | + base64 encoded string of authorized store snapshot + type: string + version: + type: string + NodeKey: + oneOf: + - $ref: '#/components/schemas/KeyPair' + - $ref: '#/components/schemas/KmsKeyId' + KeyPair: + type: object + required: + - keyPair + properties: + keyPair: + type: string + name: + type: string + KmsKeyId: + type: object + required: + - type + - keyId + properties: + type: + type: string + enum: + - signing + - encryption + keyId: + type: string + name: + type: string + ParticipantUsersData: + type: object + required: + - identityProviders + - users + properties: + identityProviders: + type: array + items: + $ref: '#/components/schemas/ParticipantIdentityProvider' + users: + type: array + items: + $ref: '#/components/schemas/ParticipantUser' + ParticipantIdentityProvider: + type: object + required: + - id + - isDeactivated + - jwksUrl + - issuer + - audience + properties: + id: + type: string + isDeactivated: + type: boolean + default: false + jwksUrl: + type: string + issuer: + type: string + audience: + type: string + ParticipantUser: + type: object + required: + - id + - rights + - isDeactivated + - annotations + properties: + id: + type: string + primaryParty: + type: string + rights: + type: array + items: + $ref: '#/components/schemas/ParticipantUserRight' + isDeactivated: + type: boolean + default: false + annotations: + type: array + items: + $ref: '#/components/schemas/ParticipantUserAnnotation' + identityProviderId: + type: string + default: '' + ParticipantUserRight: + type: object + required: + - kind + properties: + kind: + type: string + enum: + - participantAdmin + - canActAs + - canReadAs + - canExecuteAs + - identityProviderAdmin + - canReadAsAnyParty + - canExecuteAsAnyParty + party: + type: string + ParticipantUserAnnotation: + type: object + required: + - key + - value + properties: + key: + type: string + value: + type: string + GetDsoInfoResponse: + type: object + required: + - sv_user + - sv_party_id + - dso_party_id + - voting_threshold + - latest_mining_round + - amulet_rules + - dso_rules + - sv_node_states + properties: + sv_user: + description: User ID representing the SV + type: string + sv_party_id: + description: Party representing the SV + type: string + dso_party_id: + description: | + Party representing the whole DSO; for Scan only, also returned by + `/v0/dso-party-id` + type: string + voting_threshold: + description: | + Threshold required to pass vote requests; also known as the + "governance threshold", it is always derived from the number of + `svs` in `dso_rules` + type: integer + latest_mining_round: + description: | + Contract of the Daml template `Splice.Round.OpenMiningRound`, the + one with the highest round number on the ledger that has been signed + by `dso_party_id`. The round may not be usable as it may not be + opened yet, in accordance with its `opensAt` template field + $ref: '#/components/schemas/ContractWithState' + amulet_rules: + description: | + Contract of the Daml template `Splice.AmuletRules.AmuletRules`, + including the full schedule of `AmuletConfig` changes approved by + the DSO. Callers should not assume that `initialValue` is up-to-date, + and should instead search `futureValues` for the latest configuration + valid as of now + $ref: '#/components/schemas/ContractWithState' + dso_rules: + description: | + Contract of the Daml template `Splice.DsoRules.DsoRules`, listing + the governance rules approved by the DSO governing this Splice network. + $ref: '#/components/schemas/ContractWithState' + sv_node_states: + description: | + For every one of `svs` listed in `dso_rules`, a contract of the Daml + template `Splice.DSO.SvState.SvNodeState`. This does not include + states for offboarded SVs, though they may still have an on-ledger + state contract + type: array + items: + $ref: '#/components/schemas/ContractWithState' + initial_round: + description: | + Initial round from which the network bootstraps + type: string + BatchListVotesByVoteRequestsRequest: + type: object + required: + - vote_request_contract_ids + properties: + vote_request_contract_ids: + description: Contract IDs of Daml template `Splice.DsoRules:VoteRequest`. + type: array + items: + type: string + ListVoteRequestByTrackingCidResponse: + type: object + required: + - vote_requests + properties: + vote_requests: + description: | + Contracts of Daml template `Splice.DsoRules:VoteRequest` that match + `vote_request_contract_ids` in the request. + type: array + items: + $ref: '#/components/schemas/Contract' + LookupDsoRulesVoteRequestResponse: + description: A contract of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_request + properties: + dso_rules_vote_request: + $ref: '#/components/schemas/Contract' + ListDsoRulesVoteRequestsResponse: + description: Contracts of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_requests + properties: + dso_rules_vote_requests: + type: array + items: + $ref: '#/components/schemas/Contract' + ListAmuletPriceVotesResponse: + description: Contracts of Daml template `Splice.DSO:AmuletPrice:AmuletPriceVote`. + type: object + required: + - amulet_price_votes + properties: + amulet_price_votes: + type: array + items: + $ref: '#/components/schemas/Contract' + ListVoteResultsRequest: + type: object + required: + - limit + properties: + actionName: + type: string + accepted: + type: boolean + requester: + type: string + effectiveFrom: + type: string + effectiveTo: + type: string + limit: + type: integer + ListDsoRulesVoteResultsResponse: + type: object + required: + - dso_rules_vote_results + properties: + dso_rules_vote_results: + type: array + items: + type: object + ListValidatorLicensesResponse: + type: object + required: + - validator_licenses + properties: + validator_licenses: + description: Contracts of Daml template `Splice.ValidatorLicense:ValidatorLicense`. + type: array + items: + $ref: '#/components/schemas/Contract' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as URL query parameter `after`. + If absent or `null`, there are no more pages. + FeatureSupportResponse: + type: object + required: + - no_holding_fees_on_transfers + properties: + no_holding_fees_on_transfers: + type: boolean + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at diff --git a/api-specs/splice/0.5.8/scan-proxy.yaml b/api-specs/splice/0.5.8/scan-proxy.yaml new file mode 100644 index 000000000..d5aa088d9 --- /dev/null +++ b/api-specs/splice/0.5.8/scan-proxy.yaml @@ -0,0 +1,716 @@ +openapi: 3.0.0 +info: + title: Validator API + version: 0.0.1 +servers: + - url: https://example.com/api/validator +tags: + - name: validator +paths: + /v0/scan-proxy/dso-party-id: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getDsoPartyId + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDsoPartyIdResponse' + /v0/scan-proxy/dso: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getDsoInfo + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDsoInfoResponse' + /v0/scan-proxy/featured-apps/{provider_party_id}: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupFeaturedAppRight + parameters: + - name: provider_party_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupFeaturedAppRightResponse' + /v0/scan-proxy/open-and-issuing-mining-rounds: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getOpenAndIssuingMiningRounds + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetOpenAndIssuingMiningRoundsProxyResponse' + /v0/scan-proxy/amulet-rules: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getAmuletRules + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAmuletRulesProxyResponse' + /v0/scan-proxy/ans-entries/by-party/{party}: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupAnsEntryByParty + parameters: + - name: party + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupEntryByPartyResponse' + '404': + $ref: '#/components/responses/404' + /v0/scan-proxy/ans-entries: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: listAnsEntries + parameters: + - name: name_prefix + in: query + schema: + type: string + - name: page_size + in: query + required: true + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListEntriesResponse' + /v0/scan-proxy/ans-entries/by-name/{name}: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupAnsEntryByName + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupEntryByNameResponse' + '404': + $ref: '#/components/responses/404' + /v0/scan-proxy/ans-rules: + post: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getAnsRules + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetAnsRulesRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAnsRulesResponse' + /v0/scan-proxy/transfer-preapprovals/by-party/{party}: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupTransferPreapprovalByParty + parameters: + - name: party + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferPreapprovalByPartyResponse' + '404': + $ref: '#/components/responses/404' + /v0/scan-proxy/transfer-command-counter/{party}: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupTransferCommandCounterByParty + parameters: + - name: party + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferCommandCounterByPartyResponse' + '404': + description: No TransferCommandCounter exists for this party. This means the nonce that should be used is 0. + $ref: '#/components/responses/404' + /v0/scan-proxy/transfer-command/status: + get: + description: Retrieve the status of all transfer commands of the given sender for the specified nonce. + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupTransferCommandStatus + parameters: + - name: sender + in: query + required: true + schema: + type: string + - name: nonce + in: query + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferCommandStatusResponse' + '404': + description: No TransferCommand exists with this contract id within the last 24h + $ref: '#/components/responses/404' + /v0/scan-proxy/holdings/summary: + post: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getHoldingsSummaryAt + description: | + Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' +components: + schemas: + GetOpenAndIssuingMiningRoundsProxyResponse: + type: object + required: + - open_mining_rounds + - issuing_mining_rounds + properties: + open_mining_rounds: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + issuing_mining_rounds: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + GetAmuletRulesProxyResponse: + type: object + required: + - amulet_rules + properties: + amulet_rules: + $ref: '#/components/schemas/ContractWithState' + GetDsoPartyIdResponse: + type: object + required: + - dso_party_id + properties: + dso_party_id: + type: string + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + GetDsoInfoResponse: + type: object + required: + - sv_user + - sv_party_id + - dso_party_id + - voting_threshold + - latest_mining_round + - amulet_rules + - dso_rules + - sv_node_states + properties: + sv_user: + description: User ID representing the SV + type: string + sv_party_id: + description: Party representing the SV + type: string + dso_party_id: + description: | + Party representing the whole DSO; for Scan only, also returned by + `/v0/dso-party-id` + type: string + voting_threshold: + description: | + Threshold required to pass vote requests; also known as the + "governance threshold", it is always derived from the number of + `svs` in `dso_rules` + type: integer + latest_mining_round: + description: | + Contract of the Daml template `Splice.Round.OpenMiningRound`, the + one with the highest round number on the ledger that has been signed + by `dso_party_id`. The round may not be usable as it may not be + opened yet, in accordance with its `opensAt` template field + $ref: '#/components/schemas/ContractWithState' + amulet_rules: + description: | + Contract of the Daml template `Splice.AmuletRules.AmuletRules`, + including the full schedule of `AmuletConfig` changes approved by + the DSO. Callers should not assume that `initialValue` is up-to-date, + and should instead search `futureValues` for the latest configuration + valid as of now + $ref: '#/components/schemas/ContractWithState' + dso_rules: + description: | + Contract of the Daml template `Splice.DsoRules.DsoRules`, listing + the governance rules approved by the DSO governing this Splice network. + $ref: '#/components/schemas/ContractWithState' + sv_node_states: + description: | + For every one of `svs` listed in `dso_rules`, a contract of the Daml + template `Splice.DSO.SvState.SvNodeState`. This does not include + states for offboarded SVs, though they may still have an on-ledger + state contract + type: array + items: + $ref: '#/components/schemas/ContractWithState' + initial_round: + description: | + Initial round from which the network bootstraps + type: string + LookupFeaturedAppRightResponse: + description: | + If defined, a contract of Daml template `Splice.Amulet.FeaturedAppRight`. + type: object + properties: + featured_app_right: + $ref: '#/components/schemas/Contract' + AnsEntry: + type: object + required: + - user + - name + - url + - description + properties: + contract_id: + description: | + If present, Daml contract ID of template `Splice.Ans:AnsEntry`. + If absent, this is a DSO-provided entry for either the DSO or an SV. + type: string + user: + description: Owner party ID of this ANS entry. + type: string + name: + description: The ANS entry name. + type: string + url: + description: Either empty, or an http/https URL supplied by the `user`. + type: string + description: + description: Arbitrary description text supplied by `user`; may be empty. + type: string + expires_at: + description: | + Time after which this ANS entry expires; if renewed, it will have a + new `contract_id` and `expires_at`. + If `null` or absent, does not expire; this is the case only for + special entries provided by the DSO. + type: string + format: date-time + LookupEntryByPartyResponse: + type: object + required: + - entry + properties: + entry: + $ref: '#/components/schemas/AnsEntry' + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + ListEntriesResponse: + type: object + required: + - entries + properties: + entries: + type: array + items: + $ref: '#/components/schemas/AnsEntry' + LookupEntryByNameResponse: + type: object + required: + - entry + properties: + entry: + $ref: '#/components/schemas/AnsEntry' + ContractId: + type: string + GetAnsRulesRequest: + type: object + properties: + cached_ans_rules_contract_id: + $ref: '#/components/schemas/ContractId' + cached_ans_rules_domain_id: + type: string + MaybeCachedContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + GetAnsRulesResponse: + description: | + A contract state update of Daml template `Splice.Ans.AnsRules`. + type: object + properties: + ans_rules_update: + $ref: '#/components/schemas/MaybeCachedContractWithState' + required: + - ans_rules_update + LookupTransferPreapprovalByPartyResponse: + description: A Daml contract of template `Splice.AmuletRules:TransferPreapproval`. + type: object + required: + - transfer_preapproval + properties: + transfer_preapproval: + $ref: '#/components/schemas/ContractWithState' + LookupTransferCommandCounterByPartyResponse: + description: A Daml contract of template `Splice.ExternalPartyAmuletRules:TransferCommandCounter`. + type: object + required: + - transfer_command_counter + properties: + transfer_command_counter: + $ref: '#/components/schemas/ContractWithState' + BaseLookupTransferCommandStatusResponse: + type: object + required: + - status + properties: + status: + type: string + description: | + The status of the transfer command. + created: + The transfer command has been created and is waiting for automation to complete it. + sent: + The transfer command has been completed and the transfer to the receiver has finished. + failed: + The transfer command has failed permanently and nothing has been transferred. Refer to + failure_reason for details. A new transfer command can be created. + TransferCommandCreatedResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + TransferCommandSentResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + TransferCommandFailedResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + - type: object + required: + - failure_kind + - reason + properties: + failure_kind: + type: string + description: | + The reason for the failure of the TransferCommand. + failed: + Completing the transfer failed, check the reason for details. + withdrawn: + The sender has withdrawn the TransferCommand before it could be completed. + expired: + The expiry time on the TransferCommand was reached before it could be completed. + enum: + - failed + - expired + - withdrawn + reason: + type: string + description: | + Human readable description of the failure + TransferCommandContractStatus: + type: object + oneOf: + - $ref: '#/components/schemas/TransferCommandCreatedResponse' + - $ref: '#/components/schemas/TransferCommandSentResponse' + - $ref: '#/components/schemas/TransferCommandFailedResponse' + discriminator: + propertyName: status + mapping: + created: '#/components/schemas/TransferCommandCreatedResponse' + sent: '#/components/schemas/TransferCommandSentResponse' + failed: '#/components/schemas/TransferCommandFailedResponse' + TransferCommandContractWithStatus: + description: | + A contract of Daml template `Splice.ExternalPartyAmuletRules:TransferCommand`, + and its status determined by the latest transactions. + type: object + required: + - contract + - status + properties: + contract: + $ref: '#/components/schemas/Contract' + status: + $ref: '#/components/schemas/TransferCommandContractStatus' + TransferCommandMap: + type: object + additionalProperties: + $ref: '#/components/schemas/TransferCommandContractWithStatus' + LookupTransferCommandStatusResponse: + type: object + required: + - transfer_commands_by_contract_id + properties: + transfer_commands_by_contract_id: + $ref: '#/components/schemas/TransferCommandMap' + HoldingsSummaryRequest: + type: object + required: + - migration_id + - record_time + - owner_party_ids + properties: + migration_id: + type: integer + format: int64 + description: | + The migration id for which to return the summary. + record_time: + type: string + format: date-time + description: | + The timestamp at which the contract set was active. + This needs to be an exact timestamp, i.e., + needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + record_time_match: + type: string + description: | + How to match the record_time. "exact" requires the record_time to match exactly. + "at_or_before" finds the most recent snapshot at or before the given record_time. + enum: + - exact + - at_or_before + default: exact + owner_party_ids: + type: array + items: + type: string + minItems: 1 + description: | + The owners for which to compute the summary. + as_of_round: + type: integer + format: int64 + description: | + Compute holding fees as of this round. Defaults to the earliest open mining round. + HoldingsSummary: + description: Aggregate Amulet totals for a particular owner party ID. + type: object + required: + - party_id + - total_unlocked_coin + - total_locked_coin + - total_coin_holdings + - accumulated_holding_fees_unlocked + - accumulated_holding_fees_locked + - accumulated_holding_fees_total + - total_available_coin + properties: + party_id: + description: | + Owner party ID of the amulet. Guaranteed to be unique among `summaries`. + type: string + total_unlocked_coin: + description: | + Sum of unlocked amulet at time of reception, not counting holding + fees deducted since. + type: string + total_locked_coin: + description: | + Sum of locked amulet at time of original amulet reception, not + counting holding fees deducted since. + type: string + total_coin_holdings: + description: | + `total_unlocked_coin` + `total_locked_coin`. + type: string + accumulated_holding_fees_unlocked: + description: | + Sum of holding fees as of `computed_as_of_round` that apply to + unlocked amulet. + type: string + accumulated_holding_fees_locked: + description: | + Sum of holding fees as of `computed_as_of_round` that apply to + locked amulet, including fees applied since the amulet's creation + round. + type: string + accumulated_holding_fees_total: + description: | + Same as `accumulated_holding_fees_unlocked` + `accumulated_holding_fees_locked`. + type: string + total_available_coin: + description: Same as `total_unlocked_coin` - `accumulated_holding_fees_unlocked`. + type: string + HoldingsSummaryResponse: + type: object + required: + - record_time + - migration_id + - computed_as_of_round + - summaries + properties: + record_time: + description: The same `record_time` as in the request. + type: string + format: date-time + migration_id: + description: The same `migration_id` as in the request. + type: integer + format: int64 + computed_as_of_round: + description: The same `as_of_round` as in the request, with the same default. + type: integer + format: int64 + summaries: + type: array + items: + $ref: '#/components/schemas/HoldingsSummary' + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.5.8/scan.yaml b/api-specs/splice/0.5.8/scan.yaml new file mode 100644 index 000000000..65d2956dd --- /dev/null +++ b/api-specs/splice/0.5.8/scan.yaml @@ -0,0 +1,4280 @@ +openapi: 3.0.0 +info: + title: Scan 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: + /readyz: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isReady + responses: + '200': + description: ok + '503': + description: service_unavailable + /livez: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isLive + responses: + '200': + description: ok + '503': + description: service_unavailable + /status: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getHealthStatus + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + /version: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getVersion + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Version' + /v0/dso: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getDsoInfo + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDsoInfoResponse' + /v0/validators/validator-faucets: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getValidatorFaucetsByValidator + description: | + For every argument that is a valid onboarded validator, return + statistics on its liveness activity, according to on-ledger state at the + time of the request. + parameters: + - name: validator_ids + in: query + required: true + description: | + A list of validator party IDs, one per specification of the parameter. + Any party IDs not matching onboarded validators will be ignored + schema: + type: array + items: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetValidatorFaucetsByValidatorResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /v0/scans: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: listDsoScans + description: | + Retrieve Canton scan configuration for all SVs, grouped by + connected synchronizer ID + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoScansResponse' + /v0/admin/validator/licenses: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: listValidatorLicenses + description: | + List all validators currently approved by members of the DSO, paginated, + sorted newest-first. + parameters: + - name: after + description: | + A `next_page_token` from a prior response; if absent, return the first page. + in: query + required: false + schema: + type: integer + format: int64 + - name: limit + description: Maximum number of elements to return, 1000 by default. + in: query + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListValidatorLicensesResponse' + /v0/dso-sequencers: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: listDsoSequencers + description: | + Retrieve Canton sequencer configuration for all SVs, grouped by + connected synchronizer ID + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoSequencersResponse' + /v0/sv-bft-sequencers: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listSvBftSequencers + description: | + Retrieve Canton BFT sequencer configuration for this SV, for each configured Synchronizer + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSvBftSequencersResponse' + /v0/domains/{domain_id}/parties/{party_id}/participant-id: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getPartyToParticipant + description: | + Get the ID of the participant hosting a given party. This will fail if + there are multiple party-to-participant mappings for the given + synchronizer and party, which is not currently supported. + parameters: + - name: domain_id + description: | + The synchronizer ID to look up a mapping for. + in: path + required: true + schema: + type: string + - name: party_id + description: | + The party ID to lookup a participant ID for. + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetPartyToParticipantResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/domains/{domain_id}/members/{member_id}/traffic-status: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getMemberTrafficStatus + description: | + Get a member's traffic status as reported by the sequencer, according to + ledger state at the time of the request. + parameters: + - name: domain_id + description: | + The synchronizer ID to look up traffic for. + in: path + required: true + schema: + type: string + - name: member_id + description: | + The participant or mediator whose traffic to look up, in the format + `code::id::fingerprint` where `code` is `PAR` or `MED`. + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetMemberTrafficStatusResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/closed-rounds: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getClosedRounds + description: | + Every closed mining round on the ledger still in post-close process for + the connected Splice network, in round number order, earliest-first. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetClosedRoundsResponse' + /v0/open-and-issuing-mining-rounds: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getOpenAndIssuingMiningRounds + description: | + All current open and issuing mining rounds, if the request is empty; + passing contract IDs in the request can reduce the response data for + polling/client-cache-update efficiency. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetOpenAndIssuingMiningRoundsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetOpenAndIssuingMiningRoundsResponse' + /v2/updates: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getUpdateHistoryV2 + description: | + Returns the update history in ascending order, paged, from ledger begin or optionally starting after a record time. + Compared to `/v1/updates`, the `/v2/updates` removes the `offset` field in responses, + which was hardcoded to 1 in `/v1/updates` for compatibility, and is now removed. + `/v2/updates` sorts events lexicographically in `events_by_id` by `ID` for convenience, which should not be confused with the + order of events in the transaction, for this you should rely on the order of `root_event_ids` and `child_event_ids`. + Updates are ordered lexicographically by `(migration id, record time)`. + For a given migration id, each update has a unique record time. + The record time ranges of different migrations may overlap, i.e., + it is not guaranteed that the maximum record time of one migration is smaller than the minimum record time of the next migration, + and there may be two updates with the same record time but different migration ids. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryRequestV2' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryResponseV2' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v2/updates/{update_id}: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getUpdateByIdV2 + description: | + Returns the update with the given update_id. + Compared to `/v1/updates/{update_id}`, the `/v2/updates/{update_id}` removes the `offset` field in responses, + which was hardcoded to 1 in `/v1/updates/{update_id}` for compatibility, and is now removed. + `/v2/updates/{update_id}` sorts events lexicographically in `events_by_id` by `ID` for convenience, which should not be confused with the + order of events in the transaction, for this you should rely on the order of `root_event_ids` and `child_event_ids`. + parameters: + - name: update_id + in: path + required: true + schema: + type: string + - name: daml_value_encoding + in: query + schema: + $ref: '#/components/schemas/DamlValueEncoding' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryItemV2' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v1/updates: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getUpdateHistoryV1 + description: | + Returns the update history in ascending order, paged, from ledger begin or optionally starting after a record time. + Unlike /v0/updates, this endpoint returns responses that are consistent across different + scan instances. Event ids returned by this endpoint are not comparable to event ids returned by /v0/updates. + + Updates are ordered lexicographically by `(migration id, record time)`. + For a given migration id, each update has a unique record time. + The record time ranges of different migrations may overlap, i.e., + it is not guaranteed that the maximum record time of one migration is smaller than the minimum record time of the next migration, + and there may be two updates with the same record time but different migration ids. + The order of items in events_by_id is not defined. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryRequestV1' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryResponse' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v1/updates/{update_id}: + get: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getUpdateByIdV1 + description: | + Returns the update with the given update_id. + Unlike /v0/updates/{update_id}, this endpoint returns responses that are consistent across different + scan instances. Event ids returned by this endpoint are not comparable to event ids returned by /v0/updates. + The order of items in events_by_id is not defined. + parameters: + - name: update_id + in: path + required: true + schema: + type: string + - name: daml_value_encoding + in: query + schema: + $ref: '#/components/schemas/DamlValueEncoding' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryItem' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/state/acs/snapshot-timestamp: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getDateOfMostRecentSnapshotBefore + description: | + Returns the timestamp of the most recent snapshot before the given date, for the given migration_id. + This corresponds to the record time of the last transaction in the snapshot. + parameters: + - name: before + in: query + required: true + schema: + type: string + format: date-time + description: | + The endpoint will return the record time of the most recent snapshot before this parameter. + - name: migration_id + in: query + required: true + schema: + type: integer + format: int64 + description: | + The endpoint will return the record time of the most recent snapshot for this migration id. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcsSnapshotTimestampResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/state/acs/snapshot-timestamp-after: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getDateOfFirstSnapshotAfter + description: | + Returns the timestamp of the first snapshot after the given date, for the given migration_id or larger. + parameters: + - name: after + in: query + required: true + schema: + type: string + format: date-time + description: | + The endpoint will return the record time of the first snapshot after this parameter. + - name: migration_id + in: query + required: true + schema: + type: integer + format: int64 + description: | + The endpoint will return the record time of the first snapshot for this migration id or larger. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcsSnapshotTimestampResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/state/acs: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getAcsSnapshotAt + description: | + Returns the ACS in creation date ascending order, paged, for a given migration id and record time. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcsResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/state/acs/force: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: forceAcsSnapshotNow + description: | + Takes a snapshot of the ACS at the current time. + The responses can be used as parameters to `/v0/state/acs` to retrieve the snapshot. + Disabled in production environments due to its persistent alteration of + the behavior of future invocations of `/v0/state/acs`, as it causes an + immediate internal snapshot and delay in the next automatic snapshot. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ForceAcsSnapshotResponse' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v0/holdings/state: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getHoldingsStateAt + description: | + Returns the active amulet contracts for a given migration id and record time, in creation date ascending order, paged. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsStateRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcsResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/holdings/summary: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getHoldingsSummaryAt + description: | + Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/ans-entries: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: listAnsEntries + description: | + Lists all non-expired ANS entries whose names are prefixed with the + `name_prefix`, up to `page_size` entries. + parameters: + - name: name_prefix + description: | + Every result's name will start with this substring; if empty or absent, + all entries will be listed. + Does not have to be a whole word or segment; any substring will be accepted. + in: query + schema: + type: string + - name: page_size + description: | + The maximum number of results returned. + Older (but still non-expired) results are listed first. + in: query + required: true + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListEntriesResponse' + /v0/ans-entries/by-party/{party}: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: lookupAnsEntryByParty + description: | + If present, the first ANS entry for user `party` according to + `name` lexicographic order. + parameters: + - name: party + description: The user party ID that holds the ANS entry. + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupEntryByPartyResponse' + '404': + $ref: '#/components/responses/404' + /v0/ans-entries/by-name/{name}: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: lookupAnsEntryByName + description: If present, the ANS entry named exactly `name`. + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupEntryByNameResponse' + '404': + $ref: '#/components/responses/404' + /v0/dso-party-id: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getDsoPartyId + description: | + The party ID of the DSO for the Splice network connected by this Scan app. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDsoPartyIdResponse' + /v0/amulet-rules: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getAmuletRules + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetAmuletRulesRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAmuletRulesResponse' + /v0/external-party-amulet-rules: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getExternalPartyAmuletRules + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetExternalPartyAmuletRulesRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetExternalPartyAmuletRulesResponse' + /v0/ans-rules: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getAnsRules + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetAnsRulesRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAnsRulesResponse' + /v0/featured-apps: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listFeaturedAppRights + description: | + List every `FeaturedAppRight` registered with the DSO on the ledger. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListFeaturedAppRightsResponse' + /v0/featured-apps/{provider_party_id}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupFeaturedAppRight + description: | + If `provider_party_id` has a `FeaturedAppRight` registered with the DSO, + return it; `featured_app_right` will be empty otherwise. + parameters: + - name: provider_party_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupFeaturedAppRightResponse' + /v0/top-validators-by-validator-faucets: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getTopValidatorsByValidatorFaucets + description: | + Get a list of top validators by number of rounds in which they collected + faucets, and basis statistics on their round collection history + parameters: + - in: query + name: limit + description: | + Maximum number of validator records that may be returned in the + response + required: true + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetTopValidatorsByValidatorFaucetsResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /v0/transfer-preapprovals/by-party/{party}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupTransferPreapprovalByParty + description: Lookup a TransferPreapproval by the receiver party. + parameters: + - name: party + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferPreapprovalByPartyResponse' + '404': + $ref: '#/components/responses/404' + /v0/transfer-command-counter/{party}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupTransferCommandCounterByParty + description: Lookup a TransferCommandCounter by the receiver party. + parameters: + - name: party + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferCommandCounterByPartyResponse' + '404': + description: No TransferCommandCounter exists for this party. This means the nonce that should be used is 0. + $ref: '#/components/responses/404' + /v0/transfer-command/status: + get: + description: Retrieve the status of all transfer commands (up to a limit of 100) of the given sender for the specified nonce. + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupTransferCommandStatus + parameters: + - name: sender + in: query + required: true + schema: + type: string + - name: nonce + in: query + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferCommandStatusResponse' + '404': + description: No TransferCommand exists with this contract id within the last 24h + $ref: '#/components/responses/404' + /v0/migrations/schedule: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getMigrationSchedule + description: | + If the DSO has scheduled a synchronizer upgrade, return its planned time + and the new migration ID. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/MigrationSchedule' + '404': + description: No migration scheduled + /v0/synchronizer-identities/{domain_id_prefix}: + get: + tags: + - internal + - scan + x-jvm-package: scan_soft_domain_migration_poc + operationId: getSynchronizerIdentities + parameters: + - name: domain_id_prefix + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SynchronizerIdentities' + '404': + $ref: '#/components/responses/404' + /v0/synchronizer-bootstrapping-transactions/{domain_id_prefix}: + get: + tags: + - internal + - scan + x-jvm-package: scan_soft_domain_migration_poc + operationId: getSynchronizerBootstrappingTransactions + parameters: + - name: domain_id_prefix + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SynchronizerBootstrappingTransactions' + '404': + $ref: '#/components/responses/404' + /v0/splice-instance-names: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getSpliceInstanceNames + description: Retrieve the UI names of various elements of this Splice network. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetSpliceInstanceNamesResponse' + '404': + $ref: '#/components/responses/404' + /v0/amulet-price/votes: + get: + tags: + - scan + - internal + x-jvm-package: scan + operationId: listAmuletPriceVotes + description: Retrieve a list of the latest amulet price votes + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAmuletPriceVotesResponse' + /v0/voterequest: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listVoteRequestsByTrackingCid + description: Look up several `VoteRequest`\ s at once by their contract IDs. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BatchListVotesByVoteRequestsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListVoteRequestByTrackingCidResponse' + /v0/voterequests/{vote_request_contract_id}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupDsoRulesVoteRequest + description: Look up a `VoteRequest` by contract ID. + parameters: + - name: vote_request_contract_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupDsoRulesVoteRequestResponse' + '404': + description: VoteRequest contract not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/sv/voterequests: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listDsoRulesVoteRequests + description: List all active `VoteRequest`\ s. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoRulesVoteRequestsResponse' + /v0/admin/sv/voteresults: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listVoteRequestResults + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListVoteResultsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoRulesVoteResultsResponse' + /v0/backfilling/migration-info: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getMigrationInfo + description: | + List all previous synchronizer migrations in this Splice network's history. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetMigrationInfoRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetMigrationInfoResponse' + '404': + $ref: '#/components/responses/404' + /v0/backfilling/updates-before: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getUpdatesBefore + description: | + Retrieve transactions and synchronizer reassignments prior to the + request's specification. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesBeforeRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesBeforeResponse' + '404': + $ref: '#/components/responses/404' + /v0/backfilling/status: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getBackfillingStatus + description: | + Retrieve the status of the backfilling process. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetBackfillingStatusResponse' + /v0/acs/{party}: + get: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getAcsSnapshot + description: '**Deprecated**. Fetch the current SV participant ACS snapshot for the DSO and `party`.' + parameters: + - name: party + in: path + required: true + schema: + type: string + - name: record_time + in: query + required: false + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAcsSnapshotResponse' + /v0/aggregated-rounds: + get: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getAggregatedRounds + description: '**Deprecated**. Retrieve the current earliest and latest rounds aggregated for this Scan.' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAggregatedRoundsResponse' + '404': + $ref: '#/components/responses/404' + /v0/round-totals: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: listRoundTotals + description: '**Deprecated**. List Amulet statistics for up to 200 closed rounds.' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListRoundTotalsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListRoundTotalsResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/round-party-totals: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: listRoundPartyTotals + description: '**Deprecated**. Retrieve per-party Amulet statistics for up to 50 closed rounds.' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListRoundPartyTotalsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListRoundPartyTotalsResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/amulet-config-for-round: + get: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getAmuletConfigForRound + description: | + **Deprecated**. Retrieve some information from the `AmuletRules` selected for the given round + parameters: + - in: query + name: round + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAmuletConfigForRoundResponse' + '404': + $ref: '#/components/responses/404' + /v0/round-of-latest-data: + get: + deprecated: true + tags: + - deprecated + - scan + x-jvm-package: scan + operationId: getRoundOfLatestData + description: | + **Deprecated**. Get the latest round number for which aggregated data is available and + the ledger effective time at which the round was closed. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetRoundOfLatestDataResponse' + '404': + $ref: '#/components/responses/404' + /v0/rewards-collected: + get: + deprecated: true + tags: + - deprecated + - scan + x-jvm-package: scan + operationId: getRewardsCollected + description: '**Deprecated**. Get the total rewards collected ever' + parameters: + - in: query + name: round + required: false + schema: + type: integer + format: int64 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetRewardsCollectedResponse' + '404': + $ref: '#/components/responses/404' + /v0/top-providers-by-app-rewards: + get: + deprecated: true + tags: + - deprecated + - scan + x-jvm-package: scan + operationId: getTopProvidersByAppRewards + description: | + **Deprecated**. Get a list of top-earning app providers, and the total earned app + rewards for each + parameters: + - in: query + name: round + required: true + schema: + type: integer + format: int64 + - in: query + name: limit + required: true + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetTopProvidersByAppRewardsResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /v0/top-validators-by-validator-rewards: + get: + deprecated: true + tags: + - deprecated + - scan + x-jvm-package: scan + operationId: getTopValidatorsByValidatorRewards + description: | + **Deprecated**. Get a list of top-earning validators, and the total earned validator + rewards for each + parameters: + - in: query + name: round + required: true + schema: + type: integer + format: int64 + - in: query + name: limit + required: true + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetTopValidatorsByValidatorRewardsResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /v0/top-validators-by-purchased-traffic: + get: + deprecated: true + tags: + - deprecated + - scan + x-jvm-package: scan + operationId: getTopValidatorsByPurchasedTraffic + description: | + **Deprecated**. Get a list of validators and their domain fees spends, sorted by the + amount of extra traffic purchased + parameters: + - in: query + name: round + required: true + schema: + type: integer + format: int64 + - in: query + name: limit + required: true + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetTopValidatorsByPurchasedTrafficResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /v0/activities: + post: + deprecated: true + tags: + - deprecated + - scan + x-jvm-package: scan + operationId: listActivity + description: | + **Deprecated**. Lists activities in descending order, paged, optionally starting after a provided event id. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListActivityRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListActivityResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/transactions: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: listTransactionHistory + description: | + **Deprecated with known bugs that will not be fixed, use /v2/updates instead**. + + Lists transactions, by default in ascending order, paged, from ledger begin or optionally starting after a provided event id. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TransactionHistoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransactionHistoryResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/updates: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getUpdateHistory + description: | + **Deprecated**, use /v2/updates instead. + Returns the update history in ascending order, paged, from ledger begin or optionally starting after a record time. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryResponse' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v0/updates/{update_id}: + get: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getUpdateById + description: | + **Deprecated**, use /v2/updates/{update_id} instead. + parameters: + - name: update_id + in: path + required: true + schema: + type: string + - name: lossless + in: query + description: | + Whether contract payload should be encoded into json using a lossless, but much harder to process, encoding. + This is mostly used for backend calls, and is not recommended for external users. + Optional and defaults to false. + schema: + type: boolean + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryItem' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/feature-support: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: featureSupport + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/FeatureSupportResponse' + '500': + $ref: '#/components/responses/500' + /v0/backfilling/import-updates: + post: + tags: + - scan + x-jvm-package: scan + operationId: getImportUpdates + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetImportUpdatesRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetImportUpdatesResponse' + '404': + $ref: '#/components/responses/404' + /v0/events: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getEventHistory + description: | + Returns the event history in ascending order, paged, from ledger begin or optionally starting after a record time. + An event bears some combination of a transaction, a contract reassignment, and a verdict. + Events are ordered lexicographically by `(migration id, record time)`. + For a given migration id, each event has a unique record time. + The record time ranges of different migrations may overlap, i.e., + it is not guaranteed that the maximum record time of one migration is smaller than the minimum record time of the next migration, + and there may be two updates with the same record time but different migration ids. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventHistoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/EventHistoryResponse' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v0/events/{update_id}: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getEventById + description: | + Returns the event with the given update_id. + An event bears some combination of a transaction, a contract reassignment, and a verdict. + parameters: + - name: update_id + in: path + required: true + schema: + type: string + - name: daml_value_encoding + in: query + schema: + $ref: '#/components/schemas/DamlValueEncoding' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/EventHistoryItem' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' +components: + schemas: + GetSpliceInstanceNamesResponse: + type: object + required: + - network_name + - network_favicon_url + - amulet_name + - amulet_name_acronym + - name_service_name + - name_service_name_acronym + properties: + network_name: + description: What to call this Splice network. + type: string + network_favicon_url: + description: URL of an HTML favicon for this Splice network. + type: string + amulet_name: + description: What this Splice network calls Amulet. + type: string + amulet_name_acronym: + description: The three-letter acronym for Amulet. + type: string + name_service_name: + description: What this Splice network calls the Amulet Name Service. + type: string + name_service_name_acronym: + description: The acronym for `name_service_name`. + type: string + GetDsoPartyIdResponse: + type: object + required: + - dso_party_id + properties: + dso_party_id: + type: string + GetClosedRoundsResponse: + type: object + required: + - rounds + properties: + rounds: + description: | + Contracts of the Daml template `Splice.Round:ClosedMiningRound`, one + for every closed round that is still in process, i.e. it either has + unprocessed rewards or a missing `Splice.DsoRules:Confirmation`. + type: array + items: + $ref: '#/components/schemas/Contract' + GetOpenAndIssuingMiningRoundsRequest: + type: object + required: + - cached_open_mining_round_contract_ids + - cached_issuing_round_contract_ids + properties: + cached_open_mining_round_contract_ids: + description: | + The contract IDs for `open_mining_rounds` in the response the caller + knows about. If unsure, an empty array is fine; only a performance + penalty is incurred. + type: array + items: + $ref: '#/components/schemas/ContractId' + cached_issuing_round_contract_ids: + description: | + The contract IDs for `issuing_mining_rounds` in the response the + caller knows about. If unsure, an empty array is fine; only a + performance penalty is incurred. + type: array + items: + $ref: '#/components/schemas/ContractId' + GetOpenAndIssuingMiningRoundsResponse: + description: | + Daml contracts of the templates `Splice.Round.OpenMiningRound` and + `Splice.Round.IssuingMiningRound` representing rounds for which rewards + can be registered or are currently being computed, respectively. + Contract IDs in the input serve as input sets for the two + `MaybeCachedContractWithStateMap`s as described for that structure for + `open_mining_rounds` and `issuing_mining_rounds`. + type: object + required: + - open_mining_rounds + - issuing_mining_rounds + - time_to_live_in_microseconds + properties: + time_to_live_in_microseconds: + description: | + Suggested cache TTL for the response; this should expire before the + `opensAt` of any open rounds that may not be in this response yet. + type: integer + open_mining_rounds: + $ref: '#/components/schemas/MaybeCachedContractWithStateMap' + issuing_mining_rounds: + $ref: '#/components/schemas/MaybeCachedContractWithStateMap' + GetAmuletRulesRequest: + type: object + properties: + cached_amulet_rules_contract_id: + $ref: '#/components/schemas/ContractId' + cached_amulet_rules_domain_id: + type: string + GetAmuletRulesResponse: + description: | + Contract of the Daml template `Splice.AmuletRules.AmuletRules`, + including the full schedule of `AmuletConfig` changes approved by + the DSO. Callers should not assume that `initialValue` is up-to-date, + and should instead search `futureValues` for the latest configuration + valid as of now. `contract` will be absent if its ID matches the input + `cached_amulet_rules_contract_id`. + type: object + properties: + amulet_rules_update: + $ref: '#/components/schemas/MaybeCachedContractWithState' + required: + - amulet_rules_update + GetExternalPartyAmuletRulesRequest: + type: object + properties: + cached_external_party_amulet_rules_contract_id: + $ref: '#/components/schemas/ContractId' + cached_external_party_amulet_rules_domain_id: + type: string + GetExternalPartyAmuletRulesResponse: + description: | + A contract state update of Daml template + `Splice.ExternalPartyAmuletRules.ExternalPartyAmuletRules` + type: object + properties: + external_party_amulet_rules_update: + $ref: '#/components/schemas/MaybeCachedContractWithState' + required: + - external_party_amulet_rules_update + GetAnsRulesRequest: + type: object + properties: + cached_ans_rules_contract_id: + $ref: '#/components/schemas/ContractId' + cached_ans_rules_domain_id: + type: string + GetAnsRulesResponse: + description: | + A contract state update of Daml template `Splice.Ans.AnsRules`. + type: object + properties: + ans_rules_update: + $ref: '#/components/schemas/MaybeCachedContractWithState' + required: + - ans_rules_update + ListFeaturedAppRightsResponse: + description: | + Contracts of Daml template `Splice.Amulet.FeaturedAppRight`. + type: object + required: + - featured_apps + properties: + featured_apps: + type: array + items: + $ref: '#/components/schemas/Contract' + LookupFeaturedAppRightResponse: + description: | + If defined, a contract of Daml template `Splice.Amulet.FeaturedAppRight`. + type: object + properties: + featured_app_right: + $ref: '#/components/schemas/Contract' + GetAmuletConfigForRoundResponse: + type: object + required: + - amulet_create_fee + - holding_fee + - lock_holder_fee + - transfer_fee + properties: + amulet_create_fee: + type: string + holding_fee: + type: string + lock_holder_fee: + type: string + transfer_fee: + $ref: '#/components/schemas/SteppedRate' + SteppedRate: + type: object + required: + - initial + - steps + properties: + initial: + type: string + steps: + type: array + items: + $ref: '#/components/schemas/RateStep' + RateStep: + type: object + required: + - amount + - rate + properties: + amount: + type: string + rate: + type: string + GetRoundOfLatestDataResponse: + type: object + required: + - round + - effectiveAt + properties: + round: + type: integer + format: int64 + effectiveAt: + type: string + format: date-time + GetRewardsCollectedResponse: + type: object + required: + - amount + properties: + amount: + type: string + GetValidatorTrafficBalanceResponse: + type: object + required: + - remainingBalance + - totalPurchased + properties: + remainingBalance: + type: number + format: double + totalPurchased: + type: number + format: double + CheckAndUpdateValidatorTrafficBalanceResponse: + type: object + required: + - approved + properties: + approved: + type: boolean + GetTopProvidersByAppRewardsResponse: + type: object + required: + - providersAndRewards + properties: + providersAndRewards: + type: array + items: + $ref: '#/components/schemas/PartyAndRewards' + GetTopValidatorsByValidatorRewardsResponse: + type: object + required: + - validatorsAndRewards + properties: + validatorsAndRewards: + type: array + items: + $ref: '#/components/schemas/PartyAndRewards' + PartyAndRewards: + type: object + required: + - provider + - rewards + properties: + provider: + type: string + rewards: + type: string + GetTopValidatorsByValidatorFaucetsResponse: + type: object + required: + - validatorsByReceivedFaucets + properties: + validatorsByReceivedFaucets: + description: | + Up to `limit` validators, sorted greatest number of rounds + collected first + type: array + items: + $ref: '#/components/schemas/ValidatorReceivedFaucets' + GetTopValidatorsByPurchasedTrafficResponse: + type: object + required: + - validatorsByPurchasedTraffic + properties: + validatorsByPurchasedTraffic: + type: array + items: + $ref: '#/components/schemas/ValidatorPurchasedTraffic' + ValidatorPurchasedTraffic: + type: object + required: + - validator + - numPurchases + - totalTrafficPurchased + - totalCcSpent + - lastPurchasedInRound + properties: + validator: + type: string + numPurchases: + type: integer + format: int64 + totalTrafficPurchased: + type: integer + format: int64 + totalCcSpent: + type: string + lastPurchasedInRound: + type: integer + format: int64 + ListSvBftSequencersResponse: + type: object + required: + - bftSequencers + properties: + bftSequencers: + type: array + items: + $ref: '#/components/schemas/SynchronizerBftSequencer' + SynchronizerBftSequencer: + type: object + required: + - migrationId + - id + - p2pUrl + properties: + migrationId: + description: | + The synchronizer migration id corresponding to this sequencer. + type: integer + format: int64 + id: + description: The id of the sequencer. + type: string + p2pUrl: + description: The public accessible P2P url of the sequencer, use for inter sequencer communication. + type: string + ListDsoSequencersResponse: + type: object + required: + - domainSequencers + properties: + domainSequencers: + type: array + items: + $ref: '#/components/schemas/DomainSequencers' + DomainSequencers: + type: object + required: + - domainId + - sequencers + properties: + domainId: + description: the synchronizer ID for the associated sequencers + type: string + sequencers: + description: the sequencers associated with the synchronizer + type: array + items: + $ref: '#/components/schemas/DsoSequencer' + DsoSequencer: + type: object + required: + - migrationId + - id + - url + - svName + - availableAfter + properties: + migrationId: + description: | + The synchronizer migration id corresponding to this sequencer. + type: integer + format: int64 + id: + description: The id of the sequencer. + type: string + url: + description: The public accessible url of the sequencer. + type: string + svName: + description: The sequencer's operating SV name. + type: string + availableAfter: + description: | + Any participant should subscribe to this sequencer after this time. + type: string + format: date-time + ListDsoScansResponse: + type: object + required: + - scans + properties: + scans: + type: array + items: + $ref: '#/components/schemas/DomainScans' + DomainScans: + type: object + required: + - domainId + - scans + properties: + domainId: + type: string + scans: + description: | + SV scans for the associated synchronizer ID; there is at most one + scan per SV for each synchronizer ID. + type: array + items: + $ref: '#/components/schemas/ScanInfo' + ScanInfo: + type: object + required: + - publicUrl + - svName + properties: + publicUrl: + description: The public accessible url of the scan. + type: string + svName: + description: The sequencer's operating SV name. + type: string + TransactionHistoryRequest: + type: object + required: + - page_size + properties: + page_end_event_id: + type: string + description: | + Note that all transactions carry some monotonically-increasing event_id. + Omit this page_end_event_id to start reading the first page, from the beginning or the end of the ledger, depending on the sort_order column. + A subsequent request can fill the page_end_event_id with the last event_id of the TransactionHistoryResponse to continue reading in the same sort_order. + The transaction with event_id == page_end_event_id will be skipped in the next response, making it possible to continuously read pages in the same sort_order. + sort_order: + description: | + Sort order for the transactions. For ascending order, from beginning to the end of the ledger, use "asc". + For descending order, from end to beginning of the ledger, use "desc". + "asc" is used if the sort_order is omitted. + type: string + enum: + - asc + - desc + page_size: + description: | + The maximum number of transactions returned for this request. + type: integer + format: int64 + TransactionHistoryResponse: + type: object + required: + - transactions + properties: + transactions: + type: array + items: + $ref: '#/components/schemas/TransactionHistoryResponseItem' + TransactionHistoryResponseItem: + type: object + required: + - transaction_type + - event_id + - date + - domain_id + properties: + transaction_type: + description: | + Describes the type of activity that occurred. + Determines if the data for the transaction should be read + from the `transfer`, `mint`, or `tap` property. + type: string + enum: + - transfer + - mint + - devnet_tap + - abort_transfer_instruction + event_id: + description: | + The event id. + type: string + offset: + description: | + The ledger offset of the event. + Note that this field may not be the same across nodes, and therefore should not be compared between SVs. + type: string + date: + description: | + The effective date of the event. + type: string + format: date-time + domain_id: + description: | + The id of the domain through which this transaction was sequenced. + type: string + round: + description: | + The round for which this transaction was registered. + type: integer + format: int64 + amulet_price: + description: | + The amulet price for the round at which this transfer was executed. + type: string + transfer: + description: | + A (batch) transfer from sender to receivers. + $ref: '#/components/schemas/Transfer' + mint: + description: | + The DSO mints amulet for the cases where the DSO rules allow for that. + $ref: '#/components/schemas/AmuletAmount' + tap: + description: | + A tap creates a Amulet, only used for development purposes, and enabled only on DevNet. + $ref: '#/components/schemas/AmuletAmount' + abort_transfer_instruction: + $ref: '#/components/schemas/AbortTransferInstruction' + UpdateHistoryRequestAfter: + type: object + required: + - after_migration_id + - after_record_time + properties: + after_migration_id: + type: integer + format: int64 + description: | + The migration id from which to start returning transactions. This is inclusive. + after_record_time: + type: string + description: | + The record time to start returning transactions from. This only affects + transactions with the same migration id as after_migration_id. Higher migration ids + are always considered to be later. + UpdateHistoryRequest: + type: object + required: + - page_size + properties: + after: + $ref: '#/components/schemas/UpdateHistoryRequestAfter' + description: | + The transactions returned will either have a higher migration id or + the same migration id and a record_time greater than the migration id and record time + specified. + page_size: + description: | + The maximum number of transactions returned for this request. + type: integer + format: int32 + lossless: + description: | + Whether contract payload should be encoded into json using a lossless, but much harder to process, encoding. + This is mostly used for backend calls, and is not recommended for external users. + Optional and defaults to false. + type: boolean + UpdateHistoryRequestV1: + type: object + required: + - page_size + properties: + after: + $ref: '#/components/schemas/UpdateHistoryRequestAfter' + description: | + The transactions returned will either have a higher migration id or + the same migration id and a record_time greater than the migration id and record time + specified. + page_size: + description: | + The maximum number of transactions returned for this request. + type: integer + format: int32 + daml_value_encoding: + $ref: '#/components/schemas/DamlValueEncoding' + UpdateHistoryRequestV2: + type: object + required: + - page_size + properties: + after: + $ref: '#/components/schemas/UpdateHistoryRequestAfter' + description: | + The transactions returned will either have a higher migration id or + the same migration id and a record_time greater than the migration id and record time + specified. + page_size: + description: | + The maximum number of transactions returned for this request. + type: integer + format: int32 + daml_value_encoding: + $ref: '#/components/schemas/DamlValueEncoding' + UpdateHistoryResponseV2: + type: object + required: + - transactions + properties: + transactions: + type: array + items: + $ref: '#/components/schemas/UpdateHistoryItemV2' + UpdateHistoryResponse: + type: object + required: + - transactions + properties: + transactions: + type: array + items: + $ref: '#/components/schemas/UpdateHistoryItem' + UpdateHistoryItemV2: + type: object + description: | + An individual item in the update history. May be a transaction or a contract reassignment. + oneOf: + - $ref: '#/components/schemas/UpdateHistoryTransactionV2' + - $ref: '#/components/schemas/UpdateHistoryReassignment' + UpdateHistoryItem: + type: object + description: | + An individual item in the update history. May be a transaction or a contract reassignment. + oneOf: + - $ref: '#/components/schemas/UpdateHistoryTransaction' + - $ref: '#/components/schemas/UpdateHistoryReassignment' + UpdateHistoryReassignment: + type: object + description: A contract reassignment between synchronizer. May be an assignment or unassignment. + required: + - update_id + - offset + - record_time + - event + properties: + update_id: + description: | + The id of the update. + type: string + offset: + description: | + The absolute offset. + Note that this field may not be the same across nodes, and therefore should not be compared between SVs. + type: string + record_time: + description: | + The time at which the transaction was sequenced. + type: string + event: + description: | + The reassignment event. May be an assignment or unassignment. + type: object + oneOf: + - $ref: '#/components/schemas/UpdateHistoryAssignment' + - $ref: '#/components/schemas/UpdateHistoryUnassignment' + UpdateHistoryAssignment: + type: object + required: + - submitter + - source_synchronizer + - target_synchronizer + - migration_id + - unassign_id + - created_event + - reassignment_counter + properties: + submitter: + description: | + The party ID who submitted this reassignment + type: string + source_synchronizer: + description: | + The id of the synchronizer from which the contract was reassigned + type: string + target_synchronizer: + description: | + The id of the synchronizer to which the contract was reassigned + type: string + migration_id: + description: | + The migration id of the target synchronizer + type: integer + format: int64 + unassign_id: + description: | + The id of the corresponding unassign event; this assignment will + usually, but not always, occur after the so-identified unassignment + event. + type: string + created_event: + description: | + The corresponding contract create event + $ref: '#/components/schemas/CreatedEvent' + reassignment_counter: + description: Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter 0. + type: integer + format: int64 + UpdateHistoryUnassignment: + type: object + required: + - submitter + - source_synchronizer + - migration_id + - target_synchronizer + - unassign_id + - reassignment_counter + - contract_id + properties: + submitter: + description: | + The party who submitted this reassignment + type: string + source_synchronizer: + description: | + The id of the synchronizer from which the contract was reassigned + type: string + migration_id: + description: | + The migration id of the synchronizer from which the contract was reassigned + type: integer + format: int64 + target_synchronizer: + description: | + The id of the synchronizer to which the contract was reassigned + type: string + unassign_id: + description: | + The id of the unassign event, to later be correlated to an assign event + type: string + reassignment_counter: + description: Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter 0. + type: integer + format: int64 + contract_id: + description: | + The id of the unassigned contract + type: string + UpdateHistoryTransaction: + type: object + required: + - update_id + - migration_id + - workflow_id + - record_time + - synchronizer_id + - effective_at + - offset + - root_event_ids + - events_by_id + properties: + update_id: + description: | + The id of the update. + type: string + migration_id: + description: | + The migration id of the synchronizer. + type: integer + format: int64 + workflow_id: + description: | + This transaction's Daml workflow ID; a workflow ID can be associated + with multiple transactions. If empty, no workflow ID was set. + type: string + record_time: + description: | + The time at which the transaction was sequenced, with microsecond + resolution, using ISO-8601 representation. + type: string + synchronizer_id: + description: | + The id of the synchronizer through which this transaction was sequenced. + type: string + effective_at: + description: | + Ledger effective time, using ISO-8601 representation. This is the time + returned by `getTime` for all Daml executed as part of this transaction, + both by the submitting participant and all confirming participants. + type: string + offset: + description: | + The absolute offset. + Note that this field may not be the same across nodes, and therefore should not be compared between SVs. + However, within a single SV's scan, it is monotonically, lexicographically increasing. + type: string + root_event_ids: + description: | + Roots of the transaction tree. These are guaranteed to occur as keys + of the `events_by_id` object. + type: array + items: + type: string + events_by_id: + description: | + Changes to the ledger that were caused by this transaction, keyed by ID. + Values are nodes of the transaction tree. + Within a transaction, IDs may be referenced by `root_event_ids` or + `child_event_ids` in `ExercisedEvent` herein. + type: object + additionalProperties: + $ref: '#/components/schemas/TreeEvent' + UpdateHistoryTransactionV2: + type: object + required: + - update_id + - migration_id + - workflow_id + - record_time + - synchronizer_id + - effective_at + - root_event_ids + - events_by_id + properties: + update_id: + description: | + The id of the update. + type: string + migration_id: + description: | + The migration id of the synchronizer. + type: integer + format: int64 + workflow_id: + description: | + This transaction's Daml workflow ID; a workflow ID can be associated + with multiple transactions. If empty, no workflow ID was set. + type: string + record_time: + description: | + The time at which the transaction was sequenced, with microsecond + resolution, using ISO-8601 representation. + type: string + synchronizer_id: + description: | + The id of the synchronizer through which this transaction was sequenced. + type: string + effective_at: + description: | + Ledger effective time, using ISO-8601 representation. This is the time + returned by `getTime` for all Daml executed as part of this transaction, + both by the submitting participant and all confirming participants. + type: string + root_event_ids: + description: | + Roots of the transaction tree. These are guaranteed to occur as keys + of the `events_by_id` object. + type: array + items: + type: string + events_by_id: + x-scala-map-type: scala.collection.immutable.SortedMap + description: | + Changes to the ledger that were caused by this transaction, keyed by ID and sorted lexicographically by ID for display consistency. + Values are nodes of the transaction tree. + Within a transaction, IDs may be referenced by `root_event_ids` or + `child_event_ids` in `ExercisedEvent` herein, which are sorted in the order as they occurred in the transaction. + type: object + additionalProperties: + $ref: '#/components/schemas/TreeEvent' + TreeEvent: + type: object + description: | + Either a creation or an exercise of a contract. + oneOf: + - $ref: '#/components/schemas/CreatedEvent' + - $ref: '#/components/schemas/ExercisedEvent' + discriminator: + propertyName: event_type + mapping: + created_event: '#/components/schemas/CreatedEvent' + exercised_event: '#/components/schemas/ExercisedEvent' + CreatedEvent: + type: object + required: + - event_type + - event_id + - contract_id + - template_id + - package_name + - create_arguments + - created_at + - signatories + - observers + properties: + event_type: + type: string + event_id: + description: | + The ID of this particular event. Equal to the key of this element of + the containing `events_by_id` if this is part of a `TreeEvent`. + type: string + contract_id: + description: | + The ID of the created contract. + type: string + template_id: + description: | + The template of the created contract. + type: string + package_name: + description: | + The package name of the created contract. + type: string + create_arguments: + description: | + The arguments that have been used to create the contract, in the + form of JSON representation of a Daml record. + type: object + created_at: + description: | + Ledger effective time of the transaction that created the contract. + type: string + format: date-time + signatories: + description: | + Signatories to the contract, in the form of party IDs. + type: array + items: + type: string + observers: + description: | + Observers to the contract, in the form of party IDs. + type: array + items: + type: string + ExercisedEvent: + type: object + required: + - event_type + - event_id + - contract_id + - template_id + - package_name + - choice + - choice_argument + - child_event_ids + - exercise_result + - consuming + - acting_parties + properties: + event_type: + type: string + event_id: + description: | + The ID of this particular event. Equal to the key of this element of + the containing `events_by_id` if this is part of a `TreeEvent`. + type: string + contract_id: + description: | + The ID of the created contract. + type: string + template_id: + description: | + The template of the created contract. + type: string + package_name: + description: | + The package name of the created contract. + type: string + choice: + description: | + The choice that was exercised on the target contract, as an unqualified + choice name, i.e. with no package or module name qualifiers. + type: string + choice_argument: + description: | + The argument of the exercised choice, in the form of JSON + representation of a Daml value. This is usually a record with field + names being the argument names, even in the case of a single apparent + choice argument, which is represented as a single-element Daml record. + type: object + child_event_ids: + description: | + References to further events in the same transaction that appeared as a result of this ExercisedEvent. + It contains only the immediate children of this event, not all members of the subtree rooted at this node. + The order of the children is the same as the event order in the transaction. + type: array + items: + type: string + exercise_result: + description: | + The result of exercising the choice, as the JSON representation of a + Daml value. + type: object + consuming: + description: | + If true, the target contract may no longer be exercised. + type: boolean + acting_parties: + description: | + The parties that exercised the choice, in the form of party IDs. + type: array + items: + type: string + interface_id: + description: | + The interface where the choice is defined, if inherited. + type: string + AcsSnapshotTimestampResponse: + type: object + required: + - record_time + properties: + record_time: + type: string + format: date-time + description: | + The record time of the last transaction in the snapshot. + AcsRequest: + type: object + required: + - migration_id + - record_time + - page_size + properties: + migration_id: + type: integer + format: int64 + description: | + The migration id for which to return the ACS. + record_time: + type: string + format: date-time + description: | + The timestamp at which the contract set was active. + This needs to be an exact timestamp, i.e., + needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + record_time_match: + type: string + description: | + How to match the record_time. "exact" requires the record_time to match exactly. + "at_or_before" finds the most recent snapshot at or before the given record_time. + enum: + - exact + - at_or_before + default: exact + after: + type: integer + format: int64 + description: | + Pagination token for the next page of results. For this to be valid, + this must be the `next_page_token` from a prior request with identical + parameters aside from `after` and `page_size`; the response may be + invalid otherwise. + page_size: + description: | + The maximum number of created events returned for this request. + type: integer + format: int32 + party_ids: + type: array + items: + type: string + description: | + Filters the ACS by contracts in which these party IDs are stakeholders. + templates: + type: array + items: + type: string + description: | + Filters the ACS by contracts with these template IDs, specified as "PACKAGE_NAME:MODULE_NAME:ENTITY_NAME". + HoldingsStateRequest: + type: object + required: + - migration_id + - record_time + - page_size + - owner_party_ids + properties: + migration_id: + type: integer + format: int64 + description: | + The migration id for which to return the ACS. + record_time: + type: string + format: date-time + description: | + The timestamp at which the contract set was active. + This needs to be an exact timestamp, i.e., + needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + record_time_match: + type: string + description: | + How to match the record_time. "exact" requires the record_time to match exactly. + "at_or_before" finds the most recent snapshot at or before the given record_time. + enum: + - exact + - at_or_before + default: exact + after: + type: integer + format: int64 + description: | + Pagination token for the next page of results. + page_size: + description: | + The maximum number of created events returned for this request. + type: integer + format: int32 + owner_party_ids: + type: array + items: + type: string + minItems: 1 + description: | + Filters by contracts in which these party_ids are the owners of the amulets. + HoldingsSummaryRequest: + type: object + required: + - migration_id + - record_time + - owner_party_ids + properties: + migration_id: + type: integer + format: int64 + description: | + The migration id for which to return the summary. + record_time: + type: string + format: date-time + description: | + The timestamp at which the contract set was active. + This needs to be an exact timestamp, i.e., + needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + record_time_match: + type: string + description: | + How to match the record_time. "exact" requires the record_time to match exactly. + "at_or_before" finds the most recent snapshot at or before the given record_time. + enum: + - exact + - at_or_before + default: exact + owner_party_ids: + type: array + items: + type: string + minItems: 1 + description: | + The owners for which to compute the summary. + as_of_round: + type: integer + format: int64 + description: | + Compute holding fees as of this round. Defaults to the earliest open mining round. + ForceAcsSnapshotResponse: + type: object + required: + - record_time + - migration_id + properties: + record_time: + description: | + The [recent] time for which this ACS snapshot was persisted. + type: string + format: date-time + migration_id: + description: The current migration ID of the Scan. + type: integer + format: int64 + AcsResponse: + type: object + required: + - record_time + - migration_id + - created_events + properties: + record_time: + description: The same `record_time` as in the request. + type: string + format: date-time + migration_id: + description: The same `migration_id` as in the request. + type: integer + format: int64 + created_events: + description: | + Up to `page_size` contracts in the ACS. + `create_arguments` are always encoded as `compact_json`. + type: array + items: + $ref: '#/components/schemas/CreatedEvent' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as `after` + to the `AcsRequest` or `HoldingsStateRequest`. + Will be absent when there are no more pages. + HoldingsSummaryResponse: + type: object + required: + - record_time + - migration_id + - computed_as_of_round + - summaries + properties: + record_time: + description: The same `record_time` as in the request. + type: string + format: date-time + migration_id: + description: The same `migration_id` as in the request. + type: integer + format: int64 + computed_as_of_round: + description: The same `as_of_round` as in the request, with the same default. + type: integer + format: int64 + summaries: + type: array + items: + $ref: '#/components/schemas/HoldingsSummary' + HoldingsSummary: + description: Aggregate Amulet totals for a particular owner party ID. + type: object + required: + - party_id + - total_unlocked_coin + - total_locked_coin + - total_coin_holdings + - accumulated_holding_fees_unlocked + - accumulated_holding_fees_locked + - accumulated_holding_fees_total + - total_available_coin + properties: + party_id: + description: | + Owner party ID of the amulet. Guaranteed to be unique among `summaries`. + type: string + total_unlocked_coin: + description: | + Sum of unlocked amulet at time of reception, not counting holding + fees deducted since. + type: string + total_locked_coin: + description: | + Sum of locked amulet at time of original amulet reception, not + counting holding fees deducted since. + type: string + total_coin_holdings: + description: | + `total_unlocked_coin` + `total_locked_coin`. + type: string + accumulated_holding_fees_unlocked: + description: | + Sum of holding fees as of `computed_as_of_round` that apply to + unlocked amulet. + type: string + accumulated_holding_fees_locked: + description: | + Sum of holding fees as of `computed_as_of_round` that apply to + locked amulet, including fees applied since the amulet's creation + round. + type: string + accumulated_holding_fees_total: + description: | + Same as `accumulated_holding_fees_unlocked` + `accumulated_holding_fees_locked`. + type: string + total_available_coin: + description: Same as `total_unlocked_coin` - `accumulated_holding_fees_unlocked`. + type: string + ListActivityRequest: + type: object + required: + - page_size + properties: + begin_after_id: + type: string + description: | + Minimal event_id for returned activities. + Note that all activities carry some monotonically-increasing event_id. begin_after_id sets the minimum value for event_id's for the query. + page_size: + description: | + The maximum number of activity items returned for this request. + type: integer + format: int64 + ListActivityResponse: + type: object + required: + - activities + properties: + activities: + type: array + items: + $ref: '#/components/schemas/ListActivityResponseItem' + ListActivityResponseItem: + type: object + required: + - activity_type + - event_id + - date + - domain_id + properties: + activity_type: + description: | + Describes the type of activity that occurred. + Determines if the data for the activity should be read + from the `transfer`, `mint`, or `tap` property. + type: string + enum: + - transfer + - mint + - devnet_tap + - abort_transfer_instruction + event_id: + description: | + The event id. + type: string + offset: + description: | + The ledger offset of the event. + Note that this field may not be the same across nodes, and therefore should not be compared between SVs. + type: string + date: + description: | + The effective date of the event. + type: string + format: date-time + domain_id: + description: | + The id of the domain through which this transaction was sequenced. + type: string + round: + description: | + The round for which this transaction was registered. + type: integer + format: int64 + amulet_price: + description: | + The amulet price for the round at which this transfer was executed. + type: string + transfer: + description: | + A (batch) transfer from sender to receivers. + $ref: '#/components/schemas/Transfer' + mint: + description: | + The DSO mints amulet for the cases where the DSO rules allow for that. + $ref: '#/components/schemas/AmuletAmount' + tap: + description: | + A tap creates a Amulet, only used for development purposes, and enabled only on DevNet. + $ref: '#/components/schemas/AmuletAmount' + abort_transfer_instruction: + $ref: '#/components/schemas/AbortTransferInstruction' + Transfer: + description: | + A transfer between one sender and possibly many receivers, provided by an application provider. + type: object + required: + - provider + - sender + - receivers + - balance_changes + properties: + provider: + description: | + The application provider. + type: string + sender: + description: | + The sender amounts and fees. + $ref: '#/components/schemas/SenderAmount' + receivers: + description: | + The amounts and fees per receiver. + type: array + items: + $ref: '#/components/schemas/ReceiverAmount' + balance_changes: + description: | + Normalized balance changes per party caused by this transfer. + type: array + items: + $ref: '#/components/schemas/BalanceChange' + description: + type: string + transferInstructionReceiver: + type: string + transferInstructionAmount: + type: string + transferInstructionCid: + type: string + transfer_kind: + type: string + enum: + - create_transfer_instruction + - transfer_instruction_accept + - preapproval_send + AbortTransferInstruction: + type: object + required: + - abort_kind + - transfer_instruction_cid + properties: + abort_kind: + type: string + enum: + - withdraw + - reject + transfer_instruction_cid: + type: string + BalanceChange: + type: object + required: + - party + - change_to_initial_amount_as_of_round_zero + - change_to_holding_fees_rate + properties: + party: + description: | + The party for which the balance changes. + type: string + change_to_initial_amount_as_of_round_zero: + description: | + The change to the total balance introduced by this balance change, normalized to round zero, i.e., + a amulet created in round 3 is treated as a amulet created in round 0 with a higher initial amount. + type: string + change_to_holding_fees_rate: + description: | + The change of total holding fees introduced by this balance change. + type: string + AmuletAmount: + type: object + required: + - amulet_owner + - amulet_amount + properties: + amulet_owner: + description: | + The party that owns the amulet. + type: string + amulet_amount: + description: | + The amulet amount. + type: string + SenderAmount: + type: object + required: + - party + - sender_change_fee + - sender_change_amount + - sender_fee + - holding_fees + properties: + party: + description: | + The sender who has transferred amulet. + type: string + input_amulet_amount: + description: | + Total amount of amulet input into this transfer, before deducting holding fees. + type: string + input_app_reward_amount: + description: | + Total amount of app rewards input into this transfer. + type: string + input_validator_reward_amount: + description: | + Total amount of validator rewards input into this transfer. + type: string + input_sv_reward_amount: + description: | + Total amount of sv rewards input into this transfer. + type: string + input_validator_faucet_amount: + description: | + Total amount of validator faucet coupon issuance input into this transfer. + type: string + sender_change_fee: + description: | + Fee charged for returning change to the sender, + which is the smaller of the left-over balance after paying for all outputs + or one amulet create fee. + type: string + sender_change_amount: + description: | + The final amount of amulet returned to the sender after paying for all outputs and fees. + type: string + sender_fee: + description: | + Total fees paid by the sender, based on receiver's receiver_fee_ratio on outputs + type: string + holding_fees: + description: | + Holding fees paid by the sender on their input amulets. + type: string + ReceiverAmount: + type: object + required: + - party + - amount + - receiver_fee + properties: + party: + description: | + The receiver who will own the created output amulet. + type: string + amount: + description: | + The amount of amulet to receive, before deducting receiver's part of the fees. + type: string + receiver_fee: + description: | + Total fees paid by the receiver, based on receiver_fee_ratio on outputs + type: string + ListEntriesResponse: + type: object + required: + - entries + properties: + entries: + type: array + items: + $ref: '#/components/schemas/AnsEntry' + LookupEntryByPartyResponse: + type: object + required: + - entry + properties: + entry: + $ref: '#/components/schemas/AnsEntry' + LookupEntryByNameResponse: + type: object + required: + - entry + properties: + entry: + $ref: '#/components/schemas/AnsEntry' + LookupTransferPreapprovalByPartyResponse: + description: A Daml contract of template `Splice.AmuletRules:TransferPreapproval`. + type: object + required: + - transfer_preapproval + properties: + transfer_preapproval: + $ref: '#/components/schemas/ContractWithState' + LookupTransferCommandCounterByPartyResponse: + description: A Daml contract of template `Splice.ExternalPartyAmuletRules:TransferCommandCounter`. + type: object + required: + - transfer_command_counter + properties: + transfer_command_counter: + $ref: '#/components/schemas/ContractWithState' + LookupTransferCommandStatusResponse: + type: object + required: + - transfer_commands_by_contract_id + properties: + transfer_commands_by_contract_id: + $ref: '#/components/schemas/TransferCommandMap' + TransferCommandMap: + type: object + additionalProperties: + $ref: '#/components/schemas/TransferCommandContractWithStatus' + TransferCommandContractWithStatus: + description: | + A contract of Daml template `Splice.ExternalPartyAmuletRules:TransferCommand`, + and its status determined by the latest transactions. + type: object + required: + - contract + - status + properties: + contract: + $ref: '#/components/schemas/Contract' + status: + $ref: '#/components/schemas/TransferCommandContractStatus' + TransferCommandContractStatus: + type: object + oneOf: + - $ref: '#/components/schemas/TransferCommandCreatedResponse' + - $ref: '#/components/schemas/TransferCommandSentResponse' + - $ref: '#/components/schemas/TransferCommandFailedResponse' + discriminator: + propertyName: status + mapping: + created: '#/components/schemas/TransferCommandCreatedResponse' + sent: '#/components/schemas/TransferCommandSentResponse' + failed: '#/components/schemas/TransferCommandFailedResponse' + BaseLookupTransferCommandStatusResponse: + type: object + required: + - status + properties: + status: + type: string + description: | + The status of the transfer command. + created: + The transfer command has been created and is waiting for automation to complete it. + sent: + The transfer command has been completed and the transfer to the receiver has finished. + failed: + The transfer command has failed permanently and nothing has been transferred. Refer to + failure_reason for details. A new transfer command can be created. + TransferCommandCreatedResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + TransferCommandSentResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + TransferCommandFailedResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + - type: object + required: + - failure_kind + - reason + properties: + failure_kind: + type: string + description: | + The reason for the failure of the TransferCommand. + failed: + Completing the transfer failed, check the reason for details. + withdrawn: + The sender has withdrawn the TransferCommand before it could be completed. + expired: + The expiry time on the TransferCommand was reached before it could be completed. + enum: + - failed + - expired + - withdrawn + reason: + type: string + description: | + Human readable description of the failure + GetAcsSnapshotResponse: + type: object + required: + - acs_snapshot + properties: + acs_snapshot: + description: base64-encoded ACS snapshot for the intersection of the DSO party and the requested party’s ACS + type: string + AnsEntry: + type: object + required: + - user + - name + - url + - description + properties: + contract_id: + description: | + If present, Daml contract ID of template `Splice.Ans:AnsEntry`. + If absent, this is a DSO-provided entry for either the DSO or an SV. + type: string + user: + description: Owner party ID of this ANS entry. + type: string + name: + description: The ANS entry name. + type: string + url: + description: Either empty, or an http/https URL supplied by the `user`. + type: string + description: + description: Arbitrary description text supplied by `user`; may be empty. + type: string + expires_at: + description: | + Time after which this ANS entry expires; if renewed, it will have a + new `contract_id` and `expires_at`. + If `null` or absent, does not expire; this is the case only for + special entries provided by the DSO. + type: string + format: date-time + GetAggregatedRoundsResponse: + type: object + required: + - start + - end + properties: + start: + type: integer + format: int64 + end: + type: integer + format: int64 + ListRoundTotalsRequest: + type: object + required: + - start_round + - end_round + properties: + start_round: + type: integer + format: int64 + end_round: + type: integer + format: int64 + ListRoundPartyTotalsRequest: + type: object + required: + - start_round + - end_round + properties: + start_round: + type: integer + format: int64 + end_round: + type: integer + format: int64 + ListRoundTotalsResponse: + type: object + required: + - entries + properties: + entries: + type: array + items: + $ref: '#/components/schemas/RoundTotals' + ListRoundPartyTotalsResponse: + type: object + required: + - entries + properties: + entries: + type: array + items: + $ref: '#/components/schemas/RoundPartyTotals' + RoundPartyTotals: + type: object + required: + - closed_round + - party + - app_rewards + - validator_rewards + - traffic_purchased + - traffic_purchased_cc_spent + - traffic_num_purchases + - cumulative_app_rewards + - cumulative_validator_rewards + - cumulative_change_to_initial_amount_as_of_round_zero + - cumulative_change_to_holding_fees_rate + - cumulative_traffic_purchased + - cumulative_traffic_purchased_cc_spent + - cumulative_traffic_num_purchases + properties: + closed_round: + type: integer + format: int64 + party: + type: string + app_rewards: + type: string + validator_rewards: + type: string + traffic_purchased: + type: integer + format: int64 + traffic_purchased_cc_spent: + type: string + traffic_num_purchases: + type: integer + format: int64 + cumulative_app_rewards: + type: string + cumulative_validator_rewards: + type: string + cumulative_change_to_initial_amount_as_of_round_zero: + type: string + cumulative_change_to_holding_fees_rate: + type: string + cumulative_traffic_purchased: + type: integer + format: int64 + cumulative_traffic_purchased_cc_spent: + type: string + cumulative_traffic_num_purchases: + type: integer + format: int64 + RoundTotals: + type: object + required: + - closed_round + - closed_round_effective_at + - app_rewards + - validator_rewards + - change_to_initial_amount_as_of_round_zero + - change_to_holding_fees_rate + - cumulative_app_rewards + - cumulative_validator_rewards + - cumulative_change_to_initial_amount_as_of_round_zero + - cumulative_change_to_holding_fees_rate + - total_amulet_balance + properties: + closed_round: + type: integer + format: int64 + closed_round_effective_at: + type: string + format: date-time + app_rewards: + type: string + validator_rewards: + type: string + change_to_initial_amount_as_of_round_zero: + type: string + change_to_holding_fees_rate: + type: string + cumulative_app_rewards: + type: string + cumulative_validator_rewards: + type: string + cumulative_change_to_initial_amount_as_of_round_zero: + type: string + cumulative_change_to_holding_fees_rate: + type: string + total_amulet_balance: + type: string + MigrationSchedule: + type: object + required: + - time + - migration_id + properties: + time: + type: string + format: date-time + migration_id: + type: integer + format: int64 + SynchronizerIdentities: + type: object + required: + - sequencer_id + - sequencer_identity_transactions + - mediator_id + - mediator_identity_transactions + properties: + sequencer_id: + type: string + sequencer_identity_transactions: + type: array + items: + type: string + mediator_id: + type: string + mediator_identity_transactions: + type: array + items: + type: string + SynchronizerBootstrappingTransactions: + type: object + required: + - domain_parameters + - sequencer_domain_state + - mediator_domain_state + properties: + domain_parameters: + type: string + sequencer_domain_state: + type: string + mediator_domain_state: + type: string + GetMigrationInfoRequest: + type: object + required: + - migration_id + properties: + migration_id: + type: integer + format: int64 + GetMigrationInfoResponse: + type: object + required: + - record_time_range + - complete + properties: + previous_migration_id: + description: | + The migration id that was active before the given migration id, if any. + type: integer + format: int64 + record_time_range: + description: | + All domains for which there are updates in the given migration id, + along with the record time of the newest and oldest update associated with each domain + type: array + items: + $ref: '#/components/schemas/RecordTimeRange' + last_import_update_id: + description: | + The update id of the last import update (where import updates are sorted by update id, ascending) + for the given migration id, if any + type: string + complete: + description: | + True if this scan has all non-import updates for given migration id + type: boolean + import_updates_complete: + description: | + True if this scan has all import updates for the given migration id + type: boolean + RecordTimeRange: + type: object + required: + - synchronizer_id + - min + - max + properties: + synchronizer_id: + type: string + min: + type: string + format: date-time + max: + type: string + format: date-time + GetUpdatesBeforeRequest: + type: object + required: + - migration_id + - synchronizer_id + - before + - count + properties: + migration_id: + type: integer + format: int64 + synchronizer_id: + type: string + before: + description: | + Only return updates with a record time strictly smaller than this time. + type: string + format: date-time + at_or_after: + description: | + Only return updates with a record time equal to or greater than this time. + type: string + format: date-time + count: + description: | + Return at most this many updates. The actual number of updates returned may be smaller. + type: integer + format: int32 + GetUpdatesBeforeResponse: + type: object + required: + - transactions + properties: + transactions: + type: array + items: + $ref: '#/components/schemas/UpdateHistoryItem' + GetImportUpdatesRequest: + type: object + required: + - migration_id + - after_update_id + - limit + properties: + migration_id: + type: integer + format: int64 + after_update_id: + description: | + Only return updates with an update id strictly greater than this. + type: string + limit: + description: | + Return at most this many updates. The actual number of updates returned may be smaller. + type: integer + format: int32 + GetImportUpdatesResponse: + type: object + required: + - transactions + properties: + transactions: + type: array + items: + $ref: '#/components/schemas/UpdateHistoryItem' + DamlValueEncoding: + type: string + description: | + How daml values should be encoded in the response. + "compact_json" is a compact, human-readable JSON encoding. It is the same encoding + as the one used in the HTTP JSON API or the JavaScript codegen. + "protobuf_json" is a verbose JSON encoding that is more difficult to parse, + but contains type information, i.e., the values can be parsed losslessly + without having access to the Daml source code. + Optional and defaults to "compact_json". + enum: + - compact_json + - protobuf_json + GetMemberTrafficStatusResponse: + type: object + required: + - traffic_status + properties: + traffic_status: + description: | + The current traffic state for the member on the synchronizer under + `actual`, and the total purchased traffic under `target`. The purchased + traffic may exceed the `actual` limit as purchases take time to be + incorporated into the limit. + $ref: '#/components/schemas/MemberTrafficStatus' + MemberTrafficStatus: + type: object + required: + - actual + - target + properties: + actual: + description: The current traffic state for the member on the synchronizer + $ref: '#/components/schemas/ActualMemberTrafficState' + target: + description: Total purchased traffic; may exceed limit in `actual` + $ref: '#/components/schemas/TargetMemberTrafficState' + ActualMemberTrafficState: + type: object + required: + - total_consumed + - total_limit + properties: + total_consumed: + description: | + Total extra traffic consumed by the member on the given synchronizer + type: integer + format: int64 + total_limit: + description: | + Current extra traffic limit set for the member on the given synchronizer. + An extra traffic top-up is complete once total_limit matches total_purchased. + type: integer + format: int64 + TargetMemberTrafficState: + type: object + required: + - total_purchased + properties: + total_purchased: + description: | + Total extra traffic purchased for the member on the given + synchronizer in bytes. + type: integer + format: int64 + GetPartyToParticipantResponse: + type: object + required: + - participant_id + properties: + participant_id: + description: | + ID of the participant hosting the provided party, in the form + `PAR::id::fingerprint` + type: string + GetValidatorFaucetsByValidatorResponse: + type: object + required: + - validatorsReceivedFaucets + properties: + validatorsReceivedFaucets: + description: | + Statistics for any party ID arguments found to have valid onboarding + licenses; the order in the response is unrelated to argument order. + type: array + items: + $ref: '#/components/schemas/ValidatorReceivedFaucets' + ValidatorReceivedFaucets: + type: object + required: + - validator + - numRoundsCollected + - numRoundsMissed + - firstCollectedInRound + - lastCollectedInRound + properties: + validator: + description: The party ID of the onboarded validator + type: string + numRoundsCollected: + description: | + how many rounds the validator has received a faucet for; guaranteed + that collected + missed = last - first + 1 + type: integer + format: int64 + numRoundsMissed: + description: | + how many rounds between firstCollected and lastCollected in which + the validator failed to collect (i.e. was not active or available); + can at most be max(0, lastCollected - firstCollected - 1). + type: integer + format: int64 + firstCollectedInRound: + description: | + the round number when this validator started collecting faucets; + the validator definitely recorded liveness in this round + type: integer + format: int64 + lastCollectedInRound: + description: | + The most recent round number in which the validator collected a faucet; + the validator definitely recorded liveness in this round. Will equal + `firstCollected` if the validator has collected in only one round + type: integer + format: int64 + GetBackfillingStatusResponse: + type: object + required: + - complete + properties: + complete: + description: | + True if ALL backfilling processes are complete, false otherwise. + + Some scan endpoints return error responses if backfilling is not complete + (e.g., `/v1/updates`), others return partial results (e.g., `/v0/transactions`). + This endpoint is a simple indicator for whether historical information may be incomplete. + + To determine the progress of individual backfilling processes, inspect the corresponding metrics. + type: boolean + EventHistoryRequest: + type: object + required: + - page_size + properties: + after: + $ref: '#/components/schemas/UpdateHistoryRequestAfter' + description: | + The events returned will either have a higher migration id or + the same migration id and a record_time greater than the migration id and record time + specified. + page_size: + description: | + The maximum number of events returned for this request. + type: integer + format: int32 + minimum: 1 + maximum: 1000 + daml_value_encoding: + $ref: '#/components/schemas/DamlValueEncoding' + EventHistoryResponse: + type: object + required: + - events + properties: + events: + type: array + items: + $ref: '#/components/schemas/EventHistoryItem' + EventHistoryItem: + type: object + description: | + An event history item may contain a transaction update, a verdict from a mediator, both, or a contract reassignment. + If an event pertains to a contract reassignment, there will be no verdict data. + If an event pertains to a wholly private transaction, there will only be verdict data. + If an event pertains to a transaction that is partially private, it may also bear verdict information for the private portions. + When both fields are present, the transaction and verdict have the same `update_id` and `record_time`. + properties: + update: + $ref: '#/components/schemas/UpdateHistoryItemV2' + nullable: true + verdict: + $ref: '#/components/schemas/EventHistoryVerdict' + nullable: true + EventHistoryVerdict: + type: object + required: + - update_id + - migration_id + - domain_id + - record_time + - finalization_time + - submitting_parties + - submitting_participant_uid + - verdict_result + - mediator_group + - transaction_views + properties: + update_id: + description: | + The ID of the transaction update associated with this verdict. + type: string + migration_id: + description: | + The migration id of the domain through which this event was sequenced. + type: integer + format: int64 + domain_id: + description: | + The id of the domain through which this event was sequenced. + type: string + record_time: + description: | + The record_time of the transaction the verdict corresponds to. + type: string + finalization_time: + description: | + The finalization_time of the transaction the verdict corresponds to. + Note that this time might be different between different scans/mediators. + type: string + submitting_parties: + description: | + Parties on whose behalf the transaction was submitted. + type: array + items: + type: string + submitting_participant_uid: + description: | + UID of the submitting participant. + type: string + verdict_result: + description: | + Result of the verdict. + $ref: '#/components/schemas/VerdictResult' + mediator_group: + description: | + The mediator group which finalized this verdict. + type: integer + format: int32 + transaction_views: + $ref: '#/components/schemas/TransactionViews' + TransactionViews: + type: object + required: + - views + - root_views + properties: + views: + type: array + items: + $ref: '#/components/schemas/TransactionView' + root_views: + type: array + items: + type: integer + format: int32 + TransactionView: + type: object + required: + - view_id + - informees + - confirming_parties + - sub_views + properties: + view_id: + type: integer + format: int32 + informees: + type: array + items: + type: string + confirming_parties: + type: array + items: + $ref: '#/components/schemas/Quorum' + sub_views: + type: array + items: + type: integer + format: int32 + Quorum: + type: object + required: + - parties + - threshold + properties: + parties: + type: array + items: + type: string + threshold: + type: integer + format: int32 + VerdictResult: + type: string + enum: + - VERDICT_RESULT_UNSPECIFIED + - VERDICT_RESULT_ACCEPTED + - VERDICT_RESULT_REJECTED + Status: + type: object + required: + - id + - uptime + - ports + - active + properties: + id: + type: string + uptime: + type: string + ports: + type: object + additionalProperties: + type: integer + format: int32 + extra: + type: string + format: binary + active: + type: boolean + SuccessStatusResponse: + type: object + required: + - success + properties: + success: + $ref: '#/components/schemas/Status' + NotInitialized: + type: object + required: + - active + properties: + active: + type: boolean + NotInitializedStatusResponse: + type: object + required: + - not_initialized + properties: + not_initialized: + $ref: '#/components/schemas/NotInitialized' + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + FailureStatusResponse: + type: object + required: + - failed + properties: + failed: + $ref: '#/components/schemas/ErrorResponse' + NodeStatus: + oneOf: + - $ref: '#/components/schemas/SuccessStatusResponse' + - $ref: '#/components/schemas/NotInitializedStatusResponse' + - $ref: '#/components/schemas/FailureStatusResponse' + Version: + type: object + required: + - version + - commit_ts + properties: + version: + type: string + commit_ts: + type: string + format: date-time + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + GetDsoInfoResponse: + type: object + required: + - sv_user + - sv_party_id + - dso_party_id + - voting_threshold + - latest_mining_round + - amulet_rules + - dso_rules + - sv_node_states + properties: + sv_user: + description: User ID representing the SV + type: string + sv_party_id: + description: Party representing the SV + type: string + dso_party_id: + description: | + Party representing the whole DSO; for Scan only, also returned by + `/v0/dso-party-id` + type: string + voting_threshold: + description: | + Threshold required to pass vote requests; also known as the + "governance threshold", it is always derived from the number of + `svs` in `dso_rules` + type: integer + latest_mining_round: + description: | + Contract of the Daml template `Splice.Round.OpenMiningRound`, the + one with the highest round number on the ledger that has been signed + by `dso_party_id`. The round may not be usable as it may not be + opened yet, in accordance with its `opensAt` template field + $ref: '#/components/schemas/ContractWithState' + amulet_rules: + description: | + Contract of the Daml template `Splice.AmuletRules.AmuletRules`, + including the full schedule of `AmuletConfig` changes approved by + the DSO. Callers should not assume that `initialValue` is up-to-date, + and should instead search `futureValues` for the latest configuration + valid as of now + $ref: '#/components/schemas/ContractWithState' + dso_rules: + description: | + Contract of the Daml template `Splice.DsoRules.DsoRules`, listing + the governance rules approved by the DSO governing this Splice network. + $ref: '#/components/schemas/ContractWithState' + sv_node_states: + description: | + For every one of `svs` listed in `dso_rules`, a contract of the Daml + template `Splice.DSO.SvState.SvNodeState`. This does not include + states for offboarded SVs, though they may still have an on-ledger + state contract + type: array + items: + $ref: '#/components/schemas/ContractWithState' + initial_round: + description: | + Initial round from which the network bootstraps + type: string + ListValidatorLicensesResponse: + type: object + required: + - validator_licenses + properties: + validator_licenses: + description: Contracts of Daml template `Splice.ValidatorLicense:ValidatorLicense`. + type: array + items: + $ref: '#/components/schemas/Contract' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as URL query parameter `after`. + If absent or `null`, there are no more pages. + ContractId: + type: string + MaybeCachedContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + MaybeCachedContractWithStateMap: + description: | + Always created with respect to an input set of contract IDs. If an input + contract ID is absent from the keys of this map, that contract should be + considered removed by the caller; if present, `contract` may be empty, + reflecting that the caller should already have the full contract data + for that contract ID. Contracts not present in the input set will have + full contract data. `domain_id` is always up-to-date; if undefined the + contract is currently unassigned to a synchronizer, i.e. "in-flight". + type: object + additionalProperties: + $ref: '#/components/schemas/MaybeCachedContractWithState' + ListAmuletPriceVotesResponse: + description: Contracts of Daml template `Splice.DSO:AmuletPrice:AmuletPriceVote`. + type: object + required: + - amulet_price_votes + properties: + amulet_price_votes: + type: array + items: + $ref: '#/components/schemas/Contract' + BatchListVotesByVoteRequestsRequest: + type: object + required: + - vote_request_contract_ids + properties: + vote_request_contract_ids: + description: Contract IDs of Daml template `Splice.DsoRules:VoteRequest`. + type: array + items: + type: string + ListVoteRequestByTrackingCidResponse: + type: object + required: + - vote_requests + properties: + vote_requests: + description: | + Contracts of Daml template `Splice.DsoRules:VoteRequest` that match + `vote_request_contract_ids` in the request. + type: array + items: + $ref: '#/components/schemas/Contract' + LookupDsoRulesVoteRequestResponse: + description: A contract of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_request + properties: + dso_rules_vote_request: + $ref: '#/components/schemas/Contract' + ListDsoRulesVoteRequestsResponse: + description: Contracts of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_requests + properties: + dso_rules_vote_requests: + type: array + items: + $ref: '#/components/schemas/Contract' + ListVoteResultsRequest: + type: object + required: + - limit + properties: + actionName: + type: string + accepted: + type: boolean + requester: + type: string + effectiveFrom: + type: string + effectiveTo: + type: string + limit: + type: integer + ListDsoRulesVoteResultsResponse: + type: object + required: + - dso_rules_vote_results + properties: + dso_rules_vote_results: + type: array + items: + type: object + FeatureSupportResponse: + type: object + required: + - no_holding_fees_on_transfers + properties: + no_holding_fees_on_transfers: + type: boolean + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.5.8/splitwell-internal.yaml b/api-specs/splice/0.5.8/splitwell-internal.yaml new file mode 100644 index 000000000..e5753e7ec --- /dev/null +++ b/api-specs/splice/0.5.8/splitwell-internal.yaml @@ -0,0 +1,468 @@ +openapi: 3.0.0 +info: + title: Splitwell API + version: 0.0.1 +servers: + - url: https://example.com/api/splitwell +tags: + - name: splitwell +paths: + /readyz: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isReady + responses: + '200': + description: ok + '503': + description: service_unavailable + /livez: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isLive + responses: + '200': + description: ok + '503': + description: service_unavailable + /status: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getHealthStatus + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + /version: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getVersion + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Version' + /splitwell-installs: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listSplitwellInstalls + parameters: + - name: party + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSplitwellInstallsResponse' + /splitwell-rules: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listSplitwellRules + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSplitwellRulesResponse' + /groups: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listGroups + parameters: + - name: party + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListGroupsResponse' + /group-invites: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listGroupInvites + parameters: + - name: party + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListGroupInvitesResponse' + /accepted-group-invites: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listAcceptedGroupInvites + parameters: + - name: party + in: query + required: true + schema: + type: string + - name: group_id + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAcceptedGroupInvitesResponse' + /balance-updates: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listBalanceUpdates + parameters: + - name: party + in: query + required: true + schema: + type: string + - name: group_id + in: query + required: true + schema: + type: string + - name: owner_party_id + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListBalanceUpdatesResponse' + /balances: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listBalances + parameters: + - name: party + in: query + required: true + schema: + type: string + - name: group_id + in: query + required: true + schema: + type: string + - name: owner_party_id + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListBalancesResponse' + /connected-domains: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: getConnectedDomains + parameters: + - name: party + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetConnectedDomainsResponse' + /splitwell-domains: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: getSplitwellDomainIds + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetSplitwellDomainIdsResponse' + /provider-party-id: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: getProviderPartyId + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetProviderPartyIdResponse' +components: + schemas: + SplitwellInstall: + type: object + required: + - contract_id + - domain_id + properties: + contract_id: + type: string + domain_id: + type: string + ListSplitwellInstallsResponse: + type: object + required: + - installs + properties: + installs: + type: array + items: + $ref: '#/components/schemas/SplitwellInstall' + ListSplitwellRulesResponse: + type: object + required: + - rules + properties: + rules: + type: array + items: + $ref: '#/components/schemas/AssignedContract' + ListGroupsResponse: + type: object + required: + - groups + properties: + groups: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + ListGroupInvitesResponse: + type: object + required: + - group_invites + properties: + group_invites: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + ListAcceptedGroupInvitesResponse: + type: object + required: + - accepted_group_invites + properties: + accepted_group_invites: + type: array + items: + $ref: '#/components/schemas/Contract' + ListBalanceUpdatesResponse: + type: object + required: + - balance_updates + properties: + balance_updates: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + ListBalancesResponse: + type: object + required: + - balances + properties: + balances: + type: object + additionalProperties: + type: string + GetConnectedDomainsResponse: + type: object + required: + - domain_ids + properties: + domain_ids: + type: array + items: + type: string + GetSplitwellDomainIdsResponse: + type: object + required: + - preferred + - other_domain_ids + properties: + preferred: + type: string + other_domain_ids: + type: array + items: + type: string + GetProviderPartyIdResponse: + type: object + required: + - provider_party_id + properties: + provider_party_id: + type: string + Status: + type: object + required: + - id + - uptime + - ports + - active + properties: + id: + type: string + uptime: + type: string + ports: + type: object + additionalProperties: + type: integer + format: int32 + extra: + type: string + format: binary + active: + type: boolean + SuccessStatusResponse: + type: object + required: + - success + properties: + success: + $ref: '#/components/schemas/Status' + NotInitialized: + type: object + required: + - active + properties: + active: + type: boolean + NotInitializedStatusResponse: + type: object + required: + - not_initialized + properties: + not_initialized: + $ref: '#/components/schemas/NotInitialized' + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + FailureStatusResponse: + type: object + required: + - failed + properties: + failed: + $ref: '#/components/schemas/ErrorResponse' + NodeStatus: + oneOf: + - $ref: '#/components/schemas/SuccessStatusResponse' + - $ref: '#/components/schemas/NotInitializedStatusResponse' + - $ref: '#/components/schemas/FailureStatusResponse' + Version: + type: object + required: + - version + - commit_ts + properties: + version: + type: string + commit_ts: + type: string + format: date-time + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + AssignedContract: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + - domain_id + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract diff --git a/api-specs/splice/0.5.8/sv-internal.yaml b/api-specs/splice/0.5.8/sv-internal.yaml new file mode 100644 index 000000000..61b389022 --- /dev/null +++ b/api-specs/splice/0.5.8/sv-internal.yaml @@ -0,0 +1,1611 @@ +openapi: 3.0.0 +info: + title: SV API + version: 0.0.1 +servers: + - url: https://example.com/api/sv +tags: + - name: sv +paths: + /readyz: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isReady + responses: + '200': + description: ok + '503': + description: service_unavailable + /livez: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isLive + responses: + '200': + description: ok + '503': + description: service_unavailable + /status: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getHealthStatus + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + /version: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getVersion + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Version' + /v0/admin/validator/onboarding/ongoing: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: listOngoingValidatorOnboardings + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListOngoingValidatorOnboardingsResponse' + /v0/admin/validator/onboarding/prepare: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: prepareValidatorOnboarding + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareValidatorOnboardingRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareValidatorOnboardingResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/validator/licenses: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: listValidatorLicenses + parameters: + - name: after + in: query + required: false + schema: + type: integer + format: int64 + - name: limit + in: query + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListValidatorLicensesResponse' + /v0/admin/domain/cometbft/status: + get: + tags: + - sv + x-jvm-package: sv_public + operationId: getCometBftNodeStatus + responses: + '200': + description: Response returned by the CometBFT node, or the error if the call failed + content: + application/json: + schema: + $ref: '#/components/schemas/CometBftNodeStatusOrErrorResponse' + '404': + description: CometBFT is not configured for this app. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/domain/cometbft/json-rpc: + post: + tags: + - sv + x-jvm-package: sv_public + operationId: cometBftJsonRpcRequest + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CometBftJsonRpcRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/CometBftJsonRpcOrErrorResponse' + '404': + description: CometBFT is not configured for this app. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/domain/cometbft/debug: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: getCometBftNodeDebugDump + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/CometBftNodeDumpOrErrorResponse' + '404': + description: CometBFT is not configured for this app. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/domain/sequencer/status: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: getSequencerNodeStatus + responses: + '200': + description: Status of sequencer node + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + '404': + description: Sequencer is not configured for this app. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/domain/mediator/status: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: getMediatorNodeStatus + responses: + '200': + description: Status of mediator node + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + '404': + description: Mediator is not configured for this app. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/domain/pause: + get: + tags: + - sv + x-jvm-package: sv_admin + operationId: pauseDecentralizedSynchronizer + responses: + '200': + description: ok + /v0/admin/domain/unpause: + post: + tags: + - sv + x-jvm-package: sv_admin + operationId: unpauseDecentralizedSynchronizer + responses: + '200': + description: ok + /v0/admin/domain/migration-dump: + get: + tags: + - sv + x-jvm-package: sv_admin + operationId: getDomainMigrationDump + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDomainMigrationDumpResponse' + '500': + $ref: '#/components/responses/500' + post: + tags: + - sv + x-jvm-package: sv_admin + operationId: triggerDomainMigrationDump + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerDomainMigrationDumpRequest' + responses: + '200': + description: ok + '500': + $ref: '#/components/responses/500' + /v0/admin/domain/identities-dump: + get: + tags: + - sv + x-jvm-package: sv_admin + operationId: getSynchronizerNodeIdentitiesDump + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetSynchronizerNodeIdentitiesDumpResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/domain/data-snapshot: + get: + tags: + - sv + x-jvm-package: sv_admin + operationId: getDomainDataSnapshot + parameters: + - name: timestamp + in: query + required: true + schema: + type: string + - name: party_id + in: query + schema: + type: string + - name: migration_id + in: query + required: false + schema: + type: integer + format: int64 + - name: force + in: query + required: false + schema: + type: boolean + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDomainDataSnapshotResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/sv/voterequests: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: listDsoRulesVoteRequests + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoRulesVoteRequestsResponse' + /v0/admin/sv/voteresults: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: listVoteRequestResults + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListVoteResultsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoRulesVoteResultsResponse' + /v0/admin/sv/voterequests/{vote_request_contract_id}: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: lookupDsoRulesVoteRequest + parameters: + - name: vote_request_contract_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupDsoRulesVoteRequestResponse' + '404': + description: VoteRequest contract not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/sv/votes: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: castVote + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CastVoteRequest' + responses: + '201': + description: Created + '400': + $ref: '#/components/responses/400' + /v0/admin/sv/voterequest: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: listVoteRequestsByTrackingCid + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BatchListVotesByVoteRequestsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListVoteRequestByTrackingCidResponse' + /v0/admin/sv/voterequest/create: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: createVoteRequest + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateVoteRequest' + responses: + '200': + description: ok + '400': + $ref: '#/components/responses/400' + /v0/admin/sv/amulet-price/votes: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: ListAmuletPriceVotes + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAmuletPriceVotesResponse' + /v0/admin/sv/open-mining-rounds: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: ListOpenMiningRounds + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListOpenMiningRoundsResponse' + /v0/admin/sv/amulet-price/vote: + put: + tags: + - sv + x-jvm-package: sv_operator + operationId: UpdateAmuletPriceVote + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateAmuletPriceVoteRequest' + responses: + '200': + description: ok + '400': + $ref: '#/components/responses/400' + /v0/admin/authorization: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: isAuthorized + responses: + '200': + description: ok + '403': + $ref: '#/components/responses/403' + /v0/onboard/validator: + post: + tags: + - sv + x-jvm-package: sv_public + operationId: onboardValidator + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardValidatorRequest' + responses: + '200': + description: ok + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + /v0/onboard/sv/start: + post: + tags: + - sv + x-jvm-package: sv_public + operationId: startSvOnboarding + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/StartSvOnboardingRequest' + responses: + '200': + description: ok + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + /v0/onboard/sv/status/{candidate_party_id_or_name}: + get: + tags: + - sv + x-jvm-package: sv_public + operationId: getSvOnboardingStatus + parameters: + - name: candidate_party_id_or_name + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetSvOnboardingStatusResponse' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v0/onboard/sv/party-migration/authorize: + post: + tags: + - sv + x-jvm-package: sv_public + operationId: onboardSvPartyMigrationAuthorize + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardSvPartyMigrationAuthorizeRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardSvPartyMigrationAuthorizeResponse' + '400': + description: system state not yet valid + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardSvPartyMigrationAuthorizeErrorResponse' + '401': + $ref: '#/components/responses/401' + /v0/onboard/sv/sequencer: + post: + tags: + - sv + x-jvm-package: sv_public + operationId: onboardSvSequencer + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardSvSequencerRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardSvSequencerResponse' + '400': + $ref: '#/components/responses/400' + /v0/devnet/onboard/validator/prepare: + post: + tags: + - sv + x-jvm-package: sv_public + description: faucet for validator candidates self-service + operationId: devNetOnboardValidatorPrepare + responses: + '200': + description: ok + content: + text/plain: + schema: + type: string + '500': + $ref: '#/components/responses/500' + '501': + $ref: '#/components/responses/501' + /v0/dso: + get: + tags: + - sv + x-jvm-package: sv_public + operationId: getDsoInfo + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDsoInfoResponse' + /v0/synchronizer/{domain_id_prefix}/reconcile-daml-state: + post: + tags: + - sv + x-jvm-package: sv_soft_domain_migration_poc + operationId: reconcileSynchronizerDamlState + parameters: + - name: domain_id_prefix + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + /v0/synchronizer/{domain_id_prefix}/sign_dso_party_to_participant: + post: + tags: + - sv + x-jvm-package: sv_soft_domain_migration_poc + operationId: signDsoPartyToParticipant + parameters: + - name: domain_id_prefix + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + /v0/admin/feature-support: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: featureSupport + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/FeatureSupportResponse' + '500': + $ref: '#/components/responses/500' +components: + schemas: + ListOngoingValidatorOnboardingsResponse: + type: object + required: + - ongoing_validator_onboardings + properties: + ongoing_validator_onboardings: + type: array + items: + $ref: '#/components/schemas/ValidatorOnboarding' + ValidatorOnboarding: + type: object + required: + - encoded_secret + - contract + properties: + encoded_secret: + description: | + The encoded secret in a form that can be directly used when making an onboarding request. + type: string + contract: + description: | + The contract storing the onboarding secret. + $ref: '#/components/schemas/Contract' + party_hint: + description: | + Human-readable alias of the validator party decoded from the stored secret. + type: string + PrepareValidatorOnboardingRequest: + type: object + required: + - expires_in + properties: + expires_in: + type: integer + minimum: 1 + party_hint: + description: | + Optional alias for the validator party. If provided, it is persisted in the + onboarding secret and stored in the database as the expected party identifier. + type: string + PrepareValidatorOnboardingResponse: + type: object + required: + - secret + properties: + secret: + type: string + OnboardValidatorRequest: + type: object + required: + - party_id + - secret + properties: + party_id: + type: string + secret: + type: string + version: + type: string + contact_point: + type: string + party_hint: + description: | + Alias of the validator party. + Must match the persisted value in the onboarding secret. + type: string + CometBftNodeStatusOrErrorResponse: + oneOf: + - $ref: '#/components/schemas/CometBftNodeStatusResponse' + - $ref: '#/components/schemas/ErrorResponse' + CometBftNodeStatusResponse: + type: object + required: + - id + - catching_up + - voting_power + properties: + id: + type: string + description: The node-id of the CometBFT node + catching_up: + type: boolean + description: Is the node still catching up to the other nodes in the network + voting_power: + type: number + description: The voting power assigned to the CometBFT node + CometBftNodeDumpOrErrorResponse: + oneOf: + - $ref: '#/components/schemas/CometBftNodeDumpResponse' + - $ref: '#/components/schemas/ErrorResponse' + CometBftNodeDumpResponse: + type: object + required: + - status + - network_info + - abci_info + - validators + properties: + status: + type: object + network_info: + type: object + abci_info: + type: object + validators: + type: object + CometBftJsonRpcRequestId: + oneOf: + - type: string + - type: integer + format: int64 + CometBftJsonRpcRequest: + type: object + required: + - id + - method + properties: + id: + $ref: '#/components/schemas/CometBftJsonRpcRequestId' + method: + type: string + enum: + - status + - block + - commit + - validators + - consensus_params + - consensus_state + params: + type: object + additionalProperties: true + CometBftJsonRpcOrErrorResponse: + oneOf: + - $ref: '#/components/schemas/CometBftJsonRpcResponse' + - $ref: '#/components/schemas/ErrorResponse' + CometBftJsonRpcResponse: + type: object + required: + - jsonrpc + - id + - result + properties: + jsonrpc: + type: string + id: + $ref: '#/components/schemas/CometBftJsonRpcRequestId' + result: + type: object + CreateVoteRequest: + type: object + required: + - requester + - action + - url + - description + - expiration + properties: + requester: + type: string + action: + type: object + url: + type: string + description: + type: string + expiration: + type: object + effectiveTime: + type: string + format: date-time + ListVotesResponse: + type: object + required: + - dso_rules_votes + properties: + dso_rules_votes: + type: array + items: + $ref: '#/components/schemas/Contract' + CastVoteRequest: + type: object + required: + - vote_request_contract_id + - is_accepted + - reason_url + - reason_description + properties: + vote_request_contract_id: + type: string + is_accepted: + type: boolean + reason_url: + type: string + reason_description: + type: string + ListOpenMiningRoundsResponse: + type: object + required: + - open_mining_rounds + properties: + open_mining_rounds: + type: array + items: + $ref: '#/components/schemas/Contract' + UpdateAmuletPriceVoteRequest: + type: object + required: + - amulet_price + properties: + amulet_price: + type: string + StartSvOnboardingRequest: + type: object + required: + - token + properties: + token: + type: string + BaseSvOnboardingState: + type: object + required: + - state + properties: + state: + type: string + SvOnboardingStateRequested: + allOf: + - $ref: '#/components/schemas/BaseSvOnboardingState' + - type: object + required: + - name + - contract_id + - confirmed_by + - required_num_confirmations + properties: + name: + type: string + contract_id: + type: string + description: ContractId of the SvOnboardingRequested contract + confirmed_by: + type: array + items: + type: string + required_num_confirmations: + type: integer + format: int32 + minimum: 1 + SvOnboardingStateConfirmed: + allOf: + - $ref: '#/components/schemas/BaseSvOnboardingState' + - type: object + required: + - name + - contract_id + properties: + name: + type: string + contract_id: + type: string + description: ContractId of the SvOnboardingConfirmed contract + SvOnboardingStateCompleted: + allOf: + - $ref: '#/components/schemas/BaseSvOnboardingState' + - type: object + required: + - name + - contract_id + properties: + name: + type: string + contract_id: + type: string + description: ContractId of the DsoRules contract + SvOnboardingStateUnknown: + allOf: + - $ref: '#/components/schemas/BaseSvOnboardingState' + GetSvOnboardingStatusResponse: + oneOf: + - $ref: '#/components/schemas/SvOnboardingStateRequested' + - $ref: '#/components/schemas/SvOnboardingStateConfirmed' + - $ref: '#/components/schemas/SvOnboardingStateCompleted' + - $ref: '#/components/schemas/SvOnboardingStateUnknown' + discriminator: + propertyName: state + mapping: + requested: '#/components/schemas/SvOnboardingStateRequested' + confirmed: '#/components/schemas/SvOnboardingStateConfirmed' + completed: '#/components/schemas/SvOnboardingStateCompleted' + unknown: '#/components/schemas/SvOnboardingStateUnknown' + OnboardSvPartyMigrationAuthorizeRequest: + type: object + required: + - candidate_party_id + properties: + candidate_party_id: + type: string + OnboardSvPartyMigrationAuthorizeResponse: + type: object + required: + - acs_snapshot + properties: + acs_snapshot: + type: string + OnboardSvPartyMigrationAuthorizeErrorResponse: + oneOf: + - $ref: '#/components/schemas/AcceptedStateNotFoundErrorResponse' + - $ref: '#/components/schemas/ProposalNotFoundErrorResponse' + AcceptedStateNotFoundErrorResponse: + type: object + required: + - accepted_state_not_found + properties: + accepted_state_not_found: + $ref: '#/components/schemas/ErrorResponse' + ProposalNotFoundErrorResponse: + type: object + required: + - proposal_not_found + properties: + proposal_not_found: + type: object + required: + - party_to_participant_base_serial + properties: + party_to_participant_base_serial: + type: integer + description: The serial of the party to participant accepted state as seen by the sponsor + OnboardSvSequencerRequest: + type: object + required: + - sequencer_id + properties: + sequencer_id: + type: string + OnboardSvSequencerResponse: + type: object + required: + - onboarding_state + properties: + onboarding_state: + type: string + OnboardSvMediatorRequest: + type: object + required: + - mediator_id + properties: + mediator_id: + type: string + SequencerSnapshot: + type: object + required: + - topology_snapshot + - sequencer_snapshot + properties: + topology_snapshot: + type: string + sequencer_snapshot: + type: string + TriggerAcsDumpResponse: + type: object + required: + - filename + - num_events + - offset + properties: + filename: + type: string + num_events: + type: number + offset: + type: string + GetAcsStoreDumpResponse: + type: object + required: + - offset + - contracts + properties: + offset: + type: string + contracts: + type: array + items: + $ref: '#/components/schemas/Contract' + version: + type: string + SynchronizerNodeIdentities: + type: object + required: + - sv_party_id + - dso_party_id + - domain_alias + - domain_id + - participant + - sequencer + - mediator + properties: + sv_party_id: + type: string + dso_party_id: + type: string + domain_alias: + type: string + domain_id: + type: string + participant: + $ref: '#/components/schemas/NodeIdentitiesDump' + sequencer: + $ref: '#/components/schemas/NodeIdentitiesDump' + mediator: + $ref: '#/components/schemas/NodeIdentitiesDump' + DomainDataSnapshot: + type: object + required: + - acs_snapshot + - acs_timestamp + - dars + properties: + genesis_state: + description: | + base64 encoded string of domain genesis state + type: string + acs_snapshot: + description: | + base64 encoded string of acs snapshot for the requested party id, or for the dso and sv parties by default + type: string + acs_timestamp: + type: string + dars: + type: array + items: + $ref: '#/components/schemas/Dar' + synchronizer_was_paused: + type: boolean + separate_payload_files: + type: boolean + description: | + If set to true, genesis_state and acs_snapshot are filenames + acs_format: + type: string + enum: + - admin_api + - ledger_api + Dar: + type: object + required: + - hash + - content + properties: + hash: + type: string + content: + description: | + base64 encoded string of a dar package + type: string + TriggerDomainMigrationDumpRequest: + type: object + required: + - migration_id + properties: + migration_id: + type: integer + format: int64 + timestamp: + type: string + GetDomainMigrationDumpResponse: + type: object + required: + - migration_id + - identities + - data_snapshot + - participant_users + - created_at + properties: + migration_id: + type: integer + format: int64 + identities: + $ref: '#/components/schemas/SynchronizerNodeIdentities' + data_snapshot: + $ref: '#/components/schemas/DomainDataSnapshot' + participant_users: + $ref: '#/components/schemas/ParticipantUsersData' + created_at: + type: string + GetSynchronizerNodeIdentitiesDumpResponse: + type: object + required: + - identities + properties: + identities: + $ref: '#/components/schemas/SynchronizerNodeIdentities' + GetDomainDataSnapshotResponse: + type: object + required: + - created_at + - migration_id + - data_snapshot + - participant_users + properties: + created_at: + description: | + equal to data_snapshot.acs_timestamp + type: string + migration_id: + type: integer + format: int64 + data_snapshot: + $ref: '#/components/schemas/DomainDataSnapshot' + participant_users: + $ref: '#/components/schemas/ParticipantUsersData' + Status: + type: object + required: + - id + - uptime + - ports + - active + properties: + id: + type: string + uptime: + type: string + ports: + type: object + additionalProperties: + type: integer + format: int32 + extra: + type: string + format: binary + active: + type: boolean + SuccessStatusResponse: + type: object + required: + - success + properties: + success: + $ref: '#/components/schemas/Status' + NotInitialized: + type: object + required: + - active + properties: + active: + type: boolean + NotInitializedStatusResponse: + type: object + required: + - not_initialized + properties: + not_initialized: + $ref: '#/components/schemas/NotInitialized' + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + FailureStatusResponse: + type: object + required: + - failed + properties: + failed: + $ref: '#/components/schemas/ErrorResponse' + NodeStatus: + oneOf: + - $ref: '#/components/schemas/SuccessStatusResponse' + - $ref: '#/components/schemas/NotInitializedStatusResponse' + - $ref: '#/components/schemas/FailureStatusResponse' + Version: + type: object + required: + - version + - commit_ts + properties: + version: + type: string + commit_ts: + type: string + format: date-time + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ListValidatorLicensesResponse: + type: object + required: + - validator_licenses + properties: + validator_licenses: + description: Contracts of Daml template `Splice.ValidatorLicense:ValidatorLicense`. + type: array + items: + $ref: '#/components/schemas/Contract' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as URL query parameter `after`. + If absent or `null`, there are no more pages. + KeyPair: + type: object + required: + - keyPair + properties: + keyPair: + type: string + name: + type: string + KmsKeyId: + type: object + required: + - type + - keyId + properties: + type: + type: string + enum: + - signing + - encryption + keyId: + type: string + name: + type: string + NodeKey: + oneOf: + - $ref: '#/components/schemas/KeyPair' + - $ref: '#/components/schemas/KmsKeyId' + NodeIdentitiesDump: + type: object + required: + - id + - keys + - authorizedStoreSnapshot + properties: + id: + type: string + keys: + type: array + items: + $ref: '#/components/schemas/NodeKey' + authorizedStoreSnapshot: + description: | + base64 encoded string of authorized store snapshot + type: string + version: + type: string + ParticipantIdentityProvider: + type: object + required: + - id + - isDeactivated + - jwksUrl + - issuer + - audience + properties: + id: + type: string + isDeactivated: + type: boolean + default: false + jwksUrl: + type: string + issuer: + type: string + audience: + type: string + ParticipantUserRight: + type: object + required: + - kind + properties: + kind: + type: string + enum: + - participantAdmin + - canActAs + - canReadAs + - canExecuteAs + - identityProviderAdmin + - canReadAsAnyParty + - canExecuteAsAnyParty + party: + type: string + ParticipantUserAnnotation: + type: object + required: + - key + - value + properties: + key: + type: string + value: + type: string + ParticipantUser: + type: object + required: + - id + - rights + - isDeactivated + - annotations + properties: + id: + type: string + primaryParty: + type: string + rights: + type: array + items: + $ref: '#/components/schemas/ParticipantUserRight' + isDeactivated: + type: boolean + default: false + annotations: + type: array + items: + $ref: '#/components/schemas/ParticipantUserAnnotation' + identityProviderId: + type: string + default: '' + ParticipantUsersData: + type: object + required: + - identityProviders + - users + properties: + identityProviders: + type: array + items: + $ref: '#/components/schemas/ParticipantIdentityProvider' + users: + type: array + items: + $ref: '#/components/schemas/ParticipantUser' + ListDsoRulesVoteRequestsResponse: + description: Contracts of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_requests + properties: + dso_rules_vote_requests: + type: array + items: + $ref: '#/components/schemas/Contract' + ListVoteResultsRequest: + type: object + required: + - limit + properties: + actionName: + type: string + accepted: + type: boolean + requester: + type: string + effectiveFrom: + type: string + effectiveTo: + type: string + limit: + type: integer + ListDsoRulesVoteResultsResponse: + type: object + required: + - dso_rules_vote_results + properties: + dso_rules_vote_results: + type: array + items: + type: object + LookupDsoRulesVoteRequestResponse: + description: A contract of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_request + properties: + dso_rules_vote_request: + $ref: '#/components/schemas/Contract' + BatchListVotesByVoteRequestsRequest: + type: object + required: + - vote_request_contract_ids + properties: + vote_request_contract_ids: + description: Contract IDs of Daml template `Splice.DsoRules:VoteRequest`. + type: array + items: + type: string + ListVoteRequestByTrackingCidResponse: + type: object + required: + - vote_requests + properties: + vote_requests: + description: | + Contracts of Daml template `Splice.DsoRules:VoteRequest` that match + `vote_request_contract_ids` in the request. + type: array + items: + $ref: '#/components/schemas/Contract' + ListAmuletPriceVotesResponse: + description: Contracts of Daml template `Splice.DSO:AmuletPrice:AmuletPriceVote`. + type: object + required: + - amulet_price_votes + properties: + amulet_price_votes: + type: array + items: + $ref: '#/components/schemas/Contract' + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + GetDsoInfoResponse: + type: object + required: + - sv_user + - sv_party_id + - dso_party_id + - voting_threshold + - latest_mining_round + - amulet_rules + - dso_rules + - sv_node_states + properties: + sv_user: + description: User ID representing the SV + type: string + sv_party_id: + description: Party representing the SV + type: string + dso_party_id: + description: | + Party representing the whole DSO; for Scan only, also returned by + `/v0/dso-party-id` + type: string + voting_threshold: + description: | + Threshold required to pass vote requests; also known as the + "governance threshold", it is always derived from the number of + `svs` in `dso_rules` + type: integer + latest_mining_round: + description: | + Contract of the Daml template `Splice.Round.OpenMiningRound`, the + one with the highest round number on the ledger that has been signed + by `dso_party_id`. The round may not be usable as it may not be + opened yet, in accordance with its `opensAt` template field + $ref: '#/components/schemas/ContractWithState' + amulet_rules: + description: | + Contract of the Daml template `Splice.AmuletRules.AmuletRules`, + including the full schedule of `AmuletConfig` changes approved by + the DSO. Callers should not assume that `initialValue` is up-to-date, + and should instead search `futureValues` for the latest configuration + valid as of now + $ref: '#/components/schemas/ContractWithState' + dso_rules: + description: | + Contract of the Daml template `Splice.DsoRules.DsoRules`, listing + the governance rules approved by the DSO governing this Splice network. + $ref: '#/components/schemas/ContractWithState' + sv_node_states: + description: | + For every one of `svs` listed in `dso_rules`, a contract of the Daml + template `Splice.DSO.SvState.SvNodeState`. This does not include + states for offboarded SVs, though they may still have an on-ledger + state contract + type: array + items: + $ref: '#/components/schemas/ContractWithState' + initial_round: + description: | + Initial round from which the network bootstraps + type: string + FeatureSupportResponse: + type: object + required: + - no_holding_fees_on_transfers + properties: + no_holding_fees_on_transfers: + type: boolean + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: not implemented + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.5.8/token-metadata-v1.yaml b/api-specs/splice/0.5.8/token-metadata-v1.yaml new file mode 100644 index 000000000..182a4a4e1 --- /dev/null +++ b/api-specs/splice/0.5.8/token-metadata-v1.yaml @@ -0,0 +1,182 @@ +openapi: 3.0.0 +info: + title: token metadata service + description: | + Implemented by token registries for the purpose of serving metadata about + their tokens and the standards supported by the registry. + version: 1.0.0 +paths: + /registry/metadata/v1/info: + get: + operationId: getRegistryInfo + description: | + Get information about the registry. + The response includes the standards supported by the registry. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetRegistryInfoResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /registry/metadata/v1/instruments: + get: + operationId: listInstruments + description: List all instruments managed by this instrument admin. + parameters: + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 25 + description: Number of instruments per page. + - name: pageToken + in: query + required: false + schema: + type: string + description: The `nextPageToken` received from the response for the previous page. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListInstrumentsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /registry/metadata/v1/instruments/{instrumentId}: + get: + operationId: getInstrument + description: Retrieve an instrument's metadata. + parameters: + - name: instrumentId + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Instrument' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetRegistryInfoResponse: + type: object + properties: + adminId: + description: The Daml party representing the registry app + type: string + supportedApis: + description: The token standard APIs supported by the registry. Note that this only includes the registry-wide APIs. Use the instrument lookup endpoints to see which APIs are supported for a given instrument + $ref: '#/components/schemas/SupportedApis' + required: + - adminId + - supportedApis + Instrument: + type: object + properties: + id: + description: The unique identifier assigned by the admin to the instrument. + type: string + name: + description: The display name for the instrument recommended by the instrument admin. This is not necessarily unique. + type: string + symbol: + description: The symbol for the instrument recommended by the instrument admin. This is not necessarily unique. + type: string + totalSupply: + description: Decimal encoded current total supply of the instrument. + type: string + totalSupplyAsOf: + description: The timestamp when the total supply was last computed. + type: string + format: date-time + decimals: + description: | + The number of decimal places used by the instrument. + + Must be a number between 0 and 10, as the Daml interfaces represent holding amounts as + `Decimal` values, which use 10 decimal places and are precise for 38 digits. + Setting this to 0 means that the instrument can only be held in whole units. + + This number SHOULD be used for display purposes in a wallet to decide how many + decimal places to show and accept when displaying or entering amounts. + type: integer + format: int8 + default: 10 + supportedApis: + $ref: '#/components/schemas/SupportedApis' + required: + - id + - name + - symbol + - decimals + - supportedApis + ListInstrumentsResponse: + type: object + properties: + instruments: + type: array + items: + $ref: '#/components/schemas/Instrument' + nextPageToken: + type: string + description: The token for the next page of results, to be used as the lastInstrumentId for the next page. + required: + - instruments + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + SupportedApis: + description: | + Map from token standard API name to the minor version of the API supported, e.g., + splice-api-token-metadata-v1 -> 1 where the `1` corresponds to the minor version. + type: object + additionalProperties: + type: integer + format: int32 diff --git a/api-specs/splice/0.5.8/transfer-instruction-v1.yaml b/api-specs/splice/0.5.8/transfer-instruction-v1.yaml new file mode 100644 index 000000000..81f960316 --- /dev/null +++ b/api-specs/splice/0.5.8/transfer-instruction-v1.yaml @@ -0,0 +1,264 @@ +openapi: 3.0.0 +info: + title: transfer instruction off-ledger API + description: | + Implemented by token registries for the purpose of supporting the initiation + of asset transfers; e.g. to settle off-ledger obligations. + version: 1.1.0 +paths: + /registry/transfer-instruction/v1/transfer-factory: + post: + operationId: getTransferFactory + description: | + Get the factory and choice context for executing a direct transfer. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetFactoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferFactoryWithChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/accept: + post: + operationId: getTransferInstructionAcceptContext + description: | + Get the choice context to accept a transfer instruction. + parameters: + - name: transferInstructionId + description: The contract ID of the transfer instruction to accept. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/reject: + post: + operationId: getTransferInstructionRejectContext + description: | + Get the choice context to reject a transfer instruction. + parameters: + - name: transferInstructionId + description: The contract ID of the transfer instruction to reject. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/withdraw: + post: + operationId: getTransferInstructionWithdrawContext + description: | + Get the choice context to withdraw a transfer instruction. + parameters: + - name: transferInstructionId + description: The contract ID of the transfer instruction to withdraw. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetFactoryRequest: + type: object + properties: + choiceArguments: + type: object + description: | + The arguments that are intended to be passed to the choice provided by the factory. + To avoid repeating the Daml type definitions, they are specified as JSON objects. + However the concrete format is given by how the choice arguments are encoded using the Daml JSON API + (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). + + The choice arguments are provided so that the registry can also provide choice-argument + specific contracts, e.g., the configuration for a specific instrument-id. + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + required: + - choiceArguments + GetChoiceContextRequest: + description: | + A request to get the context for executing a choice on a contract. + type: object + properties: + meta: + description: | + Metadata that will be passed to the choice, and should be incorporated + into the choice context. Provided for extensibility. + type: object + additionalProperties: + type: string + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + TransferFactoryWithChoiceContext: + description: | + The transfer factory contract together with the choice context required to exercise the choice + provided by the factory. Typically used to implement the generic initiation of on-ledger workflows + via a Daml interface. + + Clients SHOULD avoid reusing the same `FactoryWithChoiceContext` for exercising multiple choices, + as the choice context MAY be specific to the choice being exercised. + type: object + properties: + factoryId: + description: The contract ID of the contract implementing the factory interface. + type: string + transferKind: + description: | + The kind of transfer workflow that will be used: + * `offer`: offer a transfer to the receiver and only transfer if they accept + * `direct`: transfer directly to the receiver without asking them for approval. + Only chosen if the receiver has pre-approved direct transfers. + * `self`: a self-transfer where the sender and receiver are the same party. + No approval is required, and the transfer is typically immediate. + type: string + enum: + - self + - direct + - offer + choiceContext: + $ref: '#/components/schemas/ChoiceContext' + required: + - factoryId + - choiceContext + - transferKind + ChoiceContext: + description: | + The context required to exercise a choice on a contract via an interface. + Used to retrieve additional reference data that is passed in via disclosed contracts, + which are in turn referred to via their contract ID in the `choiceContextData`. + type: object + properties: + choiceContextData: + description: The additional data to use when exercising the choice. + type: object + disclosedContracts: + description: | + The contracts that are required to be disclosed to the participant node for exercising + the choice. + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + required: + - choiceContextData + - disclosedContracts + DisclosedContract: + type: object + properties: + templateId: + type: string + contractId: + type: string + createdEventBlob: + type: string + synchronizerId: + description: | + The synchronizer to which the contract is currently assigned. + If the contract is in the process of being reassigned, then a "409" response is returned. + type: string + debugPackageName: + description: | + The name of the Daml package that was used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + debugPayload: + description: | + The contract arguments that were used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: object + debugCreatedAt: + description: | + The ledger effective time at which the contract was created. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + format: date-time + required: + - templateId + - contractId + - createdEventBlob + - synchronizerId + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string diff --git a/api-specs/splice/0.5.8/validator-internal.yaml b/api-specs/splice/0.5.8/validator-internal.yaml new file mode 100644 index 000000000..f933ce788 --- /dev/null +++ b/api-specs/splice/0.5.8/validator-internal.yaml @@ -0,0 +1,1257 @@ +openapi: 3.0.0 +info: + title: Validator API + version: 0.0.1 +servers: + - url: https://example.com/api/validator +tags: + - name: validator +paths: + /readyz: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isReady + responses: + '200': + description: ok + '503': + description: service_unavailable + /livez: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isLive + responses: + '200': + description: ok + '503': + description: service_unavailable + /v0/validator-user: + get: + description: | + Get public information about the validator operator. + tags: + - validator_public + x-jvm-package: validator_public + operationId: getValidatorUserInfo + security: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetValidatorUserInfoResponse' + /v0/register: + post: + description: | + As an authenticated user, onboard yourself. + Onboarding includes allocating a ledger API user and daml party, + and setting up daml contracts required for the user to use a wallet on this validator. + + The ledger API user name is taken from the subject claim of the JWT token. + + Once this call returns a successful response, the user is fully onboarded. + Use [v0/wallet/user-status](../../../../wallet/src/main/openapi/wallet-internal.yaml#/paths/v0/wallet/user-status) + to check the status of the user onboarding. + tags: + - validator + x-jvm-package: validator + operationId: register + security: + - userAuth: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RegistrationRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/RegistrationResponse' + /v0/admin/users: + post: + description: | + As the validator operator, onboard an arbitrary user specified in the request. + Onboarding includes allocating a ledger API user and daml party, + and setting up daml contracts required for the user to use a wallet on this validator. + + Once this call returns a successful response, the user is fully onboarded. + Use [v0/wallet/user-status](../../../../wallet/src/main/openapi/wallet-internal.yaml#/paths/v0/wallet/user-status) + to check the status of the user onboarding. + tags: + - validator + x-jvm-package: validator_admin + operationId: onboardUser + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardUserRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardUserResponse' + get: + description: | + Lists all users onboarded onto this validator. + tags: + - validator + x-jvm-package: validator_admin + operationId: listUsers + security: + - adminAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersResponse' + /v0/admin/users/offboard: + post: + description: | + As the validator operator, offboard the user specified in the request. + Offboarding archives the daml contracts required for the user to use a wallet on this validator. + Offboarding deletes the ledger API user. + Offboarding does not archive any other daml contracts owned by the user. + tags: + - validator + x-jvm-package: validator_admin + operationId: offboardUser + security: + - adminAuth: [] + parameters: + - in: query + name: username + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + /v0/admin/participant/identities: + get: + description: | + Returns a dump of participant identities. + + Use this endpoint if instructed to do so by an operational manual or support. + tags: + - validator + x-jvm-package: validator_admin + operationId: dumpParticipantIdentities + security: + - adminAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/NodeIdentitiesDump' + /v0/admin/participant/global-domain-connection-config: + get: + description: | + Returns the connection configuration for the global synchronizer. + + Use this endpoint if instructed to do so by an operational manual or support. + tags: + - validator + x-jvm-package: validator_admin + operationId: getDecentralizedSynchronizerConnectionConfig + security: + - adminAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDecentralizedSynchronizerConnectionConfigResponse' + /v0/admin/domain/data-snapshot: + get: + description: | + Returns a snapshot of the global synchronizer data for this validator. + The snapshot includes a list of parties, the active contract set (ACS), and node identities. + + Use this endpoint if instructed to do so by an operational manual or support. + tags: + - validator + x-jvm-package: validator_admin + operationId: getValidatorDomainDataSnapshot + security: + - adminAuth: [] + parameters: + - in: query + name: timestamp + required: true + schema: + type: string + description: | + The timestamp as of which the dump (in particular, the ACS) is valid. + + Must in the ISO-8601 format in UTC timezone, e.g., + `yyyy-MM-dd'T'HH:mm:ss.SSS'Z'`. + - name: migration_id + in: query + required: false + schema: + type: integer + format: int64 + description: | + The current migration id. + - in: query + name: force + required: false + schema: + type: boolean + description: | + If true, do not check whether the provided timestamp is clean. + Not recommended for production, + see the `ExportAcs` endpoint of the `ParticipantRepairService` participant gRPC API. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetValidatorDomainDataSnapshotResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/transfer-preapprovals/by-party/{receiver-party}: + get: + description: | + Lookup the `Splice.AmuletRules.TransferPreapproval` contract for the given receiver party. + tags: + - validator + x-jvm-package: validator_admin + operationId: lookupTransferPreapprovalByParty + security: + - adminAuth: [] + parameters: + - in: path + name: receiver-party + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferPreapprovalByPartyResponse' + '404': + $ref: '#/components/responses/404' + delete: + description: | + Remove the `Splice.AmuletRules.TransferPreapproval` contract for the given receiver party. + tags: + - validator + x-jvm-package: validator_admin + operationId: cancelTransferPreapprovalByParty + security: + - adminAuth: [] + parameters: + - in: path + name: receiver-party + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + /v0/admin/transfer-preapprovals: + get: + description: | + List all `Splice.AmuletRules.TransferPreapproval` contracts where the preapproval provider is the validator operator. + tags: + - validator + x-jvm-package: validator_admin + operationId: listTransferPreapprovals + security: + - adminAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListTransferPreapprovalsResponse' + /v0/admin/external-party/transfer-preapproval/prepare-send: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: prepareTransferPreapprovalSend + description: | + 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. + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareTransferPreapprovalSendRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareTransferPreapprovalSendResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/transfer-preapproval/submit-send: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: submitTransferPreapprovalSend + description: | + 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: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitTransferPreapprovalSendRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitTransferPreapprovalSendResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/topology/generate: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: generateExternalPartyTopology + description: | + Creates a root namespace topology transaction, which will create the party and sets the public key + controlling the party namespace, + a party to participant mapping topology transaction, which hosts the party on the participant with Confirmation rights, + and a party to key mapping topology transaction, which sets the key to authorize daml transactions. + The hash of each of these transactions will be signed along with the corresponding topology transaction (unchanged) + in the /v0/admin/external-party/topology/submit endpoint + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateExternalPartyTopologyRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateExternalPartyTopologyResponse' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/topology/submit: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: submitExternalPartyTopology + description: | + Constructs a SignedTopologyTransaction and writes the topology transactions to the authorized store. + The input will consist of the unchanged topology transaction and the signed hash from the /v0/external-party-topology/generate endpoint + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitExternalPartyTopologyRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitExternalPartyTopologyResponse' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/setup-proposal: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: createExternalPartySetupProposal + description: | + Create the ExternalPartySetupProposal contract as the validator operator + which then has to be accepted by the external party using /v0/admin/external-party/setup-proposal/prepare-accept + and /v0/admin/external-party/setup-proposal/submit-accept + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateExternalPartySetupProposalRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/CreateExternalPartySetupProposalResponse' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' + '501': + $ref: '#/components/responses/501' + get: + tags: + - validator + x-jvm-package: validator_admin + operationId: listExternalPartySetupProposals + description: | + List all ExternalPartySetupProposal contracts. + security: + - adminAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListExternalPartySetupProposalsResponse' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/setup-proposal/prepare-accept: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: prepareAcceptExternalPartySetupProposal + description: | + Given a contract id of an ExternalPartySetupProposal, prepare the transaction + to accept it such that it can be signed externally and then submitted using + /v0/admin/external-party/setup-proposal/submit-accept + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareAcceptExternalPartySetupProposalRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareAcceptExternalPartySetupProposalResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/setup-proposal/submit-accept: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: submitAcceptExternalPartySetupProposal + description: | + Submit a transaction prepared using /v0/admin/external-party/setup-proposal/prepare-accept + together with its signature. + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitAcceptExternalPartySetupProposalRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitAcceptExternalPartySetupProposalResponse' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/balance: + get: + tags: + - validator + x-jvm-package: validator_admin + operationId: getExternalPartyBalance + description: | + Get the balance of an external party. + security: + - adminAuth: [] + parameters: + - in: query + name: party_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ExternalPartyBalanceResponse' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' +components: + securitySchemes: + userAuth: + description: | + JWT token as described in [spliceAppBearerAuth](../../../../common/src/main/openapi/common-external.yaml#/components/securitySchemes/spliceAppBearerAuth). + The subject of the token must be ledger API user of the user affected by the endpoint. + type: http + scheme: bearer + bearerFormat: JWT + adminAuth: + description: | + JWT token as described in [spliceAppBearerAuth](../../../../common/src/main/openapi/common-external.yaml#/components/securitySchemes/spliceAppBearerAuth). + The subject of the token must be ledger API user of the validator operator. + type: http + scheme: bearer + bearerFormat: JWT + schemas: + OnboardUserRequest: + type: object + required: + - name + properties: + name: + type: string + description: The name of the user to onboard. + party_id: + type: string + description: | + The party id of the user to onboard. + If no party_id is provided then a fresh party will be generated, using the 'name' as the Party Hint. + If party_id is provided and createPartyIfMissing is false, then the party must already exist on the ledger. The existing party will be assigned to the user. + If party_id is provided and createPartyIfMissing is true, then: if a party with the provided party_id exists, the user will be associated with it. Otherwise, a new party will be created using the provided party_id, and the user will be associated with that new party. + createPartyIfMissing: + type: boolean + description: | + If true, create the party if it does not already exist on the ledger. + Default is 'false'. + OnboardUserResponse: + type: object + required: + - party_id + properties: + party_id: + type: string + description: | + The daml party id of the user that was onboarded. + GenerateExternalPartyTopologyRequest: + type: object + required: + - party_hint + - public_key + properties: + party_hint: + description: | + The actual party id will be constructed from this hint and a fingerprint of the public key. + type: string + public_key: + description: hex-encoded ed25519 public key + type: string + GenerateExternalPartyTopologyResponse: + type: object + required: + - party_id + - topology_txs + properties: + party_id: + type: string + description: | + The generated party id of the external user. + topology_txs: + type: array + items: + $ref: '#/components/schemas/TopologyTx' + TopologyTx: + type: object + required: + - topology_tx + - hash + properties: + topology_tx: + description: base64 encoded topology transaction + type: string + hash: + description: hex-encoded hash of the topology transaction + type: string + SubmitExternalPartyTopologyRequest: + type: object + required: + - signed_topology_txs + - public_key + properties: + public_key: + description: hex-encoded ed25519 public key + type: string + signed_topology_txs: + type: array + items: + $ref: '#/components/schemas/SignedTopologyTx' + SubmitExternalPartyTopologyResponse: + type: object + required: + - party_id + properties: + party_id: + type: string + SignedTopologyTx: + type: object + required: + - topology_tx + - signed_hash + properties: + topology_tx: + description: | + base64 encoded topology transaction, this should be identical to the topology transaction + received from the /v0/external-party-topology/generate endpoint. + type: string + signed_hash: + description: | + hex-encoded ed25519 signature of the hash return by the generate endpoint in the form + `${r}${s}`. + type: string + RegistrationRequest: + type: object + nullable: true + RegistrationResponse: + type: object + required: + - party_id + properties: + party_id: + type: string + description: | + The party id of the user that was onboarded. + GetValidatorUserInfoResponse: + type: object + required: + - party_id + - user_name + - featured + properties: + party_id: + type: string + description: | + The daml party id of the validator operator. + user_name: + type: string + description: | + The ledger API user of the validator operator. + featured: + type: boolean + GetDecentralizedSynchronizerConnectionConfigResponse: + type: object + required: + - sequencer_connections + properties: + sequencer_connections: + $ref: '#/components/schemas/SequencerConnections' + ListUsersResponse: + type: object + required: + - usernames + properties: + usernames: + type: array + items: + type: string + SequencerConnections: + type: object + required: + - connections + - sequencer_trust_threshold + - submission_request_amplification + - sequencer_liveness_margin + properties: + connections: + type: array + items: + $ref: '#/components/schemas/SequencerAliasToConnections' + sequencer_trust_threshold: + type: integer + format: int32 + sequencer_liveness_margin: + type: integer + format: int32 + submission_request_amplification: + $ref: '#/components/schemas/SequencerSubmissionRequestAmplification' + SequencerAliasToConnections: + type: object + required: + - sequencer_alias + - endpoints + - transport_security + properties: + sequencer_alias: + type: string + endpoints: + type: array + items: + type: string + transport_security: + type: boolean + Dar: + type: object + required: + - hash + - content + properties: + hash: + type: string + content: + description: | + base64 encoded string of a dar package + type: string + DomainMigrationDump: + type: object + required: + - participant + - participant_users + - acs_snapshot + - acs_timestamp + - dars + - migration_id + - domain_id + - created_at + properties: + participant: + $ref: '#/components/schemas/NodeIdentitiesDump' + participant_users: + $ref: '#/components/schemas/ParticipantUsersData' + acs_snapshot: + description: | + base64 encoded string of acs snapshot for the requested party id + type: string + acs_timestamp: + type: string + dars: + type: array + items: + $ref: '#/components/schemas/Dar' + migration_id: + type: integer + format: int64 + domain_id: + type: string + created_at: + type: string + synchronizer_was_paused: + type: boolean + separate_payload_files: + type: boolean + description: | + If set to true, acs_snapshot is a filename + acs_format: + type: string + enum: + - admin_api + - ledger_api + GetValidatorDomainDataSnapshotResponse: + type: object + required: + - data_snapshot + - migration_id + properties: + data_snapshot: + $ref: '#/components/schemas/DomainMigrationDump' + migration_id: + type: integer + format: int64 + SequencerSubmissionRequestAmplification: + type: object + required: + - factor + - patience_seconds + properties: + factor: + type: number + patience_seconds: + type: number + CreateExternalPartySetupProposalRequest: + type: object + required: + - user_party_id + properties: + user_party_id: + type: string + CreateExternalPartySetupProposalResponse: + type: object + required: + - contract_id + properties: + contract_id: + $ref: '#/components/schemas/ContractId' + ListExternalPartySetupProposalsResponse: + type: object + required: + - contracts + properties: + contracts: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + PrepareAcceptExternalPartySetupProposalRequest: + type: object + required: + - contract_id + - user_party_id + properties: + contract_id: + $ref: '#/components/schemas/ContractId' + user_party_id: + type: string + verbose_hashing: + type: boolean + description: | + When true, the response will contain additional details on how the transaction was encoded and hashed. + This can be useful for troubleshooting of hash mismatches. Should only be used for debugging. + default: false + PrepareAcceptExternalPartySetupProposalResponse: + type: object + required: + - transaction + - tx_hash + properties: + transaction: + type: string + description: | + base64-encoded transaction. The transaction corresponds to + the protobuf definition of a `PreparedTransaction` + https://github.com/digital-asset/canton/blob/main/community/ledger-api/src/main/protobuf/com/daml/ledger/api/v2/interactive_submission_data.proto#L18 + and can be decoded using standard protobuf libraries. + tx_hash: + description: Hex-encoded hash of the transaction + type: string + hashing_details: + description: | + Optional additional details on how the transaction was encoded and hashed. Only set if verbose_hashing=true in the request. + Note that there are no guarantees on the stability of the format or content of this field. + Its content should NOT be parsed and should only be used for troubleshooting purposes. + type: string + SubmitAcceptExternalPartySetupProposalRequest: + type: object + required: + - submission + properties: + submission: + $ref: '#/components/schemas/ExternalPartySubmission' + SubmitAcceptExternalPartySetupProposalResponse: + type: object + required: + - transfer_preapproval_contract_id + - update_id + properties: + transfer_preapproval_contract_id: + $ref: '#/components/schemas/ContractId' + update_id: + type: string + ExternalPartyBalanceResponse: + type: object + required: + - party_id + - total_unlocked_coin + - total_locked_coin + - total_coin_holdings + - accumulated_holding_fees_unlocked + - accumulated_holding_fees_locked + - accumulated_holding_fees_total + - total_available_coin + - computed_as_of_round + properties: + party_id: + type: string + total_unlocked_coin: + type: string + total_locked_coin: + type: string + total_coin_holdings: + type: string + accumulated_holding_fees_unlocked: + type: string + accumulated_holding_fees_locked: + type: string + accumulated_holding_fees_total: + type: string + total_available_coin: + type: string + computed_as_of_round: + type: integer + format: int64 + ListTransferPreapprovalsResponse: + type: object + required: + - contracts + properties: + contracts: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + LookupTransferPreapprovalByPartyResponse: + type: object + required: + - transfer_preapproval + properties: + transfer_preapproval: + $ref: '#/components/schemas/ContractWithState' + PrepareTransferPreapprovalSendRequest: + type: object + required: + - sender_party_id + - receiver_party_id + - amount + - expires_at + - nonce + properties: + sender_party_id: + type: string + receiver_party_id: + type: string + amount: + type: number + expires_at: + type: string + format: date-time + nonce: + type: integer + format: int64 + description: | + The expected value of the counter that is used to order and deduplicate TransferCommands. Starts at 0 and increases + by 1 for each executed TransferCommand (independent of whether is succeeded or not). The most recent value can be read from scan + through /v0/transfer-command-counter/{party} + verbose_hashing: + type: boolean + description: | + When true, the response will contain additional details on how the transaction was encoded and hashed. + This can be useful for troubleshooting of hash mismatches. Should only be used for debugging. + default: false + description: + type: string + PrepareTransferPreapprovalSendResponse: + type: object + required: + - transaction + - tx_hash + - transfer_command_contract_id_prefix + properties: + transaction: + type: string + description: | + base64-encoded transaction. The transaction corresponds to + the protobuf definition of a `PreparedTransaction` + https://github.com/digital-asset/canton/blob/main/community/ledger-api/src/main/protobuf/com/daml/ledger/api/v2/interactive_submission_data.proto#L18 + and can be decoded using standard protobuf libraries. + tx_hash: + description: Hex-encoded hash of the transaction + type: string + transfer_command_contract_id_prefix: + description: | + Prefix of the ContractId of the created TransferCommand. Matches the contract id of the corresponding `Create` node in the prepared transaction which + also only contains the prefix. The final transaction observed on the update stream or in the result of looking up the transfer command status on Scan + adds an additional suffix to the contract id. + type: string + hashing_details: + description: | + Optional additional details on how the transaction was encoded and hashed. Only set if verbose_hashing=true in the request. + Note that there are no guarantees on the stability of the format or content of this field. + Its content should NOT be parsed and should only be used for troubleshooting purposes. + type: string + SubmitTransferPreapprovalSendRequest: + type: object + required: + - submission + properties: + submission: + $ref: '#/components/schemas/ExternalPartySubmission' + SubmitTransferPreapprovalSendResponse: + type: object + required: + - update_id + properties: + update_id: + type: string + ExternalPartySubmission: + type: object + required: + - party_id + - transaction + - signed_tx_hash + - public_key + properties: + party_id: + type: string + transaction: + type: string + description: | + base64-encoded transaction. The transaction corresponds to + the protobuf definition of a `PreparedTransaction` + https://github.com/digital-asset/canton/blob/main/community/ledger-api/src/main/protobuf/com/daml/ledger/api/v2/interactive_submission_data.proto#L18 + and can be decoded using standard protobuf libraries. + signed_tx_hash: + description: | + hex-encoded ed25519 signature of the hash return by the prepare endpoint in the form + `${r}${s}`. + type: string + public_key: + description: hex-encoded ed25519 public key + type: string + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + KeyPair: + type: object + required: + - keyPair + properties: + keyPair: + type: string + name: + type: string + KmsKeyId: + type: object + required: + - type + - keyId + properties: + type: + type: string + enum: + - signing + - encryption + keyId: + type: string + name: + type: string + NodeKey: + oneOf: + - $ref: '#/components/schemas/KeyPair' + - $ref: '#/components/schemas/KmsKeyId' + NodeIdentitiesDump: + type: object + required: + - id + - keys + - authorizedStoreSnapshot + properties: + id: + type: string + keys: + type: array + items: + $ref: '#/components/schemas/NodeKey' + authorizedStoreSnapshot: + description: | + base64 encoded string of authorized store snapshot + type: string + version: + type: string + ParticipantIdentityProvider: + type: object + required: + - id + - isDeactivated + - jwksUrl + - issuer + - audience + properties: + id: + type: string + isDeactivated: + type: boolean + default: false + jwksUrl: + type: string + issuer: + type: string + audience: + type: string + ParticipantUserRight: + type: object + required: + - kind + properties: + kind: + type: string + enum: + - participantAdmin + - canActAs + - canReadAs + - canExecuteAs + - identityProviderAdmin + - canReadAsAnyParty + - canExecuteAsAnyParty + party: + type: string + ParticipantUserAnnotation: + type: object + required: + - key + - value + properties: + key: + type: string + value: + type: string + ParticipantUser: + type: object + required: + - id + - rights + - isDeactivated + - annotations + properties: + id: + type: string + primaryParty: + type: string + rights: + type: array + items: + $ref: '#/components/schemas/ParticipantUserRight' + isDeactivated: + type: boolean + default: false + annotations: + type: array + items: + $ref: '#/components/schemas/ParticipantUserAnnotation' + identityProviderId: + type: string + default: '' + ParticipantUsersData: + type: object + required: + - identityProviders + - users + properties: + identityProviders: + type: array + items: + $ref: '#/components/schemas/ParticipantIdentityProvider' + users: + type: array + items: + $ref: '#/components/schemas/ParticipantUser' + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + ContractId: + type: string + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: not implemented + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.5.8/wallet-external.yaml b/api-specs/splice/0.5.8/wallet-external.yaml new file mode 100644 index 000000000..8b823b144 --- /dev/null +++ b/api-specs/splice/0.5.8/wallet-external.yaml @@ -0,0 +1,519 @@ +openapi: 3.0.0 +info: + title: Wallet API + version: 0.0.1 +servers: + - url: https://example.com/api/validator +tags: + - name: wallet +paths: + /v0/wallet/transfer-offers: + post: + description: | + Create an offer to directly transfer a given amount of Amulet to another party. + Direct transfers are a three-step process: + 1. The sender creates a transfer offer + 2. The receiver accepts the offer + 3. The sender's wallet automation consumes the accepted offer and transfers the amount. + Amulets are not locked for direct transfers. + If the sender's wallet does not have enough Amulet to fulfill the offer at this point, + the transfer will fail. + tags: + - wallet + x-jvm-package: external.wallet + operationId: createTransferOffer + security: + - walletUserAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTransferOfferRequest' + responses: + '200': + description: The transfer offer has been created. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTransferOfferResponse' + '400': + description: | + Invalid request, check the error response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + The submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: A transfer offer with the same tracking id has been created. Check the status endpoint for the current status. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A transfer offer with the same tracking id is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + get: + description: List all open transfer offers where the user is either sender or receiver. + tags: + - wallet + x-jvm-package: external.wallet + operationId: listTransferOffers + security: + - walletUserAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListTransferOffersResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/transfer-offers/{tracking_id}/status: + post: + description: | + Check the status of a transfer offer with a given tracking id. + tags: + - wallet + x-jvm-package: external.wallet + operationId: getTransferOfferStatus + security: + - walletUserAuth: [] + parameters: + - in: path + name: tracking_id + required: true + schema: + type: string + responses: + '200': + description: An offer with this tracking id is known. Check the response for its status. + content: + application/json: + schema: + $ref: '#/components/schemas/GetTransferOfferStatusResponse' + '404': + description: | + No offer with this tracking id is known. + Perhaps it has not yet been submitted or processed; or it has been submitted + in the past before the current beginning of the wallet transaction log. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/wallet/buy-traffic-requests: + post: + description: Create a request to buy traffic. Note that this only creates the request to do so. Refer to the status endpoint to check if the request succeeded. + tags: + - wallet + x-jvm-package: external.wallet + operationId: createBuyTrafficRequest + security: + - walletUserAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateBuyTrafficRequest' + responses: + '200': + description: Request to buy traffic got created + content: + application/json: + schema: + $ref: '#/components/schemas/CreateBuyTrafficRequestResponse' + '400': + description: Request was invalid, adjust parameters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: A request to buy traffic with the same tracking id has been created. Check the status endpoint for the current status. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A request to buy traffic with the same tracking id is currently being processed. Check the status endpoint and resubmit if it returns 404. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal server error that requires operator investigation. Retrying for a small number of times with exponential back-off MAY work. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/wallet/buy-traffic-requests/{tracking_id}/status: + post: + description: | + Check the status of a buy traffic request with a given tracking id. + tags: + - wallet + x-jvm-package: external.wallet + operationId: getBuyTrafficRequestStatus + security: + - walletUserAuth: [] + parameters: + - in: path + name: tracking_id + required: true + schema: + type: string + responses: + '200': + description: A request to buy traffic with this tracking id has been submitted before, check the response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/GetBuyTrafficRequestStatusResponse' + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: No request with this tracking id was found. +components: + securitySchemes: + walletUserAuth: + description: | + JWT token as described in [spliceAppBearerAuth]("../../../../common/src/main/openapi/common-external.yaml#/components/securitySchemes/spliceAppBearerAuth"). + The subject of the token must be ledger API user of the user whose wallet the endpoint affects. + type: http + scheme: bearer + bearerFormat: JWT + schemas: + CreateTransferOfferRequest: + type: object + required: + - receiver_party_id + - amount + - description + - expires_at + - tracking_id + properties: + receiver_party_id: + description: | + The party id of the receiver. + type: string + amount: + description: | + The amount of Amulet to transfer. + type: string + description: + description: | + An arbitrary, user chosen text. + This should be a human readable string that describes the purpose of the transfer. + It will be shown to the receiver when they decide whether to accept the offer. + type: string + expires_at: + description: | + Expiry time of the transfer offer as unix timestamp in microseconds. After this time, the offer can no longer be accepted + and automation in the wallet will eventually expire the transfer offer. + Note that this time is compared against the ledger effective time of the Daml transaction accepting or expiring an offer, and can skew from the wall clock + time measured on the caller's machine. See https://docs.daml.com/concepts/time.html + for how ledger effective time is bound to the record time of a transaction on a domain. + type: integer + format: int64 + tracking_id: + description: | + Tracking id to support exactly once submission. Once submitted, all successive calls with the same tracking id + will get rejected with a 409 or 429 status code unless the command fails and the offer did not get created. + Clients should create a fresh tracking id when they try to create a new transfer offer. If that command submission fails + with a retryable error or the application crashed and got restarted, successive command submissions must reuse the same + tracking id to ensure they don't create the same offer multiple times. + type: string + BaseGetTransferOfferStatusResponse: + type: object + required: + - status + properties: + status: + type: string + description: | + The status of the transfer offer. + created: + The offer has been created and is waiting for the receiver to accept it. + contract_id points to the contract_id of the offer and transaction_id to the transaction that created it. + accepted: + The offer has been accepted by the receiver and is waiting for the wallet automation + to complete it by delivering the offered Amulet. + contract_id points to the contract id of the accepted offer and transaction_id to the transaction that accepted it + completed: + The transfer has been completed and the CC amount has been transferred to the receiver. + contract_id points to the contract id of the created amulet for the receiver and + transaction_id to the transaction of the transfer. + failed: + The transfer has failed permanently and no CC has been transferred. Refer to + failure_reason for details. A new transfer offer can be created with a different tracking_id. + TransferOfferCreatedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetTransferOfferStatusResponse' + - type: object + required: + - transaction_id + - contract_id + properties: + transaction_id: + type: string + description: | + Id of the transaction that created the transfer offer + contract_id: + type: string + description: | + Contract id of the created transfer offer + TransferOfferAcceptedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetTransferOfferStatusResponse' + - type: object + required: + - transaction_id + - contract_id + properties: + transaction_id: + type: string + description: | + Id of the transaction that accepted the transfer offer + contract_id: + type: string + description: | + Contract id of the accepted transfer offer + TransferOfferCompletedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetTransferOfferStatusResponse' + - type: object + required: + - transaction_id + - contract_id + properties: + transaction_id: + type: string + description: | + Id of the transaction of the transfer + contract_id: + type: string + description: | + Contract id of the created amulet for the receiver + TransferOfferFailedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetTransferOfferStatusResponse' + - type: object + required: + - failure_kind + properties: + failure_kind: + type: string + description: | + The reason for the failure of the transfer offer. + expired: + The transfer offer or the accepted transfer offer expired before it could be completed. + rejected: + The receiver rejected the transfer offer or withdrew their accepted offer. + withdrawn: + The sender withdraw their offer, e.g., due to insufficient funds or operational reasons. + enum: + - expired + - rejected + - withdrawn + withdrawn_reason: + type: string + description: | + Human readable description of the reason for the sender withdrawing their offer. + GetTransferOfferStatusResponse: + oneOf: + - $ref: '#/components/schemas/TransferOfferCreatedResponse' + - $ref: '#/components/schemas/TransferOfferAcceptedResponse' + - $ref: '#/components/schemas/TransferOfferCompletedResponse' + - $ref: '#/components/schemas/TransferOfferFailedResponse' + discriminator: + propertyName: status + mapping: + created: '#/components/schemas/TransferOfferCreatedResponse' + accepted: '#/components/schemas/TransferOfferAcceptedResponse' + completed: '#/components/schemas/TransferOfferCompletedResponse' + failed: '#/components/schemas/TransferOfferFailedResponse' + CreateTransferOfferResponse: + type: object + required: + - offer_contract_id + properties: + offer_contract_id: + type: string + ListTransferOffersResponse: + type: object + required: + - offers + properties: + offers: + type: array + items: + $ref: '#/components/schemas/Contract' + CreateBuyTrafficRequest: + type: object + required: + - receiving_validator_party_id + - domain_id + - traffic_amount + - tracking_id + - expires_at + properties: + receiving_validator_party_id: + description: | + Traffic will be purchased for the validator hosting this party. + If the party is hosted on multiple participants, the request will fail with 400 Bad Request. + type: string + domain_id: + description: | + The domain to purchase traffic for. + type: string + traffic_amount: + description: | + traffic to purchase in bytes. + type: integer + format: int64 + tracking_id: + description: | + Tracking id to support exactly once submission. Once submitted, all succeessive calls with the same tracking id + will get rejected with a 409 or 429 status code unless the command fails and the traffic did not get purchased. + Clients should create a fresh tracking id when they try to send a new request to buy traffic. If that command submission fails + with a retryable error or the application crashed and got restarted, successive command submissions must reuse the same + tracking id to ensure they don't purchase traffic multiple times. + type: string + expires_at: + description: | + Expiry time of the request to buy traffic as unix timestamp in microseconds. If the request does not + succeed before this time, the wallet automation will reject and expire it. + Note that this time is compared against the ledger effective time of the Daml transaction accepting or expiring an offer, and can skew from the wall clock + time measured on the caller's machine. See https://docs.daml.com/concepts/time.html + for how ledger effective time is bound to the record time of a transaction on a domain. + type: integer + format: int64 + CreateBuyTrafficRequestResponse: + type: object + required: + - request_contract_id + properties: + request_contract_id: + type: string + BaseGetBuyTrafficRequestStatusResponse: + type: object + required: + - status + properties: + status: + type: string + description: | + The status of the traffic request + created: + The request to buy traffic has been created and is waiting for + the wallet automation to pick it up. + completed: + The traffic has been purchased. + transaction_id points to the transaction that purchased traffic. + failed: + The request to buy traffic has failed permanently and no CC has been transferred. Refer to + failure_reason for details. Use a new tracking_id if you want to retry buying traffic. + BuyTrafficRequestCreatedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetBuyTrafficRequestStatusResponse' + BuyTrafficRequestCompletedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetBuyTrafficRequestStatusResponse' + - type: object + required: + - transaction_id + properties: + transaction_id: + type: string + description: | + Id of the transaction that purchased traffic. + BuyTrafficRequestFailedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetBuyTrafficRequestStatusResponse' + - type: object + required: + - failure_reason + properties: + failure_reason: + type: string + description: | + The reason for the failure of the request to buy traffic. + expired: + The wallet automation did not process the request in time. + rejected: + The wallet automation rejected the request, e.g., due to insufficient funds or operational reasons. + enum: + - expired + - rejected + rejection_reason: + description: | + Human readable description of the rejection reason. + type: string + GetBuyTrafficRequestStatusResponse: + oneOf: + - $ref: '#/components/schemas/BuyTrafficRequestCreatedResponse' + - $ref: '#/components/schemas/BuyTrafficRequestCompletedResponse' + - $ref: '#/components/schemas/BuyTrafficRequestFailedResponse' + discriminator: + propertyName: status + mapping: + created: '#/components/schemas/BuyTrafficRequestCreatedResponse' + completed: '#/components/schemas/BuyTrafficRequestCompletedResponse' + failed: '#/components/schemas/BuyTrafficRequestFailedResponse' + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + responses: + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.5.8/wallet-internal.yaml b/api-specs/splice/0.5.8/wallet-internal.yaml new file mode 100644 index 000000000..2f194ca36 --- /dev/null +++ b/api-specs/splice/0.5.8/wallet-internal.yaml @@ -0,0 +1,1640 @@ +openapi: 3.0.0 +info: + title: Wallet API + version: 0.0.1 +servers: + - url: https://example.com/api/validator +tags: + - name: wallet +paths: + /v0/wallet/user-status: + get: + tags: + - wallet + x-jvm-package: status.wallet + operationId: userStatus + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UserStatusResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/amulets: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: list + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/tap: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: tap + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TapRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TapResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '503': + $ref: '#/components/responses/503' + /v0/wallet/self-grant-feature-app-right: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: selfGrantFeatureAppRight + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SelfGrantFeaturedAppRightRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SelfGrantFeaturedAppRightResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/balance: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: getBalance + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetBalanceResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/app-payment-requests: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAppPaymentRequests + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAppPaymentRequestsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/app-payment-requests/{contract_id}: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: getAppPaymentRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ContractWithState' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/app-payment-requests/{contract_id}/accept: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: acceptAppPaymentRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptAppPaymentRequestResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '503': + $ref: '#/components/responses/503' + /v0/wallet/app-payment-requests/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectAppPaymentRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/accepted-app-payments: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAcceptedAppPayments + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAcceptedAppPaymentsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/subscription-requests: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listSubscriptionRequests + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSubscriptionRequestsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/subscription-initial-payments: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listSubscriptionInitialPayments + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSubscriptionInitialPaymentsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/subscriptions: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listSubscriptions + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSubscriptionsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/subscription-requests/{contract_id}/accept: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: acceptSubscriptionRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptSubscriptionRequestResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '503': + $ref: '#/components/responses/503' + /v0/wallet/subscription-requests/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectSubscriptionRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/subscription-requests/{contract_id}: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: getSubscriptionRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Contract' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + delete: + tags: + - wallet + x-jvm-package: wallet + operationId: cancelSubscriptionRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/transfer-offers/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectTransferOffer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/transfer-offers/{contract_id}/accept: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: acceptTransferOffer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptTransferOfferResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/transfer-offers/{contract_id}/withdraw: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: withdrawTransferOffer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/accepted-transfer-offers: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAcceptedTransferOffers + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAcceptedTransferOffersResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/app-reward-coupons: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAppRewardCoupons + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAppRewardCouponsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/validator-reward-coupons: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listValidatorRewardCoupons + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListValidatorRewardCouponsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/validator-faucet-coupons: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listValidatorFaucetCoupons + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListValidatorFaucetCouponsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/validator-liveness-activity-records: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listValidatorLivenessActivityRecords + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListValidatorLivenessActivityRecordsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/sv-reward-coupons: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listSvRewardCoupons + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSvRewardCouponsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/cancel-featured-app-rights: + delete: + tags: + - wallet + x-jvm-package: wallet + operationId: cancelFeaturedAppRights + responses: + '200': + description: ok + '500': + $ref: '#/components/responses/500' + /v0/wallet/transactions: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: listTransactions + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListTransactionsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListTransactionsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/transfer-preapproval: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: createTransferPreapproval + responses: + '200': + description: Transfer preapproval was created + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTransferPreapprovalResponse' + '409': + description: Transfer preapproval already exists + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTransferPreapprovalResponse' + '429': + description: Request to create transfer pre-approval is currently being processed, which may or may not succeed. Retry submitting the request with exponential backoff. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/wallet/transfer-preapproval/send: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: transferPreapprovalSend + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TransferPreapprovalSendRequest' + responses: + '200': + description: ok + /v0/wallet/token-standard/transfers: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: createTokenStandardTransfer + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTokenStandardTransferRequest' + responses: + '200': + description: The transfer has been created + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '400': + description: | + Invalid request, check the error response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + The submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: A transfer with the same tracking id has been created. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A transfer with the same tracking id is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + get: + description: List all open transfers where the user is either sender or receiver. + tags: + - wallet + x-jvm-package: wallet + operationId: listTokenStandardTransfers + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListTokenStandardTransfersResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/token-standard/transfers/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectTokenStandardTransfer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/token-standard/transfers/{contract_id}/accept: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: acceptTokenStandardTransfer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/token-standard/transfers/{contract_id}/withdraw: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: withdrawTokenStandardTransfer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/token-standard/allocation-requests: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAllocationRequests + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAllocationRequestsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/token-standard/allocation-requests/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectAllocationRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: The AllocationRequest has been rejected + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceExecutionMetadata' + '404': + description: | + The AllocationRequest or the submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A reject for the AllocationRequest is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/feature-support: + get: + tags: + - wallet + x-jvm-package: status.wallet + operationId: featureSupport + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/WalletFeatureSupportResponse' + '500': + $ref: '#/components/responses/500' + /v0/allocations: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAmuletAllocations + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAllocationsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + post: + tags: + - wallet + x-jvm-package: wallet + operationId: allocateAmulet + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateAmuletRequest' + responses: + '200': + description: The AmuletAllocation has been created + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateAmuletResponse' + '400': + description: | + Invalid request, check the error response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + The submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: A transfer with the same tracking id has been created. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A transfer with the same tracking id is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/allocations/{contract_id}/withdraw: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: withdrawAmuletAllocation + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: The AmuletAllocation has been withdrawn + content: + application/json: + schema: + $ref: '#/components/schemas/AmuletAllocationWithdrawResult' + '404': + description: | + The allocation or the submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A withdraw for the allocation is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' +components: + schemas: + UserStatusResponse: + type: object + required: + - party_id + - user_onboarded + - user_wallet_installed + - has_featured_app_right + properties: + party_id: + type: string + user_onboarded: + type: boolean + user_wallet_installed: + type: boolean + has_featured_app_right: + type: boolean + ListResponse: + type: object + required: + - amulets + - locked_amulets + properties: + amulets: + type: array + items: + $ref: '#/components/schemas/AmuletPosition' + locked_amulets: + type: array + items: + $ref: '#/components/schemas/AmuletPosition' + AmuletPosition: + type: object + required: + - contract + - round + - accrued_holding_fee + - effective_amount + properties: + contract: + $ref: '#/components/schemas/ContractWithState' + round: + type: integer + format: int64 + accrued_holding_fee: + type: string + effective_amount: + type: string + TapRequest: + type: object + required: + - amount + properties: + amount: + type: string + command_id: + description: Command id used for deduplication, if not specified a random UUID is used + type: string + TapResponse: + type: object + required: + - contract_id + properties: + contract_id: + type: string + SelfGrantFeaturedAppRightRequest: + type: object + nullable: true + SelfGrantFeaturedAppRightResponse: + type: object + required: + - contract_id + properties: + contract_id: + type: string + GetBalanceResponse: + type: object + required: + - round + - effective_unlocked_qty + - effective_locked_qty + - total_holding_fees + properties: + round: + type: integer + format: int64 + effective_unlocked_qty: + type: string + effective_locked_qty: + type: string + total_holding_fees: + type: string + ListAppPaymentRequestsResponse: + type: object + required: + - payment_requests + properties: + payment_requests: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + AcceptAppPaymentRequestRequest: + type: object + required: + - request_contract_id + properties: + request_contract_id: + type: string + AcceptAppPaymentRequestResponse: + type: object + required: + - accepted_payment_contract_id + properties: + accepted_payment_contract_id: + type: string + RejectAppPaymentRequestRequest: + type: object + required: + - request_contract_id + properties: + request_contract_id: + type: string + ListAcceptedAppPaymentsResponse: + type: object + required: + - accepted_app_payments + properties: + accepted_app_payments: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + ListSubscriptionRequestsResponse: + type: object + required: + - subscription_requests + properties: + subscription_requests: + type: array + items: + $ref: '#/components/schemas/Contract' + ListSubscriptionInitialPaymentsResponse: + type: object + required: + - initial_payments + properties: + initial_payments: + type: array + items: + $ref: '#/components/schemas/Contract' + Subscription: + type: object + required: + - subscription + - state + properties: + subscription: + $ref: '#/components/schemas/Contract' + state: + $ref: '#/components/schemas/SubscriptionState' + SubscriptionState: + oneOf: + - $ref: '#/components/schemas/SubscriptionIdleState' + - $ref: '#/components/schemas/SubscriptionPaymentState' + SubscriptionIdleState: + type: object + required: + - idle + properties: + idle: + $ref: '#/components/schemas/Contract' + SubscriptionPaymentState: + type: object + required: + - payment + properties: + payment: + $ref: '#/components/schemas/Contract' + ListSubscriptionsResponse: + type: object + required: + - subscriptions + properties: + subscriptions: + type: array + items: + $ref: '#/components/schemas/Subscription' + AcceptSubscriptionRequestResponse: + type: object + required: + - initial_payment_contract_id + properties: + initial_payment_contract_id: + type: string + AcceptTransferOfferResponse: + type: object + required: + - accepted_offer_contract_id + properties: + accepted_offer_contract_id: + type: string + ListAcceptedTransferOffersResponse: + type: object + required: + - accepted_offers + properties: + accepted_offers: + type: array + items: + $ref: '#/components/schemas/Contract' + ListAppRewardCouponsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - app_reward_coupons + properties: + app_reward_coupons: + type: array + items: + $ref: '#/components/schemas/Contract' + ListValidatorRewardCouponsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - validator_reward_coupons + properties: + validator_reward_coupons: + type: array + items: + $ref: '#/components/schemas/Contract' + ListValidatorFaucetCouponsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - validator_faucet_coupons + properties: + validator_faucet_coupons: + type: array + items: + $ref: '#/components/schemas/Contract' + ListValidatorLivenessActivityRecordsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - validator_liveness_activity_records + properties: + validator_liveness_activity_records: + type: array + items: + $ref: '#/components/schemas/Contract' + ListSvRewardCouponsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - sv_reward_coupons + properties: + sv_reward_coupons: + type: array + items: + $ref: '#/components/schemas/Contract' + ListTransactionsRequest: + type: object + required: + - page_size + properties: + begin_after_id: + type: string + page_size: + type: integer + format: int64 + PartyAndAmount: + type: object + required: + - party + - amount + properties: + party: + type: string + amount: + type: string + TransactionSubtype: + type: object + required: + - template_id + - choice + properties: + template_id: + type: string + choice: + type: string + amulet_operation: + type: string + interface_id: + type: string + BaseListTransactionsResponseItem: + type: object + required: + - transaction_type + - transaction_subtype + - event_id + - date + properties: + transaction_type: + type: string + transaction_subtype: + $ref: '#/components/schemas/TransactionSubtype' + event_id: + type: string + date: + type: string + format: date-time + TransferResponseItem: + allOf: + - $ref: '#/components/schemas/BaseListTransactionsResponseItem' + - type: object + required: + - provider + - sender + - receivers + - holding_fees + - amulet_price + - app_rewards_used + - validator_rewards_used + - sv_rewards_used + properties: + provider: + type: string + sender: + $ref: '#/components/schemas/PartyAndAmount' + receivers: + type: array + items: + $ref: '#/components/schemas/PartyAndAmount' + holding_fees: + type: string + amulet_price: + type: string + app_rewards_used: + type: string + validator_rewards_used: + type: string + sv_rewards_used: + type: string + transfer_instruction_receiver: + type: string + transfer_instruction_amount: + type: string + transfer_instruction_cid: + type: string + description: + type: string + BalanceChangeResponseItem: + allOf: + - $ref: '#/components/schemas/BaseListTransactionsResponseItem' + - type: object + required: + - receivers + - amulet_price + properties: + receivers: + type: array + items: + $ref: '#/components/schemas/PartyAndAmount' + amulet_price: + type: string + transfer_instruction_cid: + type: string + NotificationResponseItem: + allOf: + - $ref: '#/components/schemas/BaseListTransactionsResponseItem' + - type: object + required: + - details + properties: + details: + type: string + UnknownResponseItem: + allOf: + - $ref: '#/components/schemas/BaseListTransactionsResponseItem' + ListTransactionsResponseItem: + oneOf: + - $ref: '#/components/schemas/TransferResponseItem' + - $ref: '#/components/schemas/BalanceChangeResponseItem' + - $ref: '#/components/schemas/NotificationResponseItem' + - $ref: '#/components/schemas/UnknownResponseItem' + discriminator: + propertyName: transaction_type + mapping: + transfer: '#/components/schemas/TransferResponseItem' + balance_change: '#/components/schemas/BalanceChangeResponseItem' + notification: '#/components/schemas/NotificationResponseItem' + unknown: '#/components/schemas/UnknownResponseItem' + ListTransactionsResponse: + type: object + required: + - items + properties: + items: + type: array + items: + $ref: '#/components/schemas/ListTransactionsResponseItem' + CreateTransferPreapprovalResponse: + type: object + required: + - transfer_preapproval_contract_id + properties: + transfer_preapproval_contract_id: + type: string + TransferPreapprovalSendRequest: + type: object + required: + - receiver_party_id + - amount + - deduplication_id + properties: + receiver_party_id: + type: string + amount: + type: string + deduplication_id: + description: | + Deduplication id, only one successful transfer with this id + will be accepted within a 24h period. + type: string + description: + type: string + CreateTokenStandardTransferRequest: + type: object + required: + - receiver_party_id + - amount + - description + - expires_at + - tracking_id + properties: + receiver_party_id: + description: | + The party id of the receiver. + type: string + amount: + description: | + The amount of Amulet to transfer. + type: string + description: + description: | + An arbitrary, user chosen text. + This should be a human readable string that describes the purpose of the transfer. + It will be shown to the receiver when they decide whether to accept the offer. + type: string + expires_at: + description: | + Expiry time of the transfer offer as unix timestamp in microseconds. After this time, the offer can no longer be accepted + and automation in the wallet will eventually expire the transfer offer. + Note that this time is compared against the ledger effective time of the Daml transaction accepting or expiring an offer, and can skew from the wall clock + time measured on the caller's machine. See https://docs.daml.com/concepts/time.html + for how ledger effective time is bound to the record time of a transaction on a domain. + type: integer + format: int64 + tracking_id: + description: | + Tracking id to support exactly once submission. Once submitted, all successive calls with the same tracking id + will get rejected with a 409 or 429 status code unless the command fails and the transfer did not get created. + Clients should create a fresh tracking id when they try to create a new transfer. If that command submission fails + with a retryable error or the application crashed and got restarted, successive command submissions must reuse the same + tracking id to ensure they don't create the same transfer multiple times. + type: string + TransferInstructionResultResponse: + type: object + required: + - output + - sender_change_cids + - meta + properties: + output: + $ref: '#/components/schemas/TransferInstructionResultOutput' + sender_change_cids: + type: array + items: + type: string + meta: + type: object + additionalProperties: + type: string + TransferInstructionResultOutput: + oneOf: + - $ref: '#/components/schemas/TransferInstructionPending' + - $ref: '#/components/schemas/TransferInstructionCompleted' + - $ref: '#/components/schemas/TransferInstructionFailed' + TransferInstructionPending: + type: object + required: + - transfer_instruction_cid + properties: + transfer_instruction_cid: + type: string + TransferInstructionCompleted: + type: object + required: + - receiver_holding_cids + properties: + receiver_holding_cids: + type: array + items: + type: string + TransferInstructionFailed: + type: object + properties: + dummy: + type: object + ListTokenStandardTransfersResponse: + type: object + required: + - transfers + properties: + transfers: + type: array + items: + $ref: '#/components/schemas/Contract' + WalletFeatureSupportResponse: + type: object + 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: + - settlement + - transfer_leg_id + - transfer_leg + properties: + settlement: + type: object + required: + - executor + - settlement_ref + - requested_at + - allocate_before + - settle_before + properties: + executor: + type: string + settlement_ref: + type: object + required: + - id + properties: + id: + type: string + cid: + type: string + requested_at: + type: integer + format: int64 + allocate_before: + type: integer + format: int64 + settle_before: + type: integer + format: int64 + meta: + type: object + additionalProperties: + type: string + transfer_leg_id: + type: string + transfer_leg: + type: object + required: + - receiver + - amount + properties: + receiver: + type: string + amount: + type: string + meta: + type: object + additionalProperties: + type: string + AllocateAmuletResponse: + type: object + required: + - output + - sender_change_cids + - meta + properties: + output: + $ref: '#/components/schemas/AllocationInstructionResultOutput' + sender_change_cids: + type: array + items: + type: string + meta: + type: object + additionalProperties: + type: string + AllocationInstructionResultOutput: + oneOf: + - $ref: '#/components/schemas/AllocationInstructionResultPending' + - $ref: '#/components/schemas/AllocationInstructionResultCompleted' + - $ref: '#/components/schemas/AllocationInstructionResultFailed' + AllocationInstructionResultPending: + type: object + required: + - allocation_instruction_cid + properties: + allocation_instruction_cid: + type: string + AllocationInstructionResultCompleted: + type: object + required: + - allocation_cid + properties: + allocation_cid: + type: string + AllocationInstructionResultFailed: + type: object + properties: + dummy: + type: object + ListAllocationsResponse: + type: object + description: Includes all Allocation views where the user is a sender of one of the transferLegs and where the involved instrument's admin is the DSO party. + required: + - allocations + properties: + allocations: + type: array + items: + $ref: '#/components/schemas/Allocation' + Allocation: + type: object + required: + - contract + properties: + contract: + $ref: '#/components/schemas/Contract' + ListAllocationRequestsResponse: + type: object + description: Includes all AllocationRequest views where the user is in one of the transferLegs and where the involved instrument's admin is the DSO party. + required: + - allocation_requests + properties: + allocation_requests: + type: array + items: + $ref: '#/components/schemas/AllocationRequest' + AllocationRequest: + type: object + required: + - contract + properties: + contract: + $ref: '#/components/schemas/Contract' + AmuletAllocationWithdrawResult: + type: object + required: + - sender_holding_cids + - meta + properties: + sender_holding_cids: + type: array + items: + type: string + meta: + type: object + additionalProperties: + type: string + ChoiceExecutionMetadata: + type: object + required: + - meta + properties: + meta: + type: object + additionalProperties: + type: string + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/core/ledger-client/package.json b/core/ledger-client/package.json index c7e531201..88601a223 100644 --- a/core/ledger-client/package.json +++ b/core/ledger-client/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-ledger-client", - "version": "0.27.0", + "version": "0.27.1", "type": "module", "description": "Provides a TypeScript Canton Network ledger client, generated by the OpenAPI spec", "license": "Apache-2.0", diff --git a/core/ledger-proto/package.json b/core/ledger-proto/package.json index 1edf56ace..85d9073e5 100644 --- a/core/ledger-proto/package.json +++ b/core/ledger-proto/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-ledger-proto", - "version": "0.19.0", + "version": "0.19.1", "type": "module", "description": "Provides TypeScript protobuf bindings for Canton", "license": "Apache-2.0", diff --git a/core/rpc-errors/package.json b/core/rpc-errors/package.json index a78284733..12dcf13d4 100644 --- a/core/rpc-errors/package.json +++ b/core/rpc-errors/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-rpc-errors", - "version": "0.15.0", + "version": "0.15.1", "type": "module", "description": "Wrapper for JSON-RPC error objects", "author": "Alex Matson ", diff --git a/core/rpc-transport/package.json b/core/rpc-transport/package.json index c4e097f89..b80cc597d 100644 --- a/core/rpc-transport/package.json +++ b/core/rpc-transport/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-rpc-transport", - "version": "0.4.0", + "version": "0.4.1", "type": "module", "description": "RPC transport implementations", "license": "Apache-2.0", diff --git a/core/signing-blockdaemon/package.json b/core/signing-blockdaemon/package.json index a951f3070..72138f4de 100644 --- a/core/signing-blockdaemon/package.json +++ b/core/signing-blockdaemon/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-signing-blockdaemon", - "version": "0.20.0", + "version": "0.20.1", "type": "module", "description": "Wallet Gateway signing driver for Blockdaemon", "license": "Apache-2.0", diff --git a/core/signing-fireblocks/package.json b/core/signing-fireblocks/package.json index 9348f78e4..3a175fbea 100644 --- a/core/signing-fireblocks/package.json +++ b/core/signing-fireblocks/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-signing-fireblocks", - "version": "0.20.0", + "version": "0.20.1", "type": "module", "description": "Wallet Gateway signing driver for Fireblocks", "license": "Apache-2.0", diff --git a/core/signing-internal/package.json b/core/signing-internal/package.json index 754a35123..c3df4cf80 100644 --- a/core/signing-internal/package.json +++ b/core/signing-internal/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-signing-internal", - "version": "0.22.0", + "version": "0.22.1", "type": "module", "description": "Wallet Gateway driver for offline Ed25519 keypairs", "license": "Apache-2.0", diff --git a/core/signing-lib/package.json b/core/signing-lib/package.json index e7f86e052..29e429351 100644 --- a/core/signing-lib/package.json +++ b/core/signing-lib/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-signing-lib", - "version": "0.22.0", + "version": "0.22.1", "type": "module", "description": "Core library for signing driver implementations", "license": "Apache-2.0", diff --git a/core/signing-participant/package.json b/core/signing-participant/package.json index 24bb4c299..5779bcba5 100644 --- a/core/signing-participant/package.json +++ b/core/signing-participant/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-signing-participant", - "version": "0.22.0", + "version": "0.22.1", "packageManager": "yarn@4.9.4", "type": "module", "description": "Wallet Gateway driver for Canton participant internal parties", diff --git a/core/signing-store-sql/package.json b/core/signing-store-sql/package.json index ef0266bce..d5283c4a1 100644 --- a/core/signing-store-sql/package.json +++ b/core/signing-store-sql/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-signing-store-sql", - "version": "0.23.0", + "version": "0.23.1", "type": "module", "description": "SQL implementation of the Store API", "license": "Apache-2.0", diff --git a/core/splice-client/package.json b/core/splice-client/package.json index 7e5ef2da0..08c76e9f0 100644 --- a/core/splice-client/package.json +++ b/core/splice-client/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-splice-client", - "version": "0.21.0", + "version": "0.21.1", "type": "module", "description": "Typescript Client for the multiple Canton Network APIs", "license": "Apache-2.0", diff --git a/core/splice-client/src/generated-clients/scan-proxy.ts b/core/splice-client/src/generated-clients/scan-proxy.ts index 7af662adf..8db7dc580 100644 --- a/core/splice-client/src/generated-clients/scan-proxy.ts +++ b/core/splice-client/src/generated-clients/scan-proxy.ts @@ -195,6 +195,26 @@ export interface paths { patch?: never trace?: never } + '/v0/scan-proxy/holdings/summary': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + * This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + */ + post: operations['getHoldingsSummaryAt'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } } export type webhooks = Record export interface components { @@ -394,8 +414,96 @@ export interface components { LookupTransferCommandStatusResponse: { transfer_commands_by_contract_id: components['schemas']['TransferCommandMap'] } + HoldingsSummaryRequest: { + /** + * Format: int64 + * @description The migration id for which to return the summary. + */ + migration_id: number + /** + * Format: date-time + * @description The timestamp at which the contract set was active. + * This needs to be an exact timestamp, i.e., + * needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + * If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + */ + record_time: string + /** + * @description How to match the record_time. "exact" requires the record_time to match exactly. + * "at_or_before" finds the most recent snapshot at or before the given record_time. + * @default exact + * @enum {string} + */ + record_time_match: 'exact' | 'at_or_before' + /** @description The owners for which to compute the summary. */ + owner_party_ids: string[] + /** + * Format: int64 + * @description Compute holding fees as of this round. Defaults to the earliest open mining round. + */ + as_of_round?: number + } + /** @description Aggregate Amulet totals for a particular owner party ID. */ + HoldingsSummary: { + /** @description Owner party ID of the amulet. Guaranteed to be unique among `summaries`. */ + party_id: string + /** + * @description Sum of unlocked amulet at time of reception, not counting holding + * fees deducted since. + */ + total_unlocked_coin: string + /** + * @description Sum of locked amulet at time of original amulet reception, not + * counting holding fees deducted since. + */ + total_locked_coin: string + /** @description `total_unlocked_coin` + `total_locked_coin`. */ + total_coin_holdings: string + /** + * @description Sum of holding fees as of `computed_as_of_round` that apply to + * unlocked amulet. + */ + accumulated_holding_fees_unlocked: string + /** + * @description Sum of holding fees as of `computed_as_of_round` that apply to + * locked amulet, including fees applied since the amulet's creation + * round. + */ + accumulated_holding_fees_locked: string + /** @description Same as `accumulated_holding_fees_unlocked` + `accumulated_holding_fees_locked`. */ + accumulated_holding_fees_total: string + /** @description Same as `total_unlocked_coin` - `accumulated_holding_fees_unlocked`. */ + total_available_coin: string + } + HoldingsSummaryResponse: { + /** + * Format: date-time + * @description The same `record_time` as in the request. + */ + record_time: string + /** + * Format: int64 + * @description The same `migration_id` as in the request. + */ + migration_id: number + /** + * Format: int64 + * @description The same `as_of_round` as in the request, with the same default. + */ + computed_as_of_round: number + summaries: components['schemas']['HoldingsSummary'][] + } } responses: { + /** @description bad request */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ErrorResponse'] + } + } /** @description not found */ 404: { headers: { @@ -405,6 +513,15 @@ export interface components { 'application/json': components['schemas']['ErrorResponse'] } } + /** @description internal server error */ + 500: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ErrorResponse'] + } + } } parameters: never requestBodies: never @@ -680,4 +797,31 @@ export interface operations { 404: components['responses']['404'] } } + getHoldingsSummaryAt: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['HoldingsSummaryRequest'] + } + } + responses: { + /** @description ok */ + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['HoldingsSummaryResponse'] + } + } + 400: components['responses']['400'] + 404: components['responses']['404'] + 500: components['responses']['500'] + } + } } diff --git a/core/splice-client/src/generated-clients/scan.ts b/core/splice-client/src/generated-clients/scan.ts index 320098a99..63bddc164 100644 --- a/core/splice-client/src/generated-clients/scan.ts +++ b/core/splice-client/src/generated-clients/scan.ts @@ -385,6 +385,23 @@ export interface paths { patch?: never trace?: never } + '/v0/state/acs/snapshot-timestamp-after': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Returns the timestamp of the first snapshot after the given date, for the given migration_id or larger. */ + get: operations['getDateOfFirstSnapshotAfter'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } '/v0/state/acs': { parameters: { query?: never @@ -979,55 +996,6 @@ export interface paths { patch?: never trace?: never } - '/v0/total-amulet-balance': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - /** - * @deprecated - * @description **Deprecated**, use /registry/metadata/v1/instruments/Amulet token standard metadata API endpoint, see - * https://docs.sync.global/app_dev/token_standard/openapi/token_metadata.html. - * - * **This endpoint will be removed in a future release** - * - * Get the total balance of Amulet in the network. - */ - get: operations['getTotalAmuletBalance'] - put?: never - post?: never - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } - '/v0/wallet-balance': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - /** - * @deprecated - * @description **Deprecated**, use /v0/holdings/summary with /v0/state/acs/snapshot-timestamp instead. - * - * **This endpoint will be removed in a future release** - * - * Get the Amulet balance for a specific party at the end of a closed round. - */ - get: operations['getWalletBalance'] - put?: never - post?: never - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } '/v0/amulet-config-for-round': { parameters: { query?: never @@ -1414,12 +1382,6 @@ export interface components { LookupFeaturedAppRightResponse: { featured_app_right?: components['schemas']['Contract'] } - GetWalletBalanceResponse: { - wallet_balance: string - } - GetTotalAmuletBalanceResponse: { - total_balance: string - } GetAmuletConfigForRoundResponse: { amulet_create_fee: string holding_fee: string @@ -3330,6 +3292,32 @@ export interface operations { 500: components['responses']['500'] } } + getDateOfFirstSnapshotAfter: { + parameters: { + query: { + after: string + migration_id: number + } + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + /** @description ok */ + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['AcsSnapshotTimestampResponse'] + } + } + 400: components['responses']['400'] + 404: components['responses']['404'] + 500: components['responses']['500'] + } + } getAcsSnapshotAt: { parameters: { query?: never @@ -4128,53 +4116,6 @@ export interface operations { 500: components['responses']['500'] } } - getTotalAmuletBalance: { - parameters: { - query: { - asOfEndOfRound: number - } - header?: never - path?: never - cookie?: never - } - requestBody?: never - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['GetTotalAmuletBalanceResponse'] - } - } - 404: components['responses']['404'] - } - } - getWalletBalance: { - parameters: { - query: { - party_id: string - asOfEndOfRound: number - } - header?: never - path?: never - cookie?: never - } - requestBody?: never - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['GetWalletBalanceResponse'] - } - } - 404: components['responses']['404'] - } - } getAmuletConfigForRound: { parameters: { query: { diff --git a/core/splice-provider/package.json b/core/splice-provider/package.json index 22be9c584..ac94c78fa 100644 --- a/core/splice-provider/package.json +++ b/core/splice-provider/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-splice-provider", - "version": "0.23.0", + "version": "0.23.1", "type": "module", "description": "A JavaScript Splice Provider API (EIP-1193 compliant).", "license": "Apache-2.0", diff --git a/core/splice-provider/src/SpliceProviderHttp.ts b/core/splice-provider/src/SpliceProviderHttp.ts index 443092eb1..66edaf048 100644 --- a/core/splice-provider/src/SpliceProviderHttp.ts +++ b/core/splice-provider/src/SpliceProviderHttp.ts @@ -7,7 +7,10 @@ import { WalletEvent, } from '@canton-network/core-types' import { HttpTransport } from '@canton-network/core-rpc-transport' -import SpliceWalletJSONRPCDAppAPI from '@canton-network/core-wallet-dapp-rpc-client' +import SpliceWalletJSONRPCDAppAPI, { + Session, + StatusEvent, +} from '@canton-network/core-wallet-dapp-rpc-client' import { SpliceProviderBase } from './SpliceProvider' // Maintain a global SSE connection in-memory to avoid multiple connections @@ -32,6 +35,7 @@ function parseSSEData(data: string): unknown[] { export class SpliceProviderHttp extends SpliceProviderBase { private sessionToken?: string private client: SpliceWalletJSONRPCDAppAPI + private status?: Session | undefined private createClient(sessionToken?: string): SpliceWalletJSONRPCDAppAPI { const transport = new HttpTransport(this.url, sessionToken) @@ -114,9 +118,16 @@ export class SpliceProviderHttp extends SpliceProviderBase { // We requery the status explicitly here, as it's not guaranteed that the socket will be open & authenticated // before the `statusChanged` event is fired from the `addSession` RPC call. The dappApi.StatusResult and // dappApi.StatusEvent are mapped manually to avoid dependency. - this.request({ method: 'status' }) + this.request({ method: 'status' }) .then((status) => { - this.emit('statusChanged', status) + //for some reason comparing the objects directly dosent work as intended + if ( + JSON.stringify(status.session) !== + JSON.stringify(this.status) + ) { + this.emit('statusChanged', status) + this.status = status.session + } }) .catch((err) => { console.error( diff --git a/core/token-standard/package.json b/core/token-standard/package.json index f685cb1f4..2d7d3d6c8 100644 --- a/core/token-standard/package.json +++ b/core/token-standard/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-token-standard", - "version": "0.19.0", + "version": "0.19.1", "type": "module", "description": "daml codegen js for core token standard", "license": "Apache-2.0", diff --git a/core/tx-visualizer/package.json b/core/tx-visualizer/package.json index 423917771..c8f582d64 100644 --- a/core/tx-visualizer/package.json +++ b/core/tx-visualizer/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-tx-visualizer", - "version": "0.19.0", + "version": "0.19.1", "type": "module", "description": "Decode and visualize prepared transactions from Canton", "license": "Apache-2.0", diff --git a/core/types/package.json b/core/types/package.json index 33c98a066..b33e983cd 100644 --- a/core/types/package.json +++ b/core/types/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-types", - "version": "0.18.0", + "version": "0.18.1", "type": "module", "description": "Types and transport-agnostic parsers for data sent across Wallet components.", "license": "Apache-2.0", diff --git a/core/wallet-auth/package.json b/core/wallet-auth/package.json index 886cb960b..2b2fceab0 100644 --- a/core/wallet-auth/package.json +++ b/core/wallet-auth/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-wallet-auth", - "version": "0.19.0", + "version": "0.19.1", "type": "module", "description": "Provides authentication middleware and user management for the Wallet Gateway", "license": "Apache-2.0", diff --git a/core/wallet-dapp-remote-rpc-client/package.json b/core/wallet-dapp-remote-rpc-client/package.json index 77cbef6c2..fd0fe0860 100644 --- a/core/wallet-dapp-remote-rpc-client/package.json +++ b/core/wallet-dapp-remote-rpc-client/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-wallet-dapp-remote-rpc-client", - "version": "0.16.0", + "version": "0.16.1", "type": "module", "description": "TypeScript client generated by OpenRPC", "license": "Apache-2.0", diff --git a/core/wallet-dapp-rpc-client/package.json b/core/wallet-dapp-rpc-client/package.json index 625391c3e..91dddff80 100644 --- a/core/wallet-dapp-rpc-client/package.json +++ b/core/wallet-dapp-rpc-client/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-wallet-dapp-rpc-client", - "version": "0.22.0", + "version": "0.22.1", "type": "module", "description": "TypeScript client generated by OpenRPC", "license": "Apache-2.0", diff --git a/core/wallet-store-inmemory/package.json b/core/wallet-store-inmemory/package.json index 056952c50..3bc7741f2 100644 --- a/core/wallet-store-inmemory/package.json +++ b/core/wallet-store-inmemory/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-wallet-store-inmemory", - "version": "0.23.0", + "version": "0.23.1", "type": "module", "description": "In-memory implementation of the Store API", "author": "Marc Juchli ", diff --git a/core/wallet-store-sql/package.json b/core/wallet-store-sql/package.json index 54119c81c..70bd0f131 100644 --- a/core/wallet-store-sql/package.json +++ b/core/wallet-store-sql/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-wallet-store-sql", - "version": "0.22.0", + "version": "0.22.1", "type": "module", "description": "SQL implementation of the Store API", "license": "Apache-2.0", diff --git a/core/wallet-store/package.json b/core/wallet-store/package.json index c620094a6..8052d3e55 100644 --- a/core/wallet-store/package.json +++ b/core/wallet-store/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-wallet-store", - "version": "0.22.0", + "version": "0.22.1", "type": "module", "description": "The Store API provides persistency for the Wallet Gateway", "license": "Apache-2.0", diff --git a/core/wallet-test-utils/package.json b/core/wallet-test-utils/package.json index 0a6542f1a..58865702a 100644 --- a/core/wallet-test-utils/package.json +++ b/core/wallet-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@canton-network/core-wallet-test-utils", "private": true, - "version": "0.3.0", + "version": "0.3.1", "type": "module", "description": "Utilities for writing (E2E) tests for the wallet gateway", "main": "dist/index.cjs", diff --git a/core/wallet-test-utils/src/fixtures.ts b/core/wallet-test-utils/src/fixtures.ts new file mode 100644 index 000000000..4888c9bc3 --- /dev/null +++ b/core/wallet-test-utils/src/fixtures.ts @@ -0,0 +1,266 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { + test as base, + Page, + ConsoleMessage, + Request, + Response, +} from '@playwright/test' +import * as fs from 'fs' +import * as path from 'path' + +interface LogEntry { + timestamp: string + type: string + message: string + source?: string +} + +// Helper to safely check if a page is still accessible +const isPageAccessible = async (p: Page): Promise => { + try { + if (p.isClosed()) return false + await p.evaluate(() => true) + return true + } catch { + return false + } +} + +// Helper to capture screenshot and attach to test +const captureScreenshot = async ( + p: Page, + screenshotDir: string, + sanitizedTitle: string, + timestamp: string, + label: string, + /* eslint-disable @typescript-eslint/no-explicit-any */ + testInfo: typeof import('@playwright/test').test extends import('@playwright/test').PlaywrightTestArgs & + import('@playwright/test').PlaywrightTestOptions & + import('@playwright/test').PlaywrightWorkerArgs & + import('@playwright/test').PlaywrightWorkerOptions & { + [key: string]: any + } + ? any + : any + /* eslint-enable @typescript-eslint/no-explicit-any */ +) => { + const screenshotPath = path.join( + screenshotDir, + `${sanitizedTitle}_${label}_${timestamp}.png` + ) + + try { + if (await isPageAccessible(p)) { + await p.screenshot({ + path: screenshotPath, + fullPage: true, + timeout: 5000, + }) + + await testInfo.attach(`screenshot-${label}`, { + path: screenshotPath, + contentType: 'image/png', + }) + + console.log(`${label} screenshot saved to: ${screenshotPath}`) + } else { + console.error(`${label} is not accessible for screenshot`) + } + } catch (error) { + console.error( + `Failed to capture ${label} screenshot:`, + (error as Error).message + ) + } +} + +// Helper to setup console tracking for a page +const setupConsoleTracking = ( + p: Page, + source: string, + consoleLogs: LogEntry[] +) => { + p.on('console', (msg: ConsoleMessage) => { + const entry: LogEntry = { + timestamp: new Date().toISOString(), + type: msg.type(), + message: msg.text(), + source, + } + consoleLogs.push(entry) + + if (msg.type() === 'error' || msg.type() === 'warning') { + console.log( + `[${source}] ${msg.type().toUpperCase()}: ${msg.text()}` + ) + } + }) + + p.on('pageerror', (error) => { + const entry: LogEntry = { + timestamp: new Date().toISOString(), + type: 'pageerror', + message: error.message, + source, + } + consoleLogs.push(entry) + console.error(`[${source}] PAGE ERROR: ${error.message}`) + }) +} + +// Helper to setup network tracking for a page +const setupNetworkTracking = ( + p: Page, + source: string, + networkLogs: LogEntry[] +) => { + p.on('requestfailed', (request: Request) => { + const entry: LogEntry = { + timestamp: new Date().toISOString(), + type: 'request-failed', + message: `${request.method()} ${request.url()} - ${request.failure()?.errorText || 'unknown error'}`, + source, + } + networkLogs.push(entry) + console.error(`[${source}] REQUEST FAILED: ${entry.message}`) + }) + + p.on('response', (response: Response) => { + if (response.status() >= 400) { + const entry: LogEntry = { + timestamp: new Date().toISOString(), + type: `response-${response.status()}`, + message: `${response.request().method()} ${response.url()} - Status: ${response.status()} ${response.statusText()}`, + source, + } + networkLogs.push(entry) + console.warn( + `[${source}] HTTP ${response.status()}: ${response.url()}` + ) + } + }) +} + +export const test = base.extend<{ page: Page }>({ + page: async ({ page }, use, testInfo) => { + const popups: Page[] = [] + const consoleLogs: LogEntry[] = [] + const networkLogs: LogEntry[] = [] + + setupConsoleTracking(page, 'main', consoleLogs) + setupNetworkTracking(page, 'main', networkLogs) + + page.on('popup', (popup) => { + popups.push(popup) + console.log(`Popup opened: ${popup.url()}`) + + setupConsoleTracking( + popup, + `popup-${popups.length - 1}`, + consoleLogs + ) + setupNetworkTracking( + popup, + `popup-${popups.length - 1}`, + networkLogs + ) + + popup.on('close', () => { + const index = popups.indexOf(popup) + if (index > -1) { + popups.splice(index, 1) + } + }) + }) + + await use(page) + + if (testInfo.status !== testInfo.expectedStatus) { + const screenshotDir = path.join( + testInfo.project.outputDir, + 'screenshots' + ) + + if (!fs.existsSync(screenshotDir)) { + fs.mkdirSync(screenshotDir, { recursive: true }) + } + + const sanitizedTitle = testInfo.title + .replace(/[^a-z0-9]/gi, '_') + .toLowerCase() + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-') + + if (consoleLogs.length > 0) { + const consoleLogPath = path.join( + screenshotDir, + `${sanitizedTitle}_console_${timestamp}.json` + ) + try { + fs.writeFileSync( + consoleLogPath, + JSON.stringify(consoleLogs, null, 2) + ) + await testInfo.attach('console-logs', { + path: consoleLogPath, + contentType: 'application/json', + }) + console.log(`Console logs saved to: ${consoleLogPath}`) + } catch (error) { + console.error( + 'Failed to save console logs:', + (error as Error).message + ) + } + } + + if (networkLogs.length > 0) { + const networkLogPath = path.join( + screenshotDir, + `${sanitizedTitle}_network_${timestamp}.json` + ) + try { + fs.writeFileSync( + networkLogPath, + JSON.stringify(networkLogs, null, 2) + ) + await testInfo.attach('network-logs', { + path: networkLogPath, + contentType: 'application/json', + }) + console.log(`Network logs saved to: ${networkLogPath}`) + } catch (error) { + console.error( + 'Failed to save network logs:', + (error as Error).message + ) + } + } + + await captureScreenshot( + page, + screenshotDir, + sanitizedTitle, + timestamp, + 'main-page', + testInfo + ) + + for (let i = 0; i < popups.length; i++) { + await captureScreenshot( + popups[i], + screenshotDir, + sanitizedTitle, + timestamp, + `popup-${i}`, + testInfo + ) + } + } + }, +}) + +export { expect } from '@playwright/test' diff --git a/core/wallet-test-utils/src/index.ts b/core/wallet-test-utils/src/index.ts index 91da7d807..0f1991527 100644 --- a/core/wallet-test-utils/src/index.ts +++ b/core/wallet-test-utils/src/index.ts @@ -3,3 +3,4 @@ export { OTCTrade } from './otc-trade.js' export { WalletGateway } from './wallet-gateway.js' +export { test, expect } from './fixtures.js' diff --git a/core/wallet-ui-components/package.json b/core/wallet-ui-components/package.json index b7c425a50..2b0fe34c2 100644 --- a/core/wallet-ui-components/package.json +++ b/core/wallet-ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-wallet-ui-components", - "version": "0.23.0", + "version": "0.23.1", "type": "module", "description": "Reusable UI components for the Splice wallet", "license": "Apache-2.0", diff --git a/core/wallet-user-rpc-client/package.json b/core/wallet-user-rpc-client/package.json index 16b24e351..91c9682e1 100644 --- a/core/wallet-user-rpc-client/package.json +++ b/core/wallet-user-rpc-client/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/core-wallet-user-rpc-client", - "version": "0.23.0", + "version": "0.23.1", "type": "module", "description": "TypeScript client generated by OpenRPC", "license": "Apache-2.0", diff --git a/examples/ping/src/App.css b/examples/ping/src/App.css index 12490d7e7..047626080 100644 --- a/examples/ping/src/App.css +++ b/examples/ping/src/App.css @@ -47,3 +47,69 @@ .error { color: lightcoral; } + +.tabs { + margin-top: 2rem; + width: 100%; +} + +.tab-buttons { + display: flex; + gap: 0.5rem; + border-bottom: 2px solid #333; + margin-bottom: 1rem; + flex-wrap: wrap; + justify-content: center; +} + +.tab-buttons button { + padding: 0.75rem 1.5rem; + background: transparent; + border: none; + border-bottom: 3px solid transparent; + cursor: pointer; + font-size: 1rem; + transition: all 0.3s ease; + color: #666; +} + +.tab-buttons button:hover { + color: #000; + background: rgba(0, 0, 0, 0.05); +} + +.tab-buttons button.active { + color: #000; + border-bottom-color: #000; + font-weight: bold; +} + +.tab-content { + min-height: 300px; + padding: 1rem 0; +} + +.terminal-display { + margin-top: 16px; + width: 100%; + max-height: 400px; + overflow: auto; + background-color: #000; + color: #0f0; + padding: 12px; + border-radius: 4px; +} + +.terminal-display pre { + text-align: left; + margin: 0; +} + +.terminal-item { + margin-bottom: 16px; + padding-bottom: 16px; +} + +.terminal-item:not(:last-child) { + border-bottom: 1px solid #0a0; +} diff --git a/examples/ping/src/App.tsx b/examples/ping/src/App.tsx index 5d218596f..2081513ef 100644 --- a/examples/ping/src/App.tsx +++ b/examples/ping/src/App.tsx @@ -14,6 +14,7 @@ import { WindowMessages } from './components/WindowMessages' function App() { const { errorMsg, setErrorMsg } = useContext(ErrorContext) const [loading, setLoading] = useState(false) + const [activeTab, setActiveTab] = useState('accounts') const { connect, disconnect, status } = useConnect() @@ -98,23 +99,111 @@ function App() {
- - - - - - - +
+
+ {status?.isConnected && ( + + )} + {window.canton && ( + + )} + + {status?.isConnected && ( + + )} + {status?.isConnected && ( + + )} +
- +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
) } diff --git a/examples/ping/src/components/Accounts.tsx b/examples/ping/src/components/Accounts.tsx index 2eccfafda..c1e6ea3e7 100644 --- a/examples/ping/src/components/Accounts.tsx +++ b/examples/ping/src/components/Accounts.tsx @@ -3,28 +3,58 @@ import { useAccounts } from '../hooks/useAccounts' export function Accounts(props: { status?: sdk.dappAPI.StatusEvent }) { const accounts = useAccounts(props.status) - const primaryParty = accounts?.find((ac) => ac.primary) const connected = props.status?.isConnected ?? false + const getAccountColor = (account: sdk.dappAPI.Wallet) => { + if (account.disabled) { + return '#888' + } + if (account.primary) { + return '#0ff' + } + return '#ff0' + } + + const sortedAccounts = accounts?.slice().sort((a, b) => { + if (a.primary && !b.primary) return -1 + if (!a.primary && b.primary) return 1 + + if (a.disabled && !b.disabled) return 1 + if (!a.disabled && b.disabled) return -1 + + return 0 + }) + return ( connected && (

Accounts

-

⭐ Primary Party ⭐

- {primaryParty ? ( - primaryParty.partyId - ) : ( - No primary party found. - )} -

All Accounts

-
    - {accounts?.map((account) => ( -
  • - {account.partyId} -
  • - ))} -
+

Total accounts: {sortedAccounts?.length ?? 0}

+
+
+
    + {sortedAccounts?.map((account) => ( +
  • + + {account.partyId} + {account.primary && ' (primary)'} + {account.disabled && ' (disabled)'} + +
  • + ))} +
+
+
) ) diff --git a/examples/ping/src/components/LedgerQuery.tsx b/examples/ping/src/components/LedgerQuery.tsx index 02c2af7c7..a9a8f738f 100644 --- a/examples/ping/src/components/LedgerQuery.tsx +++ b/examples/ping/src/components/LedgerQuery.tsx @@ -9,7 +9,9 @@ export function LedgerQuery(props: { status?: sdk.dappAPI.StatusEvent }) { const [loading, setLoading] = useState(false) - const [queryResponse, setQueryResponse] = useState() + const [queryResponses, setQueryResponses] = useState< + Array<{ timestamp: Date; data: object }> + >([]) const connected = props.status?.isConnected ?? false @@ -34,20 +36,45 @@ export function LedgerQuery(props: { requestMethod: 'GET', resource: `/v2/interactive-submission/preferred-package-version?${queryString}`, }).then((r) => { - setQueryResponse(JSON.parse(r.response)) + const responseData = JSON.parse(r.response) + setQueryResponses((prev) => [ + ...prev, + { timestamp: new Date(), data: responseData }, + ]) setLoading(false) }) }} > query preferred package version - {queryResponse && ( -
-                        

{prettyjson(queryResponse)}

-
- )} {loading &&

Loading...

} + + {queryResponses.length > 0 && ( +
+

Total queries: {queryResponses.length}

+
+
+                                {queryResponses.map((item, index) => (
+                                    
+
+ Query # + {queryResponses.length - index} ( + {item.timestamp.toLocaleTimeString()} + ) +
+ {prettyjson(item.data)} +
+ ))} +
+
+
+ )} ) ) diff --git a/examples/ping/src/components/LedgerSubmission.tsx b/examples/ping/src/components/LedgerSubmission.tsx index 4b5dc8599..35ef56e1a 100644 --- a/examples/ping/src/components/LedgerSubmission.tsx +++ b/examples/ping/src/components/LedgerSubmission.tsx @@ -47,21 +47,15 @@ export function LedgerSubmission(props: { create Ping contract {transactions.length > 0 && ( -
-
-                            {transactions.map(prettyjson).map((msg) => (
-                                

{msg}

- ))} -
+
+

Total transactions: {transactions.length}

+
+
+                                {transactions.map(prettyjson).map((msg) => (
+                                    

{msg}

+ ))} +
+
)}{' '}
diff --git a/examples/ping/src/components/PostEvents.tsx b/examples/ping/src/components/PostEvents.tsx index da7dafed8..7ff1994bb 100644 --- a/examples/ping/src/components/PostEvents.tsx +++ b/examples/ping/src/components/PostEvents.tsx @@ -3,9 +3,10 @@ import { useAllEvents } from '../hooks/useAllEvents' import { prettyjson } from '../utils' +import * as sdk from '@canton-network/dapp-sdk' -export function PostEvents() { - const events = useAllEvents() +export function PostEvents(props: { status?: sdk.dappAPI.StatusEvent }) { + const events = useAllEvents(props.status) const providerAvailable = window.canton const getEventColor = (type: string) => { @@ -30,31 +31,10 @@ export function PostEvents() { ) : (

Total events received: {events.length}

-
-
+                        
+
                                 {events.map((item, index) => (
-                                    
+

Total messages received: {messages.length}

-
-
+                    
+
                             {messages.map((item, index) => (
-                                
+
([]) useEffect(() => { - //we use window.canton here since we want to capture the initial login event as well - if (window.canton) { + if (status?.isConnected) { const txListener = (event: sdk.dappAPI.TxChangedEvent) => { - console.debug('[use-all-events] Adding tx changed listener') setEvents((prev) => [ { type: 'TxChanged', event, timestamp: new Date() }, ...prev, @@ -32,7 +30,6 @@ export function useAllEvents() { } const statusListener = (event: sdk.dappAPI.StatusEvent) => { - console.debug('[use-all-events] Adding status changed listener') setEvents((prev) => [ { type: 'StatusChanged', event, timestamp: new Date() }, ...prev, @@ -42,9 +39,6 @@ export function useAllEvents() { const accountsListener = ( event: sdk.dappAPI.AccountsChangedEvent ) => { - console.debug( - '[use-all-events] Adding accounts changed listener' - ) setEvents((prev) => [ { type: 'AccountsChanged', event, timestamp: new Date() }, ...prev, @@ -61,7 +55,7 @@ export function useAllEvents() { sdk.removeOnAccountsChanged(accountsListener) } } - }, []) + }, [status]) return events } diff --git a/examples/ping/tests/example.spec.ts b/examples/ping/tests/example.spec.ts index 130d00407..255ec0d63 100644 --- a/examples/ping/tests/example.spec.ts +++ b/examples/ping/tests/example.spec.ts @@ -1,12 +1,19 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { test, expect } from '@playwright/test' -import { WalletGateway } from '@canton-network/core-wallet-test-utils' - +import { + test, + expect, + WalletGateway, +} from '@canton-network/core-wallet-test-utils' +import { Page } from '@playwright/test' const dappApiPort = 3030 -test('dApp: execute externally signed tx', async ({ page: dappPage }) => { +test('dApp: execute externally signed tx', async ({ + page: dappPage, +}: { + page: Page +}) => { const wg = new WalletGateway({ dappPage, openButton: (page) => @@ -32,7 +39,7 @@ test('dApp: execute externally signed tx', async ({ page: dappPage }) => { await expect(dappPage.getByText('Loading...')).toHaveCount(0) - await expect(dappPage.getByText(/.*connected: 🟢*/)).toBeVisible() + await expect(dappPage.getByText(/.*gateway: remote-da*/)).toBeVisible() const party1 = `test-${Date.now()}` const party2 = `test-${Date.now() + 1}` @@ -48,21 +55,36 @@ test('dApp: execute externally signed tx', async ({ page: dappPage }) => { primary: true, }) - //TODO: figure out why we need to reload the page - await dappPage.reload() + //press accounts tab + await dappPage.getByRole('button', { name: 'Accounts' }).click() + + await expect(dappPage.getByText(`${party2}::`)).toBeDefined() + + //press ledger submission + await dappPage.getByRole('button', { name: 'Ledger Submission' }).click() - await expect(dappPage.getByText(new RegExp(`${party2}::.*`))).toBeVisible() await expect( dappPage.getByRole('button', { name: 'create Ping contract' }) ).toBeEnabled() // Create a Ping contract through the dapp with the new party - await wg.approveTransaction(() => + const commandId = await wg.approveTransaction(() => dappPage.getByRole('button', { name: 'create Ping contract' }).click() ) - // Wait for command to have fully executed - //TODO: we use 2 because we have one in the transaction list and one in the event list - //TODO: fix this so we check each list properly once - await expect(dappPage.getByText('executed')).toHaveCount(2) + await expect( + dappPage.getByRole('paragraph').filter({ + hasText: `{ "status": "pending", "commandId": "${commandId.commandId}" }`, + }) + ).toHaveCount(1) + await expect( + dappPage.getByRole('paragraph').filter({ + hasText: `{ "commandId": "${commandId.commandId}", "status": "signed", "`, + }) + ).toHaveCount(1) + await expect( + dappPage.getByRole('paragraph').filter({ + hasText: `{ "commandId": "${commandId.commandId}", "status": "executed", "`, + }) + ).toHaveCount(1) }) diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index ddaea28b1..b591e085d 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -1,6 +1,6 @@ { "name": "@canton-network/example-portfolio", - "version": "0.18.1", + "version": "0.18.2", "type": "module", "scripts": { "dev": "vite", diff --git a/examples/portfolio/src/components/TransactionTable.tsx b/examples/portfolio/src/components/TransactionTable.tsx new file mode 100644 index 000000000..54dbeadbc --- /dev/null +++ b/examples/portfolio/src/components/TransactionTable.tsx @@ -0,0 +1,336 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import Decimal from 'decimal.js' +import { + Box, + Button, + Paper, + Skeleton, + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, + Typography, +} from '@mui/material' +import { type Transaction } from '@canton-network/core-ledger-client' +import { CopyableIdentifier } from './copyable-identifier' + +interface TransactionTableProps { + transactions: Transaction[] + walletId: string + hasNextPage: boolean + isFetching: boolean + isFetchingNextPage: boolean + onLoadMore: () => void +} + +const formatDate = (recordTime: string): string => { + return new Date(recordTime).toLocaleString() +} + +const getTransactionType = (transaction: Transaction): string => { + const event = transaction.events[0] + if (!event) return 'Unknown' + return event.label.type +} + +const getTransactionAsset = (transaction: Transaction): string => { + const event = transaction.events[0] + if (!event) return '-' + + // Try to get asset from transfer instruction + if (event.transferInstruction?.transfer?.instrumentId) { + const { admin, id } = event.transferInstruction.transfer.instrumentId + return id || admin + } + + // Try to get asset from holdings change summaries + const summary = + event.unlockedHoldingsChangeSummaries[0] || + event.lockedHoldingsChangeSummaries[0] + if (summary?.instrumentId) { + return summary.instrumentId.id || summary.instrumentId.admin + } + + return '-' +} + +const getTransactionAmount = ( + transaction: Transaction, + walletId: string +): { amount: string; isOutgoing: boolean } => { + const event = transaction.events[0] + if (!event) return { amount: '-', isOutgoing: false } + + // Try to get amount from transfer instruction + if (event.transferInstruction?.transfer) { + const transfer = event.transferInstruction.transfer + const amount = transfer.amount || '0' + const isOutgoing = transfer.sender === walletId + return { amount, isOutgoing } + } + + // Try to get amount from holdings change summaries + const summary = + event.unlockedHoldingsChangeSummaries[0] || + event.lockedHoldingsChangeSummaries[0] + if (summary) { + const amount = summary.amountChange || '0' + const amountChange = new Decimal(amount) + const isOutgoing = amountChange.isNegative() + return { amount, isOutgoing } + } + + return { amount: '-', isOutgoing: false } +} + +const getCounterparty = ( + transaction: Transaction, + walletId: string +): string => { + const event = transaction.events[0] + if (!event) return '-' + + if (event.transferInstruction?.transfer) { + const transfer = event.transferInstruction.transfer + if (transfer.sender === walletId) { + return transfer.receiver || '-' + } else if (transfer.receiver === walletId) { + return transfer.sender || '-' + } + } + + return '-' +} + +export const TransactionTable: React.FC = ({ + transactions, + walletId, + hasNextPage, + isFetching, + isFetchingNextPage, + onLoadMore, +}) => { + const hasTransactions = transactions.length > 0 + console.log('transactions', transactions) + + if (isFetching && !hasTransactions) { + return ( + + + + + + Type + + + Date + + + Asset + + + Amount + + + Counterparty + + + + + {[1, 2, 3].map((i) => ( + + + + + + + + + + + + + + + + + + ))} + +
+
+ ) + } + + return ( + + + + + + + Type + + + Date + + + Asset + + + Amount + + + Counterparty + + + + + {hasTransactions ? ( + transactions.map((transaction) => { + const txType = getTransactionType(transaction) + const asset = getTransactionAsset(transaction) + const { amount, isOutgoing } = + getTransactionAmount(transaction, walletId) + const counterparty = getCounterparty( + transaction, + walletId + ) + const amountPrefix = isOutgoing ? '-' : '+' + const amountColor = isOutgoing + ? 'error.main' + : 'success.main' + + return ( + + + {txType} + + + {formatDate(transaction.recordTime)} + + + + {asset} + + + + {amount === '-' + ? '-' + : `${amountPrefix}${amount}`} + + + {counterparty === '-' ? ( + '-' + ) : ( + + )} + + + ) + }) + ) : ( + + + + + There are currently no transactions + in this wallet + + + + + )} + +
+
+ + {hasNextPage && ( + + + + )} +
+ ) +} diff --git a/examples/portfolio/src/hooks/useInstrumentAvailableBalance.ts b/examples/portfolio/src/hooks/useInstrumentAvailableBalance.ts index 62a667efe..f99eac69b 100644 --- a/examples/portfolio/src/hooks/useInstrumentAvailableBalance.ts +++ b/examples/portfolio/src/hooks/useInstrumentAvailableBalance.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + import type { InstrumentId } from '@canton-network/core-token-standard' import type { AggregatedHolding } from '../utils/aggregate-holdings' import { useAggregatedHoldings } from './useAggregatedHoldings' diff --git a/examples/portfolio/src/hooks/useTransactionHistory.ts b/examples/portfolio/src/hooks/useTransactionHistory.ts index 336d0b857..3235bbbfd 100644 --- a/examples/portfolio/src/hooks/useTransactionHistory.ts +++ b/examples/portfolio/src/hooks/useTransactionHistory.ts @@ -14,19 +14,17 @@ import { usePrimaryAccount } from '../hooks/useAccounts' import type { TransactionHistoryResponse } from '../services/transaction-history-service' import { queryKeys } from './query-keys' -export const useTransactionHistory = (): UseInfiniteQueryResult< - InfiniteData, - Error -> => { - const primaryParty = usePrimaryAccount()?.partyId +export const useTransactionHistoryForParty = ( + partyId: string | undefined +): UseInfiniteQueryResult, Error> => { const { getTransactionHistory } = usePortfolio() return useInfiniteQuery({ initialPageParam: null, - queryKey: queryKeys.getTransactionHistory.forParty(primaryParty), + queryKey: queryKeys.getTransactionHistory.forParty(partyId), queryFn: ({ pageParam }) => - primaryParty + partyId ? getTransactionHistory({ - party: primaryParty, + party: partyId, request: pageParam, }) : skipToken, @@ -41,11 +39,21 @@ export const useTransactionHistory = (): UseInfiniteQueryResult< }) } +export const useTransactionHistory = (): UseInfiniteQueryResult< + InfiniteData, + Error +> => { + const primaryParty = usePrimaryAccount()?.partyId + return useTransactionHistoryForParty(primaryParty) +} + /** Deduplicate transactions. We don't have stable pagination, this concerns * in particular the the first page, for which the cursor doesn't have any * offset or limit info. */ -export const useDeduplicatedTransactionHistory = (): Transaction[] => { - const { data } = useTransactionHistory() +export const useDeduplicatedTransactionHistoryForParty = ( + partyId: string | undefined +): Transaction[] => { + const { data } = useTransactionHistoryForParty(partyId) return useMemo(() => { const ids = new Set() @@ -63,3 +71,8 @@ export const useDeduplicatedTransactionHistory = (): Transaction[] => { return transactions }, [data]) } + +export const useDeduplicatedTransactionHistory = (): Transaction[] => { + const primaryParty = usePrimaryAccount()?.partyId + return useDeduplicatedTransactionHistoryForParty(primaryParty) +} diff --git a/examples/portfolio/src/routes/wallet.$walletId.tsx b/examples/portfolio/src/routes/wallet.$walletId.tsx index 86f9c6078..c40f7affe 100644 --- a/examples/portfolio/src/routes/wallet.$walletId.tsx +++ b/examples/portfolio/src/routes/wallet.$walletId.tsx @@ -6,8 +6,13 @@ import { Box, Typography, Paper, Skeleton, Button } from '@mui/material' import ArrowBackIcon from '@mui/icons-material/ArrowBack' import { useAccounts } from '../hooks/useAccounts' import { useWalletHoldings } from '../hooks/useWalletHoldings' +import { + useTransactionHistoryForParty, + useDeduplicatedTransactionHistoryForParty, +} from '../hooks/useTransactionHistory' import { CopyableIdentifier } from '../components/copyable-identifier' import { InstrumentAccordion } from '../components/instrument-accordion' +import { TransactionTable } from '../components/TransactionTable' export const Route = createFileRoute('/wallet/$walletId')({ component: WalletDetailPage, @@ -22,6 +27,15 @@ function WalletDetailPage() { const { instruments, holdings, isLoading, isError } = useWalletHoldings(walletId) + const { + status: txStatus, + fetchNextPage, + isFetchingNextPage, + hasNextPage, + } = useTransactionHistoryForParty(walletId) + + const transactions = useDeduplicatedTransactionHistoryForParty(walletId) + const getHoldingsForInstrument = (instrumentId: { admin: string id: string @@ -94,6 +108,23 @@ function WalletDetailPage() { )) )} + + + Transaction History + + + ) } diff --git a/examples/portfolio/tests/example.spec.ts b/examples/portfolio/tests/example.spec.ts index e7a7e8f39..8909ddf19 100644 --- a/examples/portfolio/tests/example.spec.ts +++ b/examples/portfolio/tests/example.spec.ts @@ -2,7 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 import { pino } from 'pino' -import { test, expect, Page } from '@playwright/test' +import { test, expect } from '@canton-network/core-wallet-test-utils' +import { Page } from '@playwright/test' import { WalletGateway, OTCTrade } from '@canton-network/core-wallet-test-utils' const openTab = ( diff --git a/scripts/src/lib/version-config.json b/scripts/src/lib/version-config.json index c168e96dc..816ea4778 100644 --- a/scripts/src/lib/version-config.json +++ b/scripts/src/lib/version-config.json @@ -1,17 +1,17 @@ { - "DAML_RELEASE_VERSION": "3.4.9", + "DAML_RELEASE_VERSION": "3.4.11-snapshot.20260127.17528.0.ve786203c", "SUPPORTED_VERSIONS": { "devnet": { "canton": { - "version": "3.4.9", - "hash": "c0dc46caee5e96198239737765f7874346c3f311ec1b2f4a6cbea4bbea66d8e8" + "version": "3.4.11-snapshot.20260127.17528.0.ve786203c", + "hash": "6ef55429d138c3b11df0bdd13e1f51dc87274373de4470eeed021fed5a4ac9b3" }, "splice": { - "version": "0.5.5", + "version": "0.5.8", "hashes": { - "localnet": "48e599922e0ca8ef365c08dc08be056a5f57966ad8f064e174015da7e54f8dc2", - "splice": "7092592c00a8e141c7da3266f5d8cd04573c8bee608edd805b62c11a57cb65d8", - "spliceSpec": "cc0f9cb29371e6f1c1263f29564d744ee068b654950228149aec2e86521aa231" + "localnet": "16bd47421ccc0b67bea9eb667299dc554887a6282184c3ab42356e39b9802ecf", + "splice": "356a2e689b8901351bfda975d26249e5449628a8f0c351436ed13ee038590d3c", + "spliceSpec": "e29b6029d207dfc2d8be0e2d811c25dae81f932ff34b2ca37e97116ef4f5a434" } } }, diff --git a/sdk/dapp-sdk/package.json b/sdk/dapp-sdk/package.json index 8cdce06ea..0ab293d01 100644 --- a/sdk/dapp-sdk/package.json +++ b/sdk/dapp-sdk/package.json @@ -1,7 +1,7 @@ { "name": "@canton-network/dapp-sdk", "type": "module", - "version": "0.21.1", + "version": "0.21.2", "description": "Browser SDK for dApp development on the Canton Network", "license": "Apache-2.0", "author": "Marc Juchli ", diff --git a/yarn.lock b/yarn.lock index 2e6950993..381179b79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3916,11 +3916,11 @@ __metadata: linkType: hard "@isaacs/brace-expansion@npm:^5.0.0": - version: 5.0.0 - resolution: "@isaacs/brace-expansion@npm:5.0.0" + version: 5.0.1 + resolution: "@isaacs/brace-expansion@npm:5.0.1" dependencies: "@isaacs/balanced-match": "npm:^4.0.1" - checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 + checksum: 10c0/e5d67c7bbf1f17b88132a35bc638af306d48acbb72810d48fa6e6edd8ab375854773108e8bf70f021f7ef6a8273455a6d1f0c3b5aa2aff06ce7894049ab77fb8 languageName: node linkType: hard