openapi: 3.0.3
info:
  title: JSON Ledger API HTTP endpoints
  version: 3.5.1-SNAPSHOT
  description: |-
    This specification version fixes the API inconsistencies where certain fields marked as required in the spec are in fact optional.
    If you use code generation tool based on this file, you might need to adjust the existing application code to handle those fields as optional.
    If you do not want to change your client code, continue using the OpenAPI specification for the latest Canton 3.4 patch release.
    MINIMUM_CANTON_VERSION=3.5.1
paths:
  /v2/commands/submit-and-wait:
    post:
      description: |-
        Submits a single composite command and waits for its result.
        Propagates the gRPC error of failed submissions including Daml interpretation errors.
      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, Invalid value for: body'
          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: |-
        Submits a single composite command, waits for its result, and returns the transaction.
        Propagates the gRPC error of failed submissions including Daml interpretation errors.
      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, Invalid value for: body'
          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: |-
        Submits a single composite reassignment command, waits for its result, and returns the reassignment.
        Propagates the gRPC error of failed submission.
      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, Invalid value for: body'
          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, Invalid value for: body'
          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 single composite command.
      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, Invalid value for: body'
          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 a single reassignment.
      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, Invalid value for: body'
          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)

        Subscribe to command completion events.
        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, Invalid value for: body, Invalid value for:
            query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms'
          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 the create and the consuming exercise event for the contract with the provided ID.
        No events will be returned for contracts that have been pruned because they
        have already been archived before the latest pruning offset.
        If the contract cannot be found for the request, or all the contract-events are filtered, a CONTRACT_EVENTS_NOT_FOUND error will be raised.
      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, Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /v2/version:
    get:
      description: Read the Ledger API version
      operationId: getV2Version
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLedgerApiVersionResponse'
        '400':
          description: Invalid value
          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 the DAR and checks the upgrade compatibility of the DAR's packages
        with the set of the already vetted packages on the target vetting synchronizer.
        See ValidateDarFileRequest for details regarding the target vetting synchronizer.

        The operation has no effect on the state of the participant or the Canton ledger:
        the DAR payload and its packages are not persisted neither are the packages vetted.
      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, Invalid value for: body, Invalid value for:
            query parameter synchronizerId'
          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, Invalid value for: body, Invalid value for:
            query parameter vetAllPackages, Invalid value for: query parameter synchronizerId'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /v2/packages:
    get:
      description: Returns the identifiers of all supported packages.
      operationId: getV2Packages
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPackagesResponse'
        '400':
          description: Invalid value
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    post:
      description: |-
        Behaves the same as /dars. This endpoint will be deprecated and removed in a future release.
        Upload a DAR file to the participant.

        If vetting is enabled in the request, the DAR is checked for upgrade compatibility
        with the set of the already vetted packages on the target vetting synchronizer
        See UploadDarFileRequest for details regarding vetting and the target vetting synchronizer.
      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, Invalid value for: body, Invalid value for:
            query parameter vetAllPackages, Invalid value for: query parameter synchronizerId'
          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: Returns the contents of a single package.
      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
          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: Returns the status of a single package.
      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
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /v2/package-vetting:
    get:
      description: |-
        Lists which participant node vetted what packages on which synchronizer.
        This endpoint (GET /package-vetting) is deprecated and will be removed in a future release. Please use POST /package-vetting/list instead.
      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, Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      deprecated: true
      security:
      - httpAuth: []
      - apiKeyAuth: []
    post:
      description: |-
        Update the vetted packages of this participant
        This endpoint (POST /package-vetting) is deprecated and will be removed in a future release. Please use POST /package-vetting/update instead.
      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, Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      deprecated: true
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /v2/package-vetting/list:
    post:
      description: |-
        Lists which participant node vetted what packages on which synchronizer.
        Can be called by any authenticated user.
      operationId: postV2Package-vettingList
      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, Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /v2/package-vetting/update:
    post:
      description: Update the vetted packages of this participant
      operationId: postV2Package-vettingUpdate
      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, Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /v2/parties:
    get:
      description: |-
        List the parties known by the participant.
        The list returned contains parties whose ledger access is facilitated by
        the participant and the ones maintained elsewhere.
      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, 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'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    post:
      description: |-
        Allocates a new party on a ledger and adds it to the set managed by the participant.
        Caller specifies a party identifier suggestion, the actual identifier
        allocated might be different and is implementation specific.
        Caller can specify party metadata that is stored locally on the participant.
        This call may:

        - Succeed, in which case the actual allocated identifier is visible in
          the response.
        - Respond with a gRPC error

        daml-on-kv-ledger: suggestion's uniqueness is checked by the validators in
        the consensus layer and call rejected if the identifier is already present.
        canton: completely different globally unique identifier is allocated.
        Behind the scenes calls to an internal protocol are made. As that protocol
        is richer than the surface protocol, the arguments take implicit values
        The party identifier suggestion must be a valid party name. Party names are required to be non-empty US-ASCII strings built from letters, digits, space,
        colon, minus and underscore limited to 255 chars
      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, Invalid value for: body'
          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: |-
        The external party must be hosted (at least) on this node with either confirmation or observation permissions
        It can optionally be hosted on other nodes (then called a multi-hosted party).
        If hosted on additional nodes, explicit authorization of the hosting relationship must be performed on those nodes
        before the party can be used.
        Decentralized namespaces are supported but must be provided fully authorized by their owners.
        The individual owner namespace transactions can be submitted in the same call (fully authorized as well).
        In the simple case of a non-multi hosted, non-decentralized party, the RPC will return once the party is
        effectively allocated and ready to use, similarly to the AllocateParty behavior.
        For more complex scenarios applications may need to query the party status explicitly (only through the admin API as of now).
      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, Invalid value for: body'
          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: |-
        Return the identifier of the participant.
        All horizontally scaled replicas should return the same id.
        daml-on-kv-ledger: returns an identifier supplied on command line at launch time
        canton: returns globally unique identifier of the participant
      operationId: getV2PartiesParticipant-id
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetParticipantIdResponse'
        '400':
          description: Invalid value
          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 the party details of the given parties. Only known parties will be
        returned in the list.
      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, Invalid value for: query parameter identity-provider-id,
            Invalid value for: query parameter parties'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    patch:
      description: |-
        Update selected modifiable participant-local attributes of a party details resource.
        Can update the participant's local information for local parties.
      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, Invalid value for: body'
          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: |-
        You may use this endpoint to generate the common external topology transactions
        which can be signed externally and uploaded as part of the allocate party process

        Note that this request will create a normal namespace using the same key for the
        identity as for signing. More elaborate schemes such as multi-signature
        or decentralized parties require you to construct the topology transactions yourself.
      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, Invalid value for: body'
          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.

        Returns a stream of the snapshot of the active contracts and incomplete (un)assignments at a ledger offset.
        Once the stream of GetActiveContractsResponses completes,
        the client SHOULD begin streaming updates from the update service,
        starting at the GetActiveContractsRequest.active_at_offset specified in this request.
        Clients SHOULD NOT assume that the set of active contracts they receive reflects the state at the ledger end.

        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, Invalid value for: body, Invalid value for:
            query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /v2/state/active-contracts-page:
    get:
      description: |-
        Returns a page of the snapshot of the active contracts and incomplete (un)assignments at a ledger offset.
        Once all pages are fetched by repeated calls to ``GetActiveContractsPage``,
        the client SHOULD begin retrieving updates from the update service,
        starting at the ``GetActiveContractsPageResponse``.``active_at_offset`` specified in this request.
        Clients SHOULD NOT assume that the set of active contracts they receive reflects the state at the ledger end.
      operationId: getV2StateActive-contracts-page
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetActiveContractsPageRequest'
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsGetActiveContractsPageResponse'
        '400':
          description: 'Invalid value, Invalid value for: body'
          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 the list of connected synchronizers at the time of the query.
      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, Invalid value for: query parameter party, Invalid
            value for: query parameter participantId, Invalid value for: query parameter
            identityProviderId'
          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 the current ledger end.
        Subscriptions started with the returned offset will serve events after this RPC was called.
      operationId: getV2StateLedger-end
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLedgerEndResponse'
        '400':
          description: Invalid value
          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 the latest successfully pruned ledger offsets
      operationId: getV2StateLatest-pruned-offsets
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLatestPrunedOffsetsResponse'
        '400':
          description: Invalid value
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /v2/updates:
    post:
      description: |-
        Read the ledger's filtered update stream for the specified contents and filters.
        It returns the event types in accordance with the stream contents selected. Also the selection criteria
        for individual events depends on the transaction shape chosen.

        - ACS delta: a requesting party must be a stakeholder of an event for it to be included.
        - ledger effects: a requesting party must be a witness of an event for it to be included.
        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, Invalid value for: body, Invalid value for:
            query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms'
          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, Invalid value for: body, Invalid value for:
            query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms'
          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, Invalid value for: body, Invalid value for:
            query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms'
          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, Invalid value for: path parameter offset, Invalid
            value for: query parameter parties'
          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, Invalid value for: body'
          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: |-
        Lookup an update by its offset.
        If there is no update with this offset, or all the events are filtered, an UPDATE_NOT_FOUND error will be raised.
      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, Invalid value for: body'
          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, Invalid value for: body'
          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: |-
        Lookup an update by its ID.
        If there is no update with this ID, or all the events are filtered, an UPDATE_NOT_FOUND error will be raised.
      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, Invalid value for: body'
          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, Invalid value for: query parameter parties'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      deprecated: true
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /v2/updates/get-updates-page:
    post:
      description: |-
        Read a page of ledger's filtered updates. It returns the event types in accordance with
        the specified contents and filters.
        Additionally, the selection criteria for individual events depends on the transaction shape chosen.

        - ACS delta: an event is included only if the requesting party is a stakeholder.
        - ledger effects: an event is included if the requesting party is a witness.
      operationId: postV2UpdatesGet-updates-page
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetUpdatesPageRequest'
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsGetUpdatesPageResponse'
        '400':
          description: 'Invalid value, Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /v2/users:
    get:
      description: List all existing 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, Invalid value for: query parameter pageSize,
            Invalid value for: query parameter pageToken'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    post:
      description: Create a new 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, Invalid value for: body'
          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 the user data of a specific user or the authenticated user.
      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, Invalid value for: query parameter identity-provider-id'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    delete:
      description: Delete an existing user and all its rights.
      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
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    patch:
      description: Update selected modifiable attribute of a user resource described
        by the ``User`` message.
      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, Invalid value for: body'
          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 the user data of the current authenticated user.
      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, Invalid value for: query parameter identity-provider-id'
          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 the set of all rights granted to a user.
      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
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    post:
      description: |-
        Grant rights to a user.
        Granting rights does not affect the resource version of the corresponding user.
      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, Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    patch:
      description: |-
        Revoke rights from a user.
        Revoking rights does not affect the resource version of the corresponding user.
      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, Invalid value for: body'
          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 the assignment of a user from one IDP to another.
      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, Invalid value for: body'
          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 existing identity provider configurations.
      operationId: getV2Idps
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListIdentityProviderConfigsResponse'
        '400':
          description: Invalid value
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    post:
      description: |-
        Create a new identity provider configuration.
        The request will fail if the maximum allowed number of separate configurations is reached.
      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, Invalid value for: body'
          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 the identity provider configuration data by id.
      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
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    delete:
      description: Delete an existing identity provider configuration.
      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
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
    patch:
      description: |-
        Update selected modifiable attribute of an identity provider config resource described
        by the ``IdentityProviderConfig`` message.
      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, Invalid value for: body'
          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: Requires `readAs` scope for the submitting party when LAPI User
        authorization is enabled
      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, Invalid value for: body'
          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 prepared submission _asynchronously_ on the ledger.
        Requires `actAs` or `executeAs` scope for the submitting party when LAPI User authorization is enabled
        Requires a signature of the transaction from the submitting external party.
      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, Invalid value for: body'
          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: Similar to ExecuteSubmission but _synchronously_ wait for the completion
        of the transaction
      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, Invalid value for: body'
          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: Similar to ExecuteSubmissionAndWait but additionally returns the
        transaction
      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, Invalid value for: body'
          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: |-
        A preferred package is the highest-versioned package for a provided package-name
        that is vetted by all the participants hosting the provided parties.

        Ledger API clients should use this endpoint for constructing command submissions
        that are compatible with the provided preferred package, by making informed decisions on:
        - which are the compatible packages that can be used to create contracts
        - which contract or exercise choice argument version can be used in the command
        - which choices can be executed on a template or interface of a contract

        Can be accessed by any Ledger API client with a valid token when Ledger API authorization is enabled.

        Provided for backwards compatibility, it will be removed in the Canton version 3.4.0
      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, 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'
          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: |-
        Compute the preferred packages for the vetting requirements in the request.
        A preferred package is the highest-versioned package for a provided package-name
        that is vetted by all the participants hosting the provided parties.

        Ledger API clients should use this endpoint for constructing command submissions
        that are compatible with the provided preferred packages, by making informed decisions on:
        - which are the compatible packages that can be used to create contracts
        - which contract or exercise choice argument version can be used in the command
        - which choices can be executed on a template or interface of a contract

        If the package preferences could not be computed due to no selection satisfying the requirements,
        a `FAILED_PRECONDITION` error will be returned.

        Can be accessed by any Ledger API client with a valid token when Ledger API authorization is enabled.

        Experimental API: this endpoint is not guaranteed to provide backwards compatibility in future releases
      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, Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /livez:
    get:
      description: Checks if the service is alive
      operationId: getLivez
      responses:
        '200':
          description: 'OK: service is alive'
        '400':
          description: Invalid value
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsCantonError'
      security:
      - httpAuth: []
      - apiKeyAuth: []
  /readyz:
    get:
      description: Checks if the service is ready to serve requests
      operationId: getReadyz
      responses:
        '200':
          description: 'OK: readiness message'
          content:
            text/plain:
              schema:
                type: string
        '400':
          description: Invalid value
          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, Invalid value for: body'
          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) OR IsAuthenticatedUser(user_id)``
      type: object
      required:
      - synchronizer
      - onboardingTransactions
      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 PartyToParticipant to register the hosting relationship of the party, and the party's signing keys and threshold.
            Must be provided.

            Required: must be non-empty
          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

            Optional: can be empty
          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
        waitForAllocation:
          description: |-
            When true, this RPC will attempt to wait for the party to be allocated on the synchronizer before returning.
            When false, the allocation will happen asynchronously.
            This is a best effort only as this synchronization is only possible for non decentralized parties (single hosting node).
            For decentralized parties, this flag is ignored.
            Defaults to true.

            Optional
          type: boolean
        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
    AllocateExternalPartyResponse:
      title: AllocateExternalPartyResponse
      type: object
      required:
      - partyId
      properties:
        partyId:
          description: |-
            The allocated party id

            Required
          type: string
    AllocatePartyRequest:
      title: AllocatePartyRequest
      description: |-
        Required authorization:
          ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id) OR IsAuthenticatedUser(user_id)``
      type: object
      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``
            If not set, assume the party is managed by the default identity provider or party is not hosted by the participant.

            Optional
          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
      required:
      - partyDetails
      properties:
        partyDetails:
          $ref: '#/components/schemas/PartyDetails'
          description: |-
            The allocated party details

            Required
    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
      - witnessParties
      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.
            It is a valid absolute offset (positive integer)

            Required
          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.
            Must be valid node ID (non-negative integer)

            Required
          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: must be non-empty
          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: can be empty
          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:
          description: |-
            The right to authorize commands for this party.

            Required
          type: string
    CanExecuteAs:
      title: CanExecuteAs
      type: object
      required:
      - value
      properties:
        value:
          $ref: '#/components/schemas/CanExecuteAs1'
    CanExecuteAs1:
      title: CanExecuteAs
      type: object
      required:
      - party
      properties:
        party:
          description: |-
            The right to prepare and execute submissions as this party.
            This right does not entitle the user to perform any reads.
            If reading is required, a separate ReadAs right must be added.
            Right to execute as a party is also implicitly contained in the CanActAs right.

            Required
          type: string
    CanExecuteAsAnyParty:
      title: CanExecuteAsAnyParty
      description: |-
        The rights of a user to prepare and execute transactions as any party.
        Its utility is predominantly for users that perform interactive submissions
        on behalf of many parties.
      type: object
      required:
      - value
      properties:
        value:
          $ref: '#/components/schemas/CanExecuteAsAnyParty1'
    CanExecuteAsAnyParty1:
      title: CanExecuteAsAnyParty
      description: |-
        The rights of a user to prepare and execute transactions as any party.
        Its utility is predominantly for users that perform interactive submissions
        on behalf of many parties.
      type: object
    CanReadAs:
      title: CanReadAs
      type: object
      required:
      - value
      properties:
        value:
          $ref: '#/components/schemas/CanReadAs1'
    CanReadAs1:
      title: CanReadAs
      type: object
      required:
      - party
      properties:
        party:
          description: |-
            The right to read ledger data visible to this party.

            Required
          type: string
    CanReadAsAnyParty:
      title: CanReadAsAnyParty
      description: |-
        The rights of a participant's super reader. Its utility is predominantly for
        feeding external tools, such as PQS, continually without the need to change subscriptions
        as new parties pop in and out of existence.
      type: object
      required:
      - value
      properties:
        value:
          $ref: '#/components/schemas/CanReadAsAnyParty1'
    CanReadAsAnyParty1:
      title: CanReadAsAnyParty
      description: |-
        The rights of a participant's super reader. Its utility is predominantly for
        feeding external tools, such as PQS, continually without the need to change subscriptions
        as new parties pop in and out of existence.
      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
      - userId
      - offset
      - actAs
      - synchronizerTime
      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``).

            Optional
          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``).

            Required
          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``).

            Required: must be non-empty
          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: |-
            The 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.

            Optional
        offset:
          description: |-
            May be used in a subsequent CompletionStreamRequest to resume the consumption of this stream at a later time.
            Must be a valid absolute offset (positive integer).

            Required
          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
        paidTrafficCost:
          description: |-
            The traffic cost paid by this participant node for the confirmation request
            for the submitted command.

            Commands whose execution is rejected before their corresponding
            confirmation request is ordered by the synchronizer will report a paid
            traffic cost of zero.
            If a confirmation request is ordered for a command, but the request fails
            (e.g., due to contention with a concurrent contract archival), the traffic
            cost is paid and reported on the failed completion for the request.

            If you want to correlate the traffic cost of a successful completion
            with the transaction that resulted from the command, you can use the
            ``offset`` field to retrieve the transaction using
            ``UpdateService.GetUpdateByOffset`` on the same participant node; or alternatively use the ``update_id``
            field to retrieve the transaction using ``UpdateService.GetUpdateById`` on any participant node
            that sees the transaction.

            Note: for completions processed before the participant started serving
            traffic cost on the Ledger API, this field will be set to zero.
            Additionally, the total cost incurred by the submitting node for the submission of the transaction may be greater
            than the reported cost, for example if retries were issued due to failed submissions to the synchronizer.
            The cost reported here is the one paid for ordering the confirmation request.

            Optional
          type: integer
          format: int64
    CompletionResponse:
      title: CompletionResponse
      description: Required
      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:
      - parties
      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.

            Optional
          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: must be non-empty
          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.

            Optional
          type: integer
          format: int64
    CompletionStreamResponse:
      title: CompletionStreamResponse
      type: object
      properties:
        completionResponse:
          $ref: '#/components/schemas/CompletionResponse'
    ConnectedSynchronizer:
      title: ConnectedSynchronizer
      type: object
      required:
      - synchronizerAlias
      - synchronizerId
      properties:
        synchronizerAlias:
          description: |-
            The alias of the synchronizer

            Required
          type: string
        synchronizerId:
          description: |-
            The ID of the synchronizer

            Required
          type: string
        permission:
          description: |-
            The permission on the synchronizer
            Set if a party was used in the request, otherwise unspecified.

            Optional
          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
      - estimationTimestamp
      properties:
        estimationTimestamp:
          description: |-
            Timestamp at which the estimation was made

            Required
          type: string
        confirmationRequestTrafficCostEstimation:
          description: |-
            Estimated traffic cost of the confirmation request associated with the transaction

            Required
          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

            Required
          type: integer
          format: int64
        totalTrafficCostEstimation:
          description: |-
            Sum of the fields above

            Required
          type: integer
          format: int64
    CostEstimationHints:
      title: CostEstimationHints
      description: Hints to improve cost estimation precision of a prepared transaction
      type: object
      properties:
        disabled:
          description: |-
            Disable cost estimation
            Default (not set) is false

            Optional
          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 PartyToParticipant of the external party), using keys in the order they are registered.
            Empty list is equivalent to not providing this field

            Optional: can be empty
          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
      required:
      - identityProviderConfig
      properties:
        identityProviderConfig:
          $ref: '#/components/schemas/IdentityProviderConfig'
          description: Required
    CreateIdentityProviderConfigResponse:
      title: CreateIdentityProviderConfigResponse
      type: object
      required:
      - identityProviderConfig
      properties:
        identityProviderConfig:
          $ref: '#/components/schemas/IdentityProviderConfig'
          description: Required
    CreateUserRequest:
      title: CreateUserRequest
      description: |2-
         RPC requests and responses
        ///////////////////////////
         Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(user.identity_provider_id)``
      type: object
      required:
      - user
      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: can be empty
          type: array
          items:
            $ref: '#/components/schemas/Right'
    CreateUserResponse:
      title: CreateUserResponse
      type: object
      required:
      - user
      properties:
        user:
          $ref: '#/components/schemas/User'
          description: |-
            Created user.

            Required
    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
      - createdAt
      - packageName
      - representativePackageId
      - acsDelta
      - createArgument
      - witnessParties
      - signatories
      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.
            It is a valid absolute offset (positive integer)

            Required
          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.
            Must be valid node ID (non-negative integer)

            Required
          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
        contractKeyHash:
          description: |-
            The hash of contract_key.
            This will be set if and only if ``template_id`` defines a contract key.

            Optional: can be empty
          type: string
        createArgument:
          description: |-
            The arguments that have been used to create the contract.

            Required
        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: can be empty
          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: can be empty
          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: must be non-empty
          type: array
          items:
            type: string
        signatories:
          description: |-
            The signatories for this contract as specified by the template.

            Required: must be non-empty
          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.

            Optional: can be empty
          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
      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.

        Optional
      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``.

        The deduplication guarantee applies even if the completion omits this field.

        Optional
      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:
      - createdEventBlob
      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: must be non-empty
          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
      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: can be empty
        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
      - packageName
      - acsDelta
      - actingParties
      - witnessParties
      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.
            It is a valid absolute offset (positive integer)

            Required
          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.
            Must be valid node ID (non-negative integer)

            Required
          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: must be non-empty
          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: must be non-empty
          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.

            Optional
        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: can be empty
          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: Required
          type: boolean
    ExperimentalFeatures:
      title: ExperimentalFeatures
      description: See the feature message definitions for descriptions.
      type: object
      properties:
        staticTime:
          $ref: '#/components/schemas/ExperimentalStaticTime'
          description: Optional
        commandInspectionService:
          $ref: '#/components/schemas/ExperimentalCommandInspectionService'
          description: Optional
    ExperimentalStaticTime:
      title: ExperimentalStaticTime
      description: Ledger is in the static time mode and exposes a time service.
      type: object
      required:
      - supported
      properties:
        supported:
          description: Required
          type: boolean
    FeaturesDescriptor:
      title: FeaturesDescriptor
      type: object
      required:
      - experimental
      - userManagement
      - partyManagement
      - offsetCheckpoint
      - packageFeature
      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.

            Required
        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.

            Required
        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.

            Required
        offsetCheckpoint:
          $ref: '#/components/schemas/OffsetCheckpointFeature'
          description: |-
            It contains the timeouts related to the periodic offset checkpoint emission

            Required
        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.

            Required
    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.
            If no ``CumulativeFilter`` defined, the default of a single ``WildcardFilter`` with
            include_created_event_blob unset is used.

            Optional: can be empty
          type: array
          items:
            $ref: '#/components/schemas/CumulativeFilter'
    GenerateExternalPartyTopologyRequest:
      title: GenerateExternalPartyTopologyRequest
      type: object
      required:
      - synchronizer
      - partyHint
      - publicKey
      properties:
        synchronizer:
          description: |-
            Synchronizer-id for which we are building this request.
            TODO(#27670) support synchronizer aliases

            Required
          type: string
        partyHint:
          description: |-
            The actual party id will be constructed from this hint and a fingerprint of the public key

            Required
          type: string
        publicKey:
          $ref: '#/components/schemas/SigningPublicKey'
          description: |-
            Public key

            Required
        localParticipantObservationOnly:
          description: |-
            If true, then the local participant will only be observing, not confirming. Default false.

            Optional
          type: boolean
        otherConfirmingParticipantUids:
          description: |-
            Other participant ids which should be confirming for this party

            Optional: can be empty
          type: array
          items:
            type: string
        confirmationThreshold:
          description: |-
            Confirmation threshold >= 1 for the party. Defaults to all available confirmers (or if set to 0).

            Optional
          type: integer
          format: int32
        observingParticipantUids:
          description: |-
            Other observing participant ids for this party

            Optional: can be empty
          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
      - topologyTransactions
      properties:
        partyId:
          description: |-
            The generated party id

            Required
          type: string
        publicKeyFingerprint:
          description: |-
            The fingerprint of the supplied public key

            Required
          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.

            Required: must be non-empty
          type: array
          items:
            type: string
        multiHash:
          description: |-
            the multi-hash which may be signed instead of each individual transaction

            Required: must be non-empty
          type: string
    GetActiveContractsPageRequest:
      title: GetActiveContractsPageRequest
      type: object
      required:
      - eventFormat
      properties:
        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.
            Optional, if defined, it must be a valid absolute offset (positive integer) or ledger begin offset (zero).
            If zero, the empty set will be returned.
            If not defined, the current ledger end will be used and it will be populated in the response.

            Optional
          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.

            Required
        maxPageSize:
          description: |-
            The result page will contain at most max_page_size entries of the respective active contract snapshot.
            The server might reject max_page_size breaching the server-specified limit.
            Optional, if not defined, the default will be determined by the server.

            Optional
          type: integer
          format: int32
        pageToken:
          description: |-
            To get the next page of the active contracts snapshot, the ``page_token`` should be set to the
            ``next_page_token`` of the last ``GetActiveContractsPageResponse``.
            The page token only works if subsequent requests:

            - are executed on the same participant,
            - use the same active_at_offset and event_format,
            - and the participant's store was not pruned to after the active_at_offset.

            If not specified, the first page of the active contracts snapshot will be returned.

            Optional: can be empty
          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:
      - 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.
            Must be a valid absolute offset (positive integer) or ledger begin offset (zero).
            If zero, the empty set will be returned.

            Required
          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
        streamContinuationToken:
          description: |-
            Opaque representation of a continuation token defining a position in the active contracts snapshot.
            The prefix of the active contracts snapshot will be omitted up to and including the element from which
            the continuation token was read.
            To reuse the continuation token from a `GetActiveContractsPageResponse`:

            - subsequent request must be executed on the same participant with the same version of canton,
            - subsequent request must have the same active_at_offset,
            - subsequent request must have the same event_format
            - and the participant must not have been pruned after the active_at_offset.

            If not specified, the whole active contracts snapshot will be returned.

            Optional: can be empty
          type: string
    GetConnectedSynchronizersResponse:
      title: GetConnectedSynchronizersResponse
      type: object
      properties:
        connectedSynchronizers:
          description: 'Optional: can be empty'
          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.
            If no querying_parties specified, all possible contracts could be returned.

            Optional: can be empty
          type: array
          items:
            type: string
    GetContractResponse:
      title: GetContractResponse
      type: object
      required:
      - createdEvent
      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
      - eventFormat
      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
      required:
      - identityProviderConfig
      properties:
        identityProviderConfig:
          $ref: '#/components/schemas/IdentityProviderConfig'
          description: Required
    GetLatestPrunedOffsetsResponse:
      title: GetLatestPrunedOffsetsResponse
      type: object
      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.

            Optional
          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.

            Optional
          type: integer
          format: int64
    GetLedgerApiVersionResponse:
      title: GetLedgerApiVersionResponse
      type: object
      required:
      - version
      - features
      properties:
        version:
          description: |-
            The version of the ledger API.

            Required
          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.

            Required
    GetLedgerEndResponse:
      title: GetLedgerEndResponse
      type: object
      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.

            Optional
          type: integer
          format: int64
    GetPackageStatusResponse:
      title: GetPackageStatusResponse
      type: object
      required:
      - packageStatus
      properties:
        packageStatus:
          description: |-
            The status of the package.

            Required
          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``).

            Required
          type: string
    GetPartiesResponse:
      title: GetPartiesResponse
      type: object
      required:
      - partyDetails
      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: must be non-empty
          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:
      - packageVettingRequirements
      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: must be non-empty
          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
      - packageReferences
      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: must be non-empty
          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
      - updateFormat
      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
      - updateFormat
      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
    GetUpdatesPageRequest:
      title: GetUpdatesPageRequest
      type: object
      required:
      - updateFormat
      properties:
        beginOffsetExclusive:
          description: |-
            Exclusive lower bound offset of the requested ledger section (non-negative integer).
            The response page will only contain updates whose offset is strictly greater than this.
            If set to zero or not defined, the lower bound is set to the actual pruning offset or to the beginning of the
            ledger if the participant was not pruned yet.
            If set to positive and the ledger has been pruned, this parameter must be greater or equal than the pruning offset.

            Optional
          type: integer
          format: int64
        endOffsetInclusive:
          description: |-
            Inclusive upper bound offset of the requested ledger section.
            If specified the response will only contain updates whose offset is less than or equal to this.
            If not specified response will only contain updates whose offset is less than the current ledger-end.

            Optional
          type: integer
          format: int64
        maxPageSize:
          description: |-
            The result page will contain the first max_page_size Updates of all matching updates.
            The server may reject queries with max_page_size above server specified limits.
            If not specified, the default max_page_size is determined by the server.

            Optional
          type: integer
          format: int32
        updateFormat:
          $ref: '#/components/schemas/UpdateFormat'
          description: Required
        descendingOrder:
          description: |-
            If set, the page will populate the elements in descending order starting from the end_offset_inclusive.

             Optional
          type: boolean
        pageToken:
          description: |-
            To get the next page of updates, the ``page_token`` should be set to the
            ``next_page_token`` of the last ``GetUpdatesPageResponse``.
            To achieve correct paging: subsequent requests must

            - be executed on the same participant with the same version of canton,
            - have the same begin_offset_exclusive,
            - have the same end_offset_inclusive,
            - have the same update_format and
            - have the same descending_order.

            If not specified, the first page of updates will be returned.

            Optional: can be empty
          type: string
    GetUpdatesRequest:
      title: GetUpdatesRequest
      type: object
      required:
      - beginExclusive
      properties:
        beginExclusive:
          description: |-
            Exclusive lower bound offset of the requested ledger section (non-negative integer).
            The response will only contain transactions whose offset is strictly greater than this.
            If set to zero, the lower bound is set to the beginning of the ledger.
            If the participant has been pruned, this parameter must be greater or equal than the pruning offset.
            Required
          type: integer
          format: int64
        endInclusive:
          description: |-
            Inclusive higher bound offset of the requested ledger section.
            If specified the response will only contain transactions whose offset is less than or equal to this.
            If not specified,

            - the descending_order must not be selected,
            - the stream will not terminate.

            Optional
          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
        descendingOrder:
          description: |-
            If set, the stream will populate the elements in descending order.

            Optional
          type: boolean
    GetUserResponse:
      title: GetUserResponse
      type: object
      required:
      - user
      properties:
        user:
          $ref: '#/components/schemas/User'
          description: |-
            Retrieved user.

            Required
    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
      properties:
        userId:
          description: |-
            The user to whom to grant rights.

            Required
          type: string
        rights:
          description: |-
            The rights to grant.

            Optional: can be empty
          type: array
          items:
            $ref: '#/components/schemas/Right'
        identityProviderId:
          description: |-
            The id of the ``Identity Provider``
            If not set, assume the user is managed by the default identity provider.

            Optional
          type: string
    GrantUserRightsResponse:
      title: GrantUserRightsResponse
      type: object
      properties:
        newlyGrantedRights:
          description: |-
            The rights that were newly granted by the request.

            Optional: can be empty
          type: array
          items:
            $ref: '#/components/schemas/Right'
    IdentifierFilter:
      title: IdentifierFilter
      description: Required
      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
      description: |-
        The right to administer the identity provider that the user is assigned to.
        It means, being able to manage users and parties that are also assigned
        to the same identity provider.
      type: object
      required:
      - value
      properties:
        value:
          $ref: '#/components/schemas/IdentityProviderAdmin1'
    IdentityProviderAdmin1:
      title: IdentityProviderAdmin
      description: |-
        The right to administer the identity provider that the user is assigned to.
        It means, being able to manage users and parties that are also assigned
        to the same identity provider.
      type: object
    IdentityProviderConfig:
      title: IdentityProviderConfig
      type: object
      required:
      - identityProviderId
      - issuer
      - jwksUrl
      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.
            Modifiable

            Optional
          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.
            Modifiable

            Can be left empty when used in `UpdateIdentityProviderConfigRequest` if the issuer is not being updated.

            Required
          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.
            Modifiable

            Required
          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
            Modifiable

            Optional
          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:
      - interfaceId
      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: |-
            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.

            Required
        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: |-
            The synchronizer which sequenced the archival of the contract

            Required
          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
      - 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: |-
            The offset of this event refers to the offset of the assignment,
            while the node_id is the index of within the batch.

            Required
    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
      - commands
      - actAs
      properties:
        commands:
          description: |-
            Individual elements of this atomic command. Must be non-empty.

            Required: must be non-empty
          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.

            Optional
          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: can be empty
          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: can be empty
          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

            Optional: can be empty
          type: array
          items:
            type: string
        prefetchContractKeys:
          description: |-
            Fetches the contract keys into the caches to speed up the command processing.
            Each entry specifies a key and a limit on how many contracts to prefetch for that key.
            The limit does not count disclosed contracts, and should reflect the number of
            additional contracts expected to be resolved during interpretation of the commands.
            If a key appears multiple times, the last entry's limit wins.

            Optional: can be empty
          type: array
          items:
            $ref: '#/components/schemas/PrefetchContractKey'
        tapsMaxPasses:
          description: |-
            The maximum number of passes for the Topology-Aware Package Selection (TAPS).
            Higher values can increase the chance of successful package selection for routing of interpreted transactions.
            If unset, this defaults to the value defined in the participant configuration.
            The provided value must not exceed the limit specified in the participant configuration.

            Optional
          type: integer
          format: int32
    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.

        Required
      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: |-
            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.

            Required
        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:
      - preparedTransaction
      - partySignatures
      - submissionId
      - 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
          - HASHING_SCHEME_VERSION_V3
        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:
      - preparedTransaction
      - partySignatures
      - submissionId
      - 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
          - HASHING_SCHEME_VERSION_V3
        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:
      - preparedTransaction
      - partySignatures
      - submissionId
      - 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
          - HASHING_SCHEME_VERSION_V3
        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
    JsGetActiveContractsPageResponse:
      title: JsGetActiveContractsPageResponse
      type: object
      required:
      - activeAtOffset
      - activeContracts
      properties:
        activeContracts:
          description: |-
            The collection of active contracts for this page response.

            Required: must be non-empty
          type: array
          items:
            $ref: '#/components/schemas/JsGetActiveContractsResponse'
        activeAtOffset:
          description: |-
            The active_at_offset which was specified in the request, or the calculated active_at_offset from the actual
            ledger end from at the evaluation of the request.

            Required
          type: integer
          format: int64
        nextPageToken:
          description: |-
            If not present this is the last page. If present, this token must be used to get the next page.

            Optional: can be empty
          type: string
    JsGetActiveContractsResponse:
      title: JsGetActiveContractsResponse
      type: object
      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'
        streamContinuationToken:
          description: |-
            Opaque representation of a continuation token which can be used in the request to bypass the already processed part
            of the active contracts snapshot.
            Only populated for the streaming ``GetActiveContracts`` rpc call.

            Optional: can be empty
          type: string
    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
      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
      properties:
        update:
          $ref: '#/components/schemas/Update1'
    JsGetUpdatesPageResponse:
      title: JsGetUpdatesPageResponse
      type: object
      required:
      - lowestPageOffsetExclusive
      - highestPageOffsetInclusive
      properties:
        updates:
          description: |-
            The first max_page_size updates that match the filter in the request.
            In case descending_order was selected, the order of the updates is in reversed offset order.

            Optional: can be empty
          type: array
          items:
            $ref: '#/components/schemas/JsGetUpdateResponse'
        lowestPageOffsetExclusive:
          description: |-
            Represents the lower bound of this page.

            Required
          type: integer
          format: int64
        highestPageOffsetInclusive:
          description: |-
            Represents the upper bound of the page.

            Required
          type: integer
          format: int64
        nextPageToken:
          description: |-
            If the value is not populated, this is the last page.
            If the value is populated, this token can be used to get the next page.
            If the original ``GetFirstUpdatePageRequest`` end_offset_inclusive was not specified and the request uses
            ascending order, then this token will always be populated, so you can use it to "tail" the ledger by
            repeatedly polling with the new page token returned.

            Optional: can be empty
          type: string
    JsGetUpdatesResponse:
      title: JsGetUpdatesResponse
      type: object
      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: |-
            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.

            Required
        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
        implementationPackageId:
          description: |-
            The package defining the interface implementation used to compute the view.
            Can be different from the package that was used to create the contract itself,
            as the contract arguments can be upgraded or downgraded using smart-contract upgrading
            as part of computing the interface view.
            Populated if the view computation is successful, otherwise empty.

            Optional
          type: string
    JsPrepareSubmissionRequest:
      title: JsPrepareSubmissionRequest
      type: object
      required:
      - commandId
      - commands
      - actAs
      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: must be non-empty
          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: can be empty
          type: array
          items:
            type: string
        disclosedContracts:
          description: |-
            Additional contracts used to resolve contract & contract key lookups.

            Optional: can be empty
          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: can be empty
          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.
            Defaults to false

            Optional
          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: can be empty
          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.

            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

            Optional
        tapsMaxPasses:
          description: |-
            The maximum number of passes for the Topology-Aware Package Selection (TAPS).
            Higher values can increase the chance of successful package selection for routing of interpreted transactions.
            If unset, this defaults to the value defined in the participant configuration.
            The provided value must not exceed the limit specified in the participant configuration.

            Optional
          type: integer
          format: int32
        hashingSchemeVersion:
          description: |-
            The hashing scheme version to be used when building the hash.
            Defaults to HASHING_SCHEME_VERSION_V2.

            Optional
          type: string
          enum:
          - HASHING_SCHEME_VERSION_UNSPECIFIED
          - HASHING_SCHEME_VERSION_V2
          - HASHING_SCHEME_VERSION_V3
    JsPrepareSubmissionResponse:
      title: JsPrepareSubmissionResponse
      description: '[docs-entry-end: HashingSchemeVersion]'
      type: object
      required:
      - preparedTransaction
      - 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.

            Required
          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

            Required: must be non-empty
          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
          - HASHING_SCHEME_VERSION_V3
        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.

            Optional
          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
      - offset
      - recordTime
      - synchronizerId
      - events
      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``.
            Must be a valid absolute offset (positive integer).

            Required
          type: integer
          format: int64
        events:
          description: |-
            The collection of reassignment events.

            Required: must be non-empty
          type: array
          items:
            $ref: '#/components/schemas/JsReassignmentEvent'
        traceContext:
          $ref: '#/components/schemas/TraceContext'
          description: |-
            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.

            Optional
        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
        paidTrafficCost:
          description: |-
            The traffic cost that this participant node paid for the corresponding (un)assignment request.

            Not set for transactions that were
            - initiated by another participant
            - initiated offline via the repair service
            - processed before the participant started serving traffic cost on the Ledger API
            - returned as part of a query filtering for a non submitting party

            Optional
          type: integer
          format: int64
    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
      properties:
        transactionTree:
          $ref: '#/components/schemas/JsTransactionTree'
    JsTopologyTransaction:
      title: JsTopologyTransaction
      type: object
      required:
      - updateId
      - offset
      - synchronizerId
      - recordTime
      - events
      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``.
            It is a valid absolute offset (positive integer).

            Required
          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: must be non-empty
          type: array
          items:
            $ref: '#/components/schemas/TopologyEvent'
        traceContext:
          $ref: '#/components/schemas/TraceContext'
          description: |-
            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.

            Optional
    JsTransaction:
      title: JsTransaction
      description: Filtered view of an on-ledger transaction's create and archive
        events.
      type: object
      required:
      - updateId
      - effectiveAt
      - offset
      - synchronizerId
      - recordTime
      - events
      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: must be non-empty
          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``.
            It is a valid absolute offset (positive integer).

            Required
          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: |-
            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.

            Optional
        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: can be empty
          type: string
        paidTrafficCost:
          description: |-
            The traffic cost that this participant node paid for the confirmation
            request for this transaction.

            Not set for transactions that were
            - initiated by another participant
            - initiated offline via the repair service
            - processed before the participant started serving traffic cost on the Ledger API
            - returned as part of a query filtering for a non submitting party

            Optional
          type: integer
          format: int64
    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
      - effectiveAt
      - 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
      required:
      - identityProviderConfigs
      properties:
        identityProviderConfigs:
          description: |-
            The list of identity provider configs

            Required: must be non-empty
          type: array
          items:
            $ref: '#/components/schemas/IdentityProviderConfig'
    ListKnownPartiesResponse:
      title: ListKnownPartiesResponse
      type: object
      required:
      - partyDetails
      properties:
        partyDetails:
          description: |-
            The details of all Daml parties known by the participant.

            Required: must be non-empty
          type: array
          items:
            $ref: '#/components/schemas/PartyDetails'
        nextPageToken:
          description: |-
            Pagination token to retrieve the next page.
            Empty, if there are no further results.

            Optional
          type: string
    ListPackagesResponse:
      title: ListPackagesResponse
      type: object
      required:
      - packageIds
      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: must be non-empty
          type: array
          items:
            type: string
    ListUserRightsResponse:
      title: ListUserRightsResponse
      type: object
      properties:
        rights:
          description: |-
            All rights of the user.

            Optional: can be empty
          type: array
          items:
            $ref: '#/components/schemas/Right'
    ListUsersResponse:
      title: ListUsersResponse
      type: object
      properties:
        users:
          description: |-
            A subset of users of the participant node that fit into this page.
            Can be empty if no more users

            Optional: can be empty
          type: array
          items:
            $ref: '#/components/schemas/User'
        nextPageToken:
          description: |-
            Pagination token to retrieve the next page.
            Empty, if there are no further results.

            Optional
          type: string
    ListVettedPackagesRequest:
      title: ListVettedPackagesRequest
      type: object
      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
      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.

            Optional: can be empty
          type: array
          items:
            $ref: '#/components/schemas/VettedPackages'
        nextPageToken:
          description: |-
            Pagination token to retrieve the next page.
            Empty string if there are no further results.

            Optional
          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
      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
      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.
            Modifiable

            Optional: can be empty
    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``.
            Must be a valid absolute offset (positive integer).

            Required
          type: integer
          format: int64
        synchronizerTimes:
          description: |-
            The times associated with each synchronizer at this offset.

            Optional: can be empty
          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
      required:
      - maxOffsetCheckpointEmissionDelay
      properties:
        maxOffsetCheckpointEmissionDelay:
          $ref: '#/components/schemas/Duration'
          description: |-
            The maximum delay to emmit a new OffsetCheckpoint if it exists

            Required
    Operation:
      title: Operation
      description: Required
      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.

            Required
          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.

            Optional: can be empty
          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.

            Optional: can be empty
          type: array
          items:
            type: string
    PackagePreference:
      title: PackagePreference
      type: object
      required:
      - synchronizerId
      - packageReference
      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
      - parties
      properties:
        parties:
          description: |-
            The parties whose participants' vetting state should be considered when resolving the preferred package.

            Required: must be non-empty
          type: array
          items:
            type: string
        packageName:
          description: |-
            The package-name for which the preferred package should be resolved.

            Required
          type: string
    ParticipantAdmin:
      title: ParticipantAdmin
      description: The right to administer the participant node.
      type: object
      required:
      - value
      properties:
        value:
          $ref: '#/components/schemas/ParticipantAdmin1'
    ParticipantAdmin1:
      title: ParticipantAdmin
      description: The right to administer the participant node.
      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
    ParticipantAuthorizationOnboarding:
      title: ParticipantAuthorizationOnboarding
      type: object
      required:
      - value
      properties:
        value:
          $ref: '#/components/schemas/ParticipantAuthorizationOnboarding1'
    ParticipantAuthorizationOnboarding1:
      title: ParticipantAuthorizationOnboarding
      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.

            Optional: can be empty
          type: array
          items:
            type: string
    PartyDetails:
      title: PartyDetails
      type: object
      required:
      - party
      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.
            Modifiable

            Optional
        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.

            Optional
          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).

            Required
          type: integer
          format: int32
    PartySignatures:
      title: PartySignatures
      description: Additional signatures provided by the submitting parties
      type: object
      required:
      - signatures
      properties:
        signatures:
          description: |-
            Additional signatures provided by all individual parties

            Required: must be non-empty
          type: array
          items:
            $ref: '#/components/schemas/SinglePartySignatures'
    PrefetchContractKey:
      title: PrefetchContractKey
      description: Preload contracts
      type: object
      required:
      - templateId
      - 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
        limit:
          description: |-
            The number of contracts to prefetch for this key, if available.
            This is in addition to disclosed contracts.
            - for backward compatibility reason, absence is interpreted as 1
            - 0 is forbidden
            - capped at 2^31 - 1. The system may impose further limits.

            Optional
          type: integer
          format: int32
    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
      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
      properties:
        command:
          $ref: '#/components/schemas/Command1'
    ReassignmentCommands:
      title: ReassignmentCommands
      type: object
      required:
      - commandId
      - submitter
      - commands
      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.

            Optional
          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.

            Required: 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
      properties:
        userId:
          description: |-
            The user from whom to revoke rights.

            Required
          type: string
        rights:
          description: |-
            The rights to revoke.

            Optional: can be empty
          type: array
          items:
            $ref: '#/components/schemas/Right'
        identityProviderId:
          description: |-
            The id of the ``Identity Provider``
            If not set, assume the user is managed by the default identity provider.

            Optional
          type: string
    RevokeUserRightsResponse:
      title: RevokeUserRightsResponse
      type: object
      properties:
        newlyRevokedRights:
          description: |-
            The rights that were actually revoked by the request.

            Optional: can be empty
          type: array
          items:
            $ref: '#/components/schemas/Right'
    Right:
      title: Right
      description: A right granted to a user.
      type: object
      properties:
        kind:
          $ref: '#/components/schemas/Kind'
    Serial:
      title: Serial
      description: Optional
      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: Required
          type: string
        signature:
          description: 'Required: must be non-empty'
          type: string
        signedBy:
          description: |-
            The fingerprint/id of the keypair used to create this signature and needed to verify.

            Required
          type: string
        signingAlgorithmSpec:
          description: |-
            The signing algorithm specification used to produce this signature

            Required
          type: string
    SignedTransaction:
      title: SignedTransaction
      type: object
      required:
      - transaction
      properties:
        transaction:
          description: |-
            The serialized TopologyTransaction

            Required: must be non-empty
          type: string
        signatures:
          description: |-
            Additional signatures for this transaction specifically
            Use for transactions that require additional signatures beyond the namespace key signatures
            e.g: PartyToParticipant must be signed by all registered keys

            Optional: can be empty
          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

            Required
          example: CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO
          type: string
        keyData:
          description: |-
            Serialized public key in the format specified above

            Required: must be non-empty
          type: string
        keySpec:
          description: |-
            The key specification

            Required
          example: SIGNING_KEY_SPEC_EC_CURVE25519
          type: string
    SinglePartySignatures:
      title: SinglePartySignatures
      description: Signatures provided by a single party
      type: object
      required:
      - party
      - signatures
      properties:
        party:
          description: |-
            Submitting party

            Required
          type: string
        signatures:
          description: |-
            Signatures

            Required: must be non-empty
          type: array
          items:
            $ref: '#/components/schemas/Signature'
    SubmitAndWaitForReassignmentRequest:
      title: SubmitAndWaitForReassignmentRequest
      description: This reassignment is executed as a single atomic update.
      type: object
      required:
      - reassignmentCommands
      properties:
        reassignmentCommands:
          $ref: '#/components/schemas/ReassignmentCommands'
          description: |-
            The reassignment commands to be submitted.

            Required
        eventFormat:
          $ref: '#/components/schemas/EventFormat'
          description: |-
            If no event_format provided, the result will contain no events.
            The events in the result, will take shape TRANSACTION_SHAPE_ACS_DELTA.

            Optional
    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
      required:
      - reassignmentCommands
      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
      - recordTime
      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:
      - templateId
      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
      description: Required
      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
      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:
        - ParticipantAuthorizationOnboarding
        properties:
          ParticipantAuthorizationOnboarding:
            $ref: '#/components/schemas/ParticipantAuthorizationOnboarding'
      - 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.
            If unset, no participant authorization topology events are emitted in the stream.

            Optional
    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``.

            Optional: can be empty
          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.

            Optional: can be empty
          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/

            Optional
          type: string
        tracestate:
          description: Optional
          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
      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
      - eventFormat
      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
      - reassignmentCounter
      - packageName
      - offset
      - nodeId
      - templateId
      - witnessParties
      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: must be non-empty
          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.
            Must be a valid absolute offset (positive integer)

            Required
          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.
            Must be valid node ID (non-negative integer)

            Required
          type: integer
          format: int32
    UnknownFieldSet:
      title: UnknownFieldSet
      type: object
      required:
      - fields
      properties:
        fields:
          $ref: '#/components/schemas/Map_Int_Field'
    Unvet:
      title: Unvet
      description: Remove packages from the set of vetted packages
      type: object
      required:
      - value
      properties:
        value:
          $ref: '#/components/schemas/Unvet1'
    Unvet1:
      title: Unvet
      description: Remove packages from the set of vetted packages
      type: object
      required:
      - packages
      properties:
        packages:
          description: |-
            Packages to be unvetted.

            If a reference in this list matches multiple packages, they are all
            unvetted.

            Required: must be non-empty
          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.
            If unset, no transactions are emitted in the stream.

            Optional
        includeReassignments:
          $ref: '#/components/schemas/EventFormat'
          description: |-
            Include (un)assignments in the stream.
            The events in the result take the shape TRANSACTION_SHAPE_ACS_DELTA.
            If unset, no (un)assignments are emitted in the stream.

            Optional
        includeTopologyEvents:
          $ref: '#/components/schemas/TopologyFormat'
          description: |-
            Include topology events in streams.
            If unset no topology events are emitted in the stream.

            Optional
    UpdateIdentityProviderConfigRequest:
      title: UpdateIdentityProviderConfigRequest
      type: object
      required:
      - identityProviderConfig
      - updateMask
      properties:
        identityProviderConfig:
          $ref: '#/components/schemas/IdentityProviderConfig'
          description: |-
            The identity provider config to update.
            Modifiable

            Required
        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
      required:
      - identityProviderConfig
      properties:
        identityProviderConfig:
          $ref: '#/components/schemas/IdentityProviderConfig'
          description: |-
            Updated identity provider config

            Required
    UpdatePartyDetailsRequest:
      title: UpdatePartyDetailsRequest
      description: 'Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(party_details.identity_provider_id)``'
      type: object
      required:
      - partyDetails
      - updateMask
      properties:
        partyDetails:
          $ref: '#/components/schemas/PartyDetails'
          description: |-
            Party to be updated
            Modifiable

            Required
        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
      required:
      - partyDetails
      properties:
        partyDetails:
          $ref: '#/components/schemas/PartyDetails'
          description: |-
            Updated party details

            Required
    UpdateUserIdentityProviderIdRequest:
      title: UpdateUserIdentityProviderIdRequest
      description: 'Required authorization: ``HasRight(ParticipantAdmin)``'
      type: object
      required:
      - userId
      properties:
        userId:
          description: |-
            User to update

            Required
          type: string
        sourceIdentityProviderId:
          description: |-
            Current identity provider ID of the user
            If omitted, the default IDP is assumed

            Optional
          type: string
        targetIdentityProviderId:
          description: |-
            Target identity provider ID of the user
            If omitted, the default IDP is assumed

            Optional
          type: string
    UpdateUserIdentityProviderIdResponse:
      title: UpdateUserIdentityProviderIdResponse
      type: object
    UpdateUserRequest:
      title: UpdateUserRequest
      description: 'Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(user.identity_provider_id)``'
      type: object
      required:
      - user
      - updateMask
      properties:
        user:
          $ref: '#/components/schemas/User'
          description: |-
            The user to update.
            Modifiable

            Required
        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
      required:
      - user
      properties:
        user:
          $ref: '#/components/schemas/User'
          description: |-
            Updated user

            Required
    UpdateVettedPackagesRequest:
      title: UpdateVettedPackagesRequest
      type: object
      required:
      - changes
      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.

            Required: must be non-empty
          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.
            Defaults to false.

            Optional
          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: can be empty
          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
      required:
      - newVettedPackages
      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.

            Not populated if no vetted topology state exists prior to the update.

            Optional
        newVettedPackages:
          $ref: '#/components/schemas/VettedPackages'
          description: |-
            All vetted packages on this participant and synchronizer, after the specified changes.

            Required
    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
      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.
            Modifiable

            Optional
          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.
            Modifiable

            Optional
          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.
            Modifiable

            Optional
        identityProviderId:
          description: |-
            The ID of the identity provider configured by ``Identity Provider Config``
            If not set, assume the user is managed by the default identity provider.

            Optional
          type: string
        primaryPartyAuthentication:
          description: |-
            If set to true, the user may authenticate against the Ledger API by signing
            a Party JWT using the primary party's signing key.
            Modifiable

            Optional
          type: boolean
    UserManagementFeature:
      title: UserManagementFeature
      type: object
      required:
      - supported
      - maxRightsPerUser
      - maxUsersPageSize
      properties:
        supported:
          description: |-
            Whether the Ledger API server provides the user management service.

            Required
          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.

            Required
          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.

            Required
          type: integer
          format: int32
    Vet:
      title: Vet
      description: |-
        Set vetting bounds of a list of packages. Packages that were not previously
        vetted have their bounds added, previous vetting bounds are overwritten.
      type: object
      required:
      - value
      properties:
        value:
          $ref: '#/components/schemas/Vet1'
    Vet1:
      title: Vet
      description: |-
        Set vetting bounds of a list of packages. Packages that were not previously
        vetted have their bounds added, previous vetting bounds are overwritten.
      type: object
      required:
      - packages
      properties:
        packages:
          description: |-
            Packages to be vetted.

            If a reference in this list matches more than one package, the change is
            considered ambiguous and the entire update request is rejected. In other
            words, every reference must match exactly one package.

            Required: must be non-empty
          type: array
          items:
            $ref: '#/components/schemas/VettedPackagesRef'
        newValidFromInclusive:
          description: |-
            The time from which these packages should be vetted, prior lower bounds
            are overwritten.
            Optional
          type: string
        newValidUntilExclusive:
          description: |-
            The time until which these packages should be vetted, prior upper bounds
            are overwritten.
            Optional
          type: string
    VettedPackage:
      title: VettedPackage
      description: |-
        A package that is vetting on a given participant and synchronizer,
        modelled after ``VettedPackage`` in `topology.proto <https://github.com/digital-asset/canton/blob/main/community/base/src/main/protobuf/com/digitalasset/canton/protocol/v30/topology.proto#L206>`_,
        enriched with the package name and version.
      type: object
      required:
      - packageId
      properties:
        packageId:
          description: |-
            Package ID of this package

            Required
          type: string
        validFromInclusive:
          description: |-
            The time from which this package is vetted. Empty if vetting time has no
            lower bound.

            Optional
          type: string
        validUntilExclusive:
          description: |-
            The time until which this package is vetted. Empty if vetting time has no
            upper bound.

            Optional
          type: string
        packageName:
          description: |-
            Name of this package.
            Only available if the package has been uploaded to the current participant.

            Optional
          type: string
        packageVersion:
          description: |-
            Version of this package.
            Only available if the package has been uploaded to the current participant.

            Optional
          type: string
    VettedPackages:
      title: VettedPackages
      description: |-
        The list of packages vetted on a given participant and synchronizer, modelled
        after ``VettedPackages`` in `topology.proto <https://github.com/digital-asset/canton/blob/main/community/base/src/main/protobuf/com/digitalasset/canton/protocol/v30/topology.proto#L206>`_.
        The list only contains packages that matched a filter in the query that
        originated it.
      type: object
      required:
      - participantId
      - synchronizerId
      - topologySerial
      - packages
      properties:
        packages:
          description: |-
            Sorted by package_name and package_version where known, and package_id as a
            last resort.

            Required: must be non-empty
          type: array
          items:
            $ref: '#/components/schemas/VettedPackage'
        participantId:
          description: |-
            Participant on which these packages are vetted.

            Required
          type: string
        synchronizerId:
          description: |-
            Synchronizer on which these packages are vetted.

            Required
          type: string
        topologySerial:
          description: |-
            Serial of last ``VettedPackages`` topology transaction of this participant
            and on this synchronizer.

            Required
          type: integer
          format: int32
    VettedPackagesChange:
      title: VettedPackagesChange
      description: A change to the set of vetted packages.
      type: object
      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
      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
      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
