> ## Documentation Index
> Fetch the complete documentation index at: https://cantonfoundation-generated-reference-full-stack-preview.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v0/events/:update_id

> Returns the event with the given update_id. An event bears some combination of a transaction, a contract reassignment, and a verdict.

<div class="x2mdx-ref-page x2mdx-ref-page--operation x2mdx-ref-page--manual-api" />

<div class="x2mdx-ref-hero">
  <p class="x2mdx-ref-summary">Returns the event with the given update\_id. An event bears some combination of a transaction, a contract reassignment, and a verdict.</p>

  <div class="x2mdx-ref-badges">
    <span class="x2mdx-ref-badge x2mdx-ref-badge--protocol">OpenAPI</span>

    <a class="x2mdx-ref-badge x2mdx-ref-badge--added" href="#history-added-0-5-10">Present since at least 0.5.10</a>

    <a class="x2mdx-ref-badge x2mdx-ref-badge--changed" href="#history-updated-0-6-10">Updated 0.6.10</a>
  </div>
</div>

<RequestExample>
  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl --request GET \
    --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events/{update_id}'
  ```

  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import json
  import requests

  url = "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events/{update_id}"
  response = requests.request("GET", url)

  print(response.text)
  ```

  ```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  const response = await fetch('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events/{update_id}', {
    method: 'GET',
  });

  console.log(await response.text());
  ```

  ```php PHP theme={"theme":{"light":"github-light","dark":"github-dark"}}
  <?php
  $curl = curl_init();

  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events/{update_id}',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_CUSTOMREQUEST => 'GET',
  ]);

  $response = curl_exec($curl);
  echo $response;
  ```

  ```go Go theme={"theme":{"light":"github-light","dark":"github-dark"}}
  package main

  import (
    "fmt"
    "io"
    "net/http"
  )

  func main() {
    req, _ := http.NewRequest("GET", "https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events/{update_id}", nil)
    response, _ := http.DefaultClient.Do(req)
    defer response.Body.Close()
    body, _ := io.ReadAll(response.Body)
    fmt.Println(string(body))
  }
  ```

  ```java Java theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import java.net.URI;
  import java.net.http.HttpClient;
  import java.net.http.HttpRequest;
  import java.net.http.HttpResponse;

  var request = HttpRequest.newBuilder()
      .uri(URI.create("https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events/{update_id}"))
      .method("GET", HttpRequest.BodyPublishers.noBody())
      .build();
  var response = HttpClient.newHttpClient().send(
      request, HttpResponse.BodyHandlers.ofString());
  System.out.println(response.body());
  ```

  ```ruby Ruby theme={"theme":{"light":"github-light","dark":"github-dark"}}
  require 'net/http'
  require 'uri'

  uri = URI('https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events/{update_id}')
  request = Net::HTTP::Get.new(uri)
  response = Net::HTTP.start(uri.hostname, uri.port) do |http|
    http.request(request)
  end
  puts response.body
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "update": {
      "update_id": "<string>",
      "migration_id": 123,
      "workflow_id": "<string>",
      "record_time": "<string>",
      "synchronizer_id": "<string>",
      "effective_at": "<string>",
      "root_event_ids": [
        "<string>"
      ],
      "events_by_id": {},
      "external_transaction_hash": "<string>"
    },
    "verdict": {
      "update_id": "<string>",
      "migration_id": 123,
      "domain_id": "<string>",
      "record_time": "<string>",
      "finalization_time": "<string>",
      "submitting_parties": [
        "<string>"
      ],
      "submitting_participant_uid": "<string>",
      "verdict_result": "VERDICT_RESULT_UNSPECIFIED",
      "mediator_group": 123,
      "transaction_views": {
        "views": [
          {
            "view_id": 123,
            "informees": [
              "<string>"
            ],
            "confirming_parties": [
              {
                "parties": [
                  "<string>"
                ],
                "threshold": 123
              }
            ],
            "sub_views": [
              123
            ],
            "view_hash": "<string>"
          }
        ],
        "root_views": [
          123
        ]
      }
    },
    "traffic_summary": {
      "total_traffic_cost": 123,
      "envelope_traffic_summaries": [
        {
          "traffic_cost": 123,
          "view_ids": [
            123
          ]
        }
      ]
    },
    "app_activity_records": {
      "round_number": 123,
      "records": [
        {
          "party": "<string>",
          "weight": 123
        }
      ]
    }
  }
  ```

  ```json 400 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "error": "<string>"
  }
  ```

  ```json 404 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "error": "<string>"
  }
  ```

  ```json 500 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "error": "<string>"
  }
  ```
</ResponseExample>

## Path parameters

<ParamField path="update_id" type="string" required />

