> ## 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 /v2/updates/transaction-tree-by-id/:update-id

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

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

<div class="x2mdx-ref-hero">
  <p class="x2mdx-ref-summary">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.</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--removed" href="#history-removal-scheduled-3-5-0">Removal scheduled 3.5.0</a>

    <a class="x2mdx-ref-badge x2mdx-ref-badge--changed" href="#history-updated-3-5">Updated 3.5</a>

    <a class="x2mdx-ref-badge x2mdx-ref-badge--removed" href="#history-deprecated-3-4">Deprecated 3.4</a>

    <a class="x2mdx-ref-badge x2mdx-ref-badge--added" href="#history-added-3-4">Added 3.4</a>
  </div>
</div>

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'http://localhost:7575/v2/updates/transaction-tree-by-id/{update-id}' \
    --header 'Authorization: Bearer $TOKEN'
  ```

  ```python Python theme={null}
  import json
  import requests

  url = "http://localhost:7575/v2/updates/transaction-tree-by-id/{update-id}"
  headers = {'Authorization': 'Bearer <token>'}
  response = requests.request("GET", url, headers=headers)

  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('http://localhost:7575/v2/updates/transaction-tree-by-id/{update-id}', {
    method: 'GET',
    headers: {
    "Authorization": "Bearer <token>"
  },
  });

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

  ```php PHP theme={null}
  <?php
  $curl = curl_init();

  curl_setopt_array($curl, [
      CURLOPT_URL => 'http://localhost:7575/v2/updates/transaction-tree-by-id/{update-id}',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_CUSTOMREQUEST => 'GET',
      CURLOPT_HTTPHEADER => [
          "Authorization: Bearer <token>"
      ],
  ]);

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

  ```go Go theme={null}
  package main

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

  func main() {
    req, _ := http.NewRequest("GET", "http://localhost:7575/v2/updates/transaction-tree-by-id/{update-id}", nil)
    req.Header.Set("Authorization", "Bearer <token>")
    response, _ := http.DefaultClient.Do(req)
    defer response.Body.Close()
    body, _ := io.ReadAll(response.Body)
    fmt.Println(string(body))
  }
  ```

  ```java Java theme={null}
  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("http://localhost:7575/v2/updates/transaction-tree-by-id/{update-id}"))
      .header("Authorization", "Bearer <token>")
      .method("GET", HttpRequest.BodyPublishers.noBody())
      .build();
  var response = HttpClient.newHttpClient().send(
      request, HttpResponse.BodyHandlers.ofString());
  System.out.println(response.body());
  ```

  ```ruby Ruby theme={null}
  require 'net/http'
  require 'uri'

  uri = URI('http://localhost:7575/v2/updates/transaction-tree-by-id/{update-id}')
  request = Net::HTTP::Get.new(uri)
  request['Authorization'] = 'Bearer <token>'
  response = Net::HTTP.start(uri.hostname, uri.port) do |http|
    http.request(request)
  end
  puts response.body
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "transaction": {
      "updateId": "<string>",
      "commandId": "<string>",
      "workflowId": "<string>",
      "effectiveAt": "<string>",
      "offset": 123,
      "eventsById": {},
      "synchronizerId": "<string>",
      "traceContext": {
        "traceparent": "<string>",
        "tracestate": "<string>"
      },
      "recordTime": "<string>"
    }
  }
  ```

  ```text 400 theme={null}
  <string>
  ```

  ```json default theme={null}
  {
    "code": "<string>",
    "cause": "<string>",
    "correlationId": "<string>",
    "traceId": "<string>",
    "context": {},
    "resources": [
      [
        "<string>"
      ]
    ],
    "errorCategory": 123,
    "grpcCodeValue": 123,
    "retryInfo": "<string>",
    "definiteAnswer": false
  }
  ```
</ResponseExample>

## Authorizations

### httpAuth

<ParamField header="Authorization" type="string" required>
  HTTP bearer authentication. Send the token as `Authorization: Bearer &lt;token&gt;`. Ledger API standard JWT token
</ParamField>

### apiKeyAuth

<ParamField header="Sec-WebSocket-Protocol" type="string" required>
  API key authentication in the header. Ledger API standard JWT token (websocket)
</ParamField>

## Path parameters

<ParamField path="update-id" type="string" required />

## Query parameters

<ParamField query="parties" type="string[]" />

## Responses

### 200

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

<ResponseField name="transaction" type="JsTransactionTree" required>
  Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. Complete view of an on-ledger transaction.

  <Expandable title="child attributes">
    <ResponseField name="updateId" type="string" required>
      Assigned by the server. Useful for correlating logs. Must be a valid LedgerString (as described in `value.proto`). Required
    </ResponseField>

    <ResponseField name="commandId" type="string">
      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
    </ResponseField>

    <ResponseField name="workflowId" type="string">
      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
    </ResponseField>

    <ResponseField name="effectiveAt" type="string" required>
      Ledger effective time. Required
    </ResponseField>

    <ResponseField name="offset" type="integer (int64)" required>
      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).
    </ResponseField>

    <ResponseField name="eventsById" type="Map_Int_TreeEvent" required>
      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
    </ResponseField>

    <ResponseField name="synchronizerId" type="string" required>
      A valid synchronizer id. Identifies the synchronizer that synchronized the transaction. Required
    </ResponseField>

    <ResponseField name="traceContext" type="TraceContext">
      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.

      <Expandable title="child attributes">
        <ResponseField name="traceparent" type="string">
          [https://www.w3.org/TR/trace-context/](https://www.w3.org/TR/trace-context/) Optional
        </ResponseField>

        <ResponseField name="tracestate" type="string">
          Optional
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="recordTime" type="string" required>
      The time at which the transaction was recorded. The record time refers to the synchronizer which synchronized the transaction. Required
    </ResponseField>
  </Expandable>
</ResponseField>

### 400

Invalid value, Invalid value for: query parameter parties

<div class="x2mdx-ref-badges">
  <span class="x2mdx-ref-badge x2mdx-ref-badge--neutral">text/plain</span>
</div>

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

### default

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

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

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

<ResponseField name="correlationId" type="string" />

<ResponseField name="traceId" type="string" />

<ResponseField name="context" type="Map_String" required />

<ResponseField name="resources" type="Tuple2_String_String[]" />

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

<ResponseField name="grpcCodeValue" type="integer (int32)" />

<ResponseField name="retryInfo" type="string" />

<ResponseField name="definiteAnswer" type="boolean" />

## History

<div class="x2mdx-ref-history" aria-label="Reference history">
  <div class="x2mdx-ref-history-event x2mdx-ref-history-event--remove-as-of" id="history-removal-scheduled-3-5-0">
    <div class="x2mdx-ref-history-event-head">
      <span class="x2mdx-ref-history-event-label">Removal scheduled</span>
      <code class="x2mdx-ref-history-event-version">3.5.0</code>
    </div>
  </div>

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

    <p class="x2mdx-ref-history-event-detail">The GET /v2/updates/transaction-tree-by-id/\{update-id} operation was updated in this snapshot.</p>
  </div>

  <div class="x2mdx-ref-history-event x2mdx-ref-history-event--deprecated" id="history-deprecated-3-4">
    <div class="x2mdx-ref-history-event-head">
      <span class="x2mdx-ref-history-event-label">Deprecated</span>
      <code class="x2mdx-ref-history-event-version">3.4</code>
    </div>
  </div>

  <div class="x2mdx-ref-history-event x2mdx-ref-history-event--introduced" id="history-added-3-4">
    <div class="x2mdx-ref-history-event-head">
      <span class="x2mdx-ref-history-event-label">Added</span>
      <code class="x2mdx-ref-history-event-version">3.4</code>
    </div>
  </div>
</div>