## Query parameters

<ParamField query="daml_value_encoding" type="object">
  OpenAPI type: <code>DamlValueEncoding</code>.

  How daml values should be encoded in the response. "compact\_json" is a compact, human-readable JSON encoding. It is the same encoding as the one used in the HTTP JSON API or the JavaScript codegen. "protobuf\_json" is a verbose JSON encoding that is more difficult to parse, but contains type information, i.e., the values can be parsed losslessly without having access to the Daml source code. Optional and defaults to "compact\_json".

  Allowed values: <code>compact\_json</code>, <code>protobuf\_json</code>.
</ParamField>

## Responses

### 200

ok

<div class="x2mdx-ref-badges">
  <span class="x2mdx-ref-badge x2mdx-ref-badge--neutral">application/json</span>
</div>

<ResponseField name="update" type="UpdateHistoryItemV2">
  An individual item in the update history. May be a transaction or a contract reassignment.

  <Expandable title="child attributes">
    <ResponseField name="UpdateHistoryTransactionV2" type="UpdateHistoryTransactionV2">
      <Expandable title="child attributes">
        <ResponseField name="update_id" type="string" required>
          The id of the update.
        </ResponseField>

        <ResponseField name="migration_id" type="integer (int64)" required>
          The migration id of the synchronizer.
        </ResponseField>

        <ResponseField name="workflow_id" type="string" required>
          This transaction's Daml workflow ID; a workflow ID can be associated with multiple transactions. If empty, no workflow ID was set.
        </ResponseField>

        <ResponseField name="record_time" type="string" required>
          The time at which the transaction was sequenced, with microsecond resolution, using ISO-8601 representation.
        </ResponseField>

        <ResponseField name="synchronizer_id" type="string" required>
          The id of the synchronizer through which this transaction was sequenced.
        </ResponseField>

        <ResponseField name="effective_at" type="string" required>
          Ledger effective time, using ISO-8601 representation. This is the time returned by `getTime` for all Daml executed as part of this transaction, both by the submitting participant and all confirming participants.
        </ResponseField>

        <ResponseField name="root_event_ids" type="string[]" required>
          Roots of the transaction tree. These are guaranteed to occur as keys of the `events_by_id` object.
        </ResponseField>

        <ResponseField name="events_by_id" type="object" required>
          Changes to the ledger that were caused by this transaction, keyed by ID and sorted lexicographically by ID for display consistency. Values are nodes of the transaction tree. Within a transaction, IDs may be referenced by `root_event_ids` or `child_event_ids` in `ExercisedEvent` herein, which are sorted in the order as they occurred in the transaction.
        </ResponseField>

        <ResponseField name="external_transaction_hash" type="string">
          For an externally signed transaction, contains the external transaction hash signed by the external party. Can be used to correlate an external submission with a committed transaction. This field is conditionally omitted from JSON when null (see OmitNullString).
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="UpdateHistoryReassignment" type="UpdateHistoryReassignment">
      A contract reassignment between synchronizer. May be an assignment or unassignment.

      <Expandable title="child attributes">
        <ResponseField name="update_id" type="string" required>
          The id of the update.
        </ResponseField>

        <ResponseField name="offset" type="string" required>
          The absolute offset. Note that this field may not be the same across nodes, and therefore should not be compared between SVs.
        </ResponseField>

        <ResponseField name="record_time" type="string" required>
          The time at which the transaction was sequenced.
        </ResponseField>

        <ResponseField name="event" type="oneOf" required>
          The reassignment event. May be an assignment or unassignment.

          <Expandable title="child attributes">
            <ResponseField name="UpdateHistoryAssignment" type="UpdateHistoryAssignment">
              <Expandable title="child attributes">
                <ResponseField name="submitter" type="string" required>
                  The party ID who submitted this reassignment
                </ResponseField>

                <ResponseField name="source_synchronizer" type="string" required>
                  The id of the synchronizer from which the contract was reassigned
                </ResponseField>

                <ResponseField name="target_synchronizer" type="string" required>
                  The id of the synchronizer to which the contract was reassigned
                </ResponseField>

                <ResponseField name="migration_id" type="integer (int64)" required>
                  The migration id of the target synchronizer
                </ResponseField>

                <ResponseField name="unassign_id" type="string" required>
                  The id of the corresponding unassign event; this assignment will usually, but not always, occur after the so-identified unassignment event.
                </ResponseField>

                <ResponseField name="created_event" type="CreatedEvent" required>
                  The corresponding contract create event

                  <Expandable title="child attributes">
                    <ResponseField name="event_type" type="string" required />

                    <ResponseField name="event_id" type="string" required>
                      The ID of this particular event. Equal to the key of this element of the containing `events_by_id` if this is part of a `TreeEvent`.
                    </ResponseField>

                    <ResponseField name="contract_id" type="string" required>
                      The ID of the created contract.
                    </ResponseField>

                    <ResponseField name="template_id" type="string" required>
                      The template of the created contract.
                    </ResponseField>

                    <ResponseField name="package_name" type="string" required>
                      The package name of the created contract.
                    </ResponseField>

                    <ResponseField name="create_arguments" type="object" required>
                      The arguments that have been used to create the contract, in the form of JSON representation of a Daml record.
                    </ResponseField>

                    <ResponseField name="created_at" type="string (date-time)" required>
                      Ledger effective time of the transaction that created the contract.
                    </ResponseField>

                    <ResponseField name="signatories" type="string[]" required>
                      Signatories to the contract, in the form of party IDs.
                    </ResponseField>

                    <ResponseField name="observers" type="string[]" required>
                      Observers to the contract, in the form of party IDs.
                    </ResponseField>
                  </Expandable>
                </ResponseField>

                <ResponseField name="reassignment_counter" type="integer (int64)" required>
                  Each corresponding assigned and unassigned event has the same reassignment\_counter. This strictly increases with each unassign command for the same contract. Creation of the contract corresponds to reassignment\_counter 0.
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="UpdateHistoryUnassignment" type="UpdateHistoryUnassignment">
              <Expandable title="child attributes">
                <ResponseField name="submitter" type="string" required>
                  The party who submitted this reassignment
                </ResponseField>

                <ResponseField name="source_synchronizer" type="string" required>
                  The id of the synchronizer from which the contract was reassigned
                </ResponseField>

                <ResponseField name="migration_id" type="integer (int64)" required>
                  The migration id of the synchronizer from which the contract was reassigned
                </ResponseField>

                <ResponseField name="target_synchronizer" type="string" required>
                  The id of the synchronizer to which the contract was reassigned
                </ResponseField>

                <ResponseField name="unassign_id" type="string" required>
                  The id of the unassign event, to later be correlated to an assign event
                </ResponseField>

                <ResponseField name="reassignment_counter" type="integer (int64)" required>
                  Each corresponding assigned and unassigned event has the same reassignment\_counter. This strictly increases with each unassign command for the same contract. Creation of the contract corresponds to reassignment\_counter 0.
                </ResponseField>

                <ResponseField name="contract_id" type="string" required>
                  The id of the unassigned contract
                </ResponseField>
              </Expandable>
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="verdict" type="EventHistoryVerdict">
  <Expandable title="child attributes">
    <ResponseField name="update_id" type="string" required>
      The ID of the transaction update associated with this verdict.
    </ResponseField>

    <ResponseField name="migration_id" type="integer (int64)" required>
      The migration id of the domain through which this event was sequenced.
    </ResponseField>

    <ResponseField name="domain_id" type="string" required>
      The id of the domain through which this event was sequenced.
    </ResponseField>

    <ResponseField name="record_time" type="string" required>
      The record\_time of the transaction the verdict corresponds to.
    </ResponseField>

    <ResponseField name="finalization_time" type="string" required>
      The finalization\_time of the transaction the verdict corresponds to. Note that this time might be different between different scans/mediators.
    </ResponseField>

    <ResponseField name="submitting_parties" type="string[]" required>
      Parties on whose behalf the transaction was submitted.
    </ResponseField>

    <ResponseField name="submitting_participant_uid" type="string" required>
      UID of the submitting participant.
    </ResponseField>

    <ResponseField name="verdict_result" type="VerdictResult" required>
      Result of the verdict.

      Allowed values: <code>VERDICT\_RESULT\_UNSPECIFIED</code>, <code>VERDICT\_RESULT\_ACCEPTED</code>, <code>VERDICT\_RESULT\_REJECTED</code>.
    </ResponseField>

    <ResponseField name="mediator_group" type="integer (int32)" required>
      The mediator group which finalized this verdict.
    </ResponseField>

    <ResponseField name="transaction_views" type="TransactionViews" required>
      <Expandable title="child attributes">
        <ResponseField name="views" type="TransactionView[]" required>
          <Expandable title="child attributes">
            <ResponseField name="view_id" type="integer (int32)" required />

            <ResponseField name="informees" type="string[]" required />

            <ResponseField name="confirming_parties" type="Quorum[]" required>
              <Expandable title="child attributes">
                <ResponseField name="parties" type="string[]" required />

                <ResponseField name="threshold" type="integer (int32)" required />
              </Expandable>
            </ResponseField>

            <ResponseField name="sub_views" type="integer (int32)[]" required />

            <ResponseField name="view_hash" type="string" required>
              Hash of the view, for correlation with sequencer traffic data. Empty for older data ingested before this field was added.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="root_views" type="integer (int32)[]" required />
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="traffic_summary" type="EventHistoryTrafficSummary">
  Traffic summary data from the sequencer for the confirmation request corresponding to an event.

  <Expandable title="child attributes">
    <ResponseField name="total_traffic_cost" type="integer (int64)" required>
      Total traffic cost of the confirmation request paid by the validator node that submitted it.
    </ResponseField>

    <ResponseField name="envelope_traffic_summaries" type="EnvelopeTrafficSummary[]" required>
      Summary of traffic-related data for all envelopes in the confirmation request.

      <Expandable title="child attributes">
        <ResponseField name="traffic_cost" type="integer (int64)" required>
          Traffic cost in bytes for this envelope.
        </ResponseField>

        <ResponseField name="view_ids" type="integer (int32)[]" required>
          View IDs from the verdict contained in this envelope
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="app_activity_records" type="EventHistoryAppActivityRecords">
  App activity record computed from verdicts and traffic summaries as per [CIP-104](https://github.com/canton-foundation/cips/blob/main/cip-0104/cip-0104.md).

  <Expandable title="child attributes">
    <ResponseField name="round_number" type="integer (int64)" required>
      The round number assigned to the activity records.
    </ResponseField>

    <ResponseField name="records" type="AppActivityRecord[]" required>
      App activity records, one per app provider.

      <Expandable title="child attributes">
        <ResponseField name="party" type="string" required>
          The app provider party identifier.
        </ResponseField>

        <ResponseField name="weight" type="integer (int64)" required>
          Activity weight in bytes of traffic.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### 400

bad request

<div class="x2mdx-ref-badges">
  <span class="x2mdx-ref-badge x2mdx-ref-badge--neutral">application/json</span>
</div>

<ResponseField name="error" type="string" required />

### 404

not found

<div class="x2mdx-ref-badges">
  <span class="x2mdx-ref-badge x2mdx-ref-badge--neutral">application/json</span>
</div>

<ResponseField name="error" type="string" required />

### 500

internal server error

<div class="x2mdx-ref-badges">
  <span class="x2mdx-ref-badge x2mdx-ref-badge--neutral">application/json</span>
</div>

<ResponseField name="error" type="string" required />

## History

<div class="x2mdx-ref-history" aria-label="Reference history">
  <div class="x2mdx-ref-history-event x2mdx-ref-history-event--changed" id="history-updated-0-6-10">
    <div class="x2mdx-ref-history-event-head">
      <span class="x2mdx-ref-history-event-label">Updated</span>
      <code class="x2mdx-ref-history-event-version">0.6.10</code>
    </div>

    <p class="x2mdx-ref-history-event-detail">The GET /v0/events/\{update\_id} operation changed in this snapshot.</p>
  </div>

  <div class="x2mdx-ref-history-event x2mdx-ref-history-event--changed" id="history-updated-0-6-0">
    <div class="x2mdx-ref-history-event-head">
      <span class="x2mdx-ref-history-event-label">Updated</span>
      <code class="x2mdx-ref-history-event-version">0.6.0</code>
    </div>

    <p class="x2mdx-ref-history-event-detail">The GET /v0/events/\{update\_id} operation changed in this snapshot.</p>
  </div>

  <div class="x2mdx-ref-history-event x2mdx-ref-history-event--changed" id="history-updated-0-5-17">
    <div class="x2mdx-ref-history-event-head">
      <span class="x2mdx-ref-history-event-label">Updated</span>
      <code class="x2mdx-ref-history-event-version">0.5.17</code>
    </div>

    <p class="x2mdx-ref-history-event-detail">The GET /v0/events/\{update\_id} operation changed in this snapshot.</p>
  </div>

  <div class="x2mdx-ref-history-event x2mdx-ref-history-event--changed" id="history-updated-0-5-15">
    <div class="x2mdx-ref-history-event-head">
      <span class="x2mdx-ref-history-event-label">Updated</span>
      <code class="x2mdx-ref-history-event-version">0.5.15</code>
    </div>

    <p class="x2mdx-ref-history-event-detail">The GET /v0/events/\{update\_id} operation changed in this snapshot.</p>
  </div>

  <div class="x2mdx-ref-history-event x2mdx-ref-history-event--introduced" id="history-added-0-5-10">
    <div class="x2mdx-ref-history-event-head">
      <span class="x2mdx-ref-history-event-label">Present since at least</span>
      <code class="x2mdx-ref-history-event-version">0.5.10</code>
    </div>
  </div>
</div>
