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

# POST /v2/interactive-submission/executeAndWait

> Similar to ExecuteSubmission but _synchronously_ wait for the completion of the transaction

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

<div class="x2mdx-ref-hero">
  <p class="x2mdx-ref-summary">Similar to ExecuteSubmission but *synchronously* wait for the completion of the transaction</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--changed" href="#history-updated-3-5">Updated 3.5</a>
  </div>
</div>

<RequestExample>
  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl --request POST \
    --url 'http://localhost:7575/v2/interactive-submission/executeAndWait' \
    --header 'Authorization: Bearer $TOKEN' \
    --header 'Content-Type: application/json' \
    --data '{
    "preparedTransaction": "<string>",
    "partySignatures": {
      "signatures": [
        {
          "party": "<string>",
          "signatures": [
            {
              "format": "<string>",
              "signature": "<string>",
              "signedBy": "<string>",
              "signingAlgorithmSpec": "<string>"
            }
          ]
        }
      ]
    },
    "deduplicationPeriod": {
      "DeduplicationDuration": {
        "value": {
          "seconds": 123,
          "nanos": 123,
          "unknownFields": {
            "fields": "<object>"
          }
        }
      }
    },
    "submissionId": "<string>",
    "userId": "<string>",
    "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
    "minLedgerTime": {
      "time": {
        "Empty": {}
      }
    }
  }'
  ```

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

  url = "http://localhost:7575/v2/interactive-submission/executeAndWait"
  headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
  payload = json.loads(r'''{
    "preparedTransaction": "<string>",
    "partySignatures": {
      "signatures": [
        {
          "party": "<string>",
          "signatures": [
            {
              "format": "<string>",
              "signature": "<string>",
              "signedBy": "<string>",
              "signingAlgorithmSpec": "<string>"
            }
          ]
        }
      ]
    },
    "deduplicationPeriod": {
      "DeduplicationDuration": {
        "value": {
          "seconds": 123,
          "nanos": 123,
          "unknownFields": {
            "fields": "<object>"
          }
        }
      }
    },
    "submissionId": "<string>",
    "userId": "<string>",
    "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
    "minLedgerTime": {
      "time": {
        "Empty": {}
      }
    }
  }''')
  response = requests.request(
      "POST", url, headers=headers, json=payload
  )

  print(response.text)
  ```

  ```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  const response = await fetch('http://localhost:7575/v2/interactive-submission/executeAndWait', {
    method: 'POST',
    headers: {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
  },
    body: JSON.stringify({
    "preparedTransaction": "<string>",
    "partySignatures": {
      "signatures": [
        {
          "party": "<string>",
          "signatures": [
            {
              "format": "<string>",
              "signature": "<string>",
              "signedBy": "<string>",
              "signingAlgorithmSpec": "<string>"
            }
          ]
        }
      ]
    },
    "deduplicationPeriod": {
      "DeduplicationDuration": {
        "value": {
          "seconds": 123,
          "nanos": 123,
          "unknownFields": {
            "fields": "<object>"
          }
        }
      }
    },
    "submissionId": "<string>",
    "userId": "<string>",
    "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
    "minLedgerTime": {
      "time": {
        "Empty": {}
      }
    }
  }),
  });

  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 => 'http://localhost:7575/v2/interactive-submission/executeAndWait',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_CUSTOMREQUEST => 'POST',
      CURLOPT_POSTFIELDS => <<<'JSON'
  {
    "preparedTransaction": "<string>",
    "partySignatures": {
      "signatures": [
        {
          "party": "<string>",
          "signatures": [
            {
              "format": "<string>",
              "signature": "<string>",
              "signedBy": "<string>",
              "signingAlgorithmSpec": "<string>"
            }
          ]
        }
      ]
    },
    "deduplicationPeriod": {
      "DeduplicationDuration": {
        "value": {
          "seconds": 123,
          "nanos": 123,
          "unknownFields": {
            "fields": "<object>"
          }
        }
      }
    },
    "submissionId": "<string>",
    "userId": "<string>",
    "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
    "minLedgerTime": {
      "time": {
        "Empty": {}
      }
    }
  }
  JSON,
      CURLOPT_HTTPHEADER => [
          "Authorization: Bearer <token>",
          "Content-Type: application/json"
      ],
  ]);

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

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

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

  func main() {
    req, _ := http.NewRequest("POST", "http://localhost:7575/v2/interactive-submission/executeAndWait", bytes.NewBufferString(`{
    "preparedTransaction": "<string>",
    "partySignatures": {
      "signatures": [
        {
          "party": "<string>",
          "signatures": [
            {
              "format": "<string>",
              "signature": "<string>",
              "signedBy": "<string>",
              "signingAlgorithmSpec": "<string>"
            }
          ]
        }
      ]
    },
    "deduplicationPeriod": {
      "DeduplicationDuration": {
        "value": {
          "seconds": 123,
          "nanos": 123,
          "unknownFields": {
            "fields": "<object>"
          }
        }
      }
    },
    "submissionId": "<string>",
    "userId": "<string>",
    "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
    "minLedgerTime": {
      "time": {
        "Empty": {}
      }
    }
  }`))
    req.Header.Set("Authorization", "Bearer <token>")
    req.Header.Set("Content-Type", "application/json")
    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("http://localhost:7575/v2/interactive-submission/executeAndWait"))
      .header("Authorization", "Bearer <token>")
      .header("Content-Type", "application/json")
      .method("POST", HttpRequest.BodyPublishers.ofString("""
  {
    "preparedTransaction": "<string>",
    "partySignatures": {
      "signatures": [
        {
          "party": "<string>",
          "signatures": [
            {
              "format": "<string>",
              "signature": "<string>",
              "signedBy": "<string>",
              "signingAlgorithmSpec": "<string>"
            }
          ]
        }
      ]
    },
    "deduplicationPeriod": {
      "DeduplicationDuration": {
        "value": {
          "seconds": 123,
          "nanos": 123,
          "unknownFields": {
            "fields": "<object>"
          }
        }
      }
    },
    "submissionId": "<string>",
    "userId": "<string>",
    "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
    "minLedgerTime": {
      "time": {
        "Empty": {}
      }
    }
  }
  """))
      .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('http://localhost:7575/v2/interactive-submission/executeAndWait')
  request = Net::HTTP::Post.new(uri)
  request['Authorization'] = 'Bearer <token>'
  request['Content-Type'] = 'application/json'
  request.body = <<~JSON
  {
    "preparedTransaction": "<string>",
    "partySignatures": {
      "signatures": [
        {
          "party": "<string>",
          "signatures": [
            {
              "format": "<string>",
              "signature": "<string>",
              "signedBy": "<string>",
              "signingAlgorithmSpec": "<string>"
            }
          ]
        }
      ]
    },
    "deduplicationPeriod": {
      "DeduplicationDuration": {
        "value": {
          "seconds": 123,
          "nanos": 123,
          "unknownFields": {
            "fields": "<object>"
          }
        }
      }
    },
    "submissionId": "<string>",
    "userId": "<string>",
    "hashingSchemeVersion": "HASHING_SCHEME_VERSION_UNSPECIFIED",
    "minLedgerTime": {
      "time": {
        "Empty": {}
      }
    }
  }
  JSON
  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"}}
  {
    "updateId": "<string>",
    "completionOffset": 123
  }
  ```

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

  ```json default theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "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>

## Body

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

<ParamField body="preparedTransaction" type="string" required>
  the prepared transaction Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse` obtained from calling `prepareSubmission`. Required
</ParamField>

<ParamField body="partySignatures" type="object" required>
  OpenAPI type: <code>PartySignatures</code>.

  Additional signatures provided by the submitting parties

  <Expandable title="child attributes">
    <ParamField body="signatures" type="object[]" required>
      OpenAPI type: <code>SinglePartySignatures\[]</code>.

      Additional signatures provided by all individual parties Required: must be non-empty

      <Expandable title="child attributes">
        <ParamField body="party" type="string" required>
          Submitting party Required
        </ParamField>

        <ParamField body="signatures" type="object[]" required>
          OpenAPI type: <code>Signature\[]</code>.

          Signatures Required: must be non-empty

          <Expandable title="child attributes">
            <ParamField body="format" type="string" required>
              Required
            </ParamField>

            <ParamField body="signature" type="string" required>
              Required: must be non-empty
            </ParamField>

            <ParamField body="signedBy" type="string" required>
              The fingerprint/id of the keypair used to create this signature and needed to verify. Required
            </ParamField>

            <ParamField body="signingAlgorithmSpec" type="string" required>
              The signing algorithm specification used to produce this signature Required
            </ParamField>
          </Expandable>
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="deduplicationPeriod" type="object">
  OpenAPI type: <code>DeduplicationPeriod2</code>.

  <Expandable title="child attributes">
    <ParamField body="Variant 1" type="object">
      <Expandable title="child attributes">
        <ParamField body="DeduplicationDuration" type="object" required>
          OpenAPI type: <code>DeduplicationDuration2</code>.

          <Expandable title="child attributes">
            <ParamField body="value" type="object" required>
              OpenAPI type: <code>Duration</code>.

              <Expandable title="child attributes">
                <ParamField body="seconds" type="number" required>
                  OpenAPI type: <code>integer (int64)</code>.
                </ParamField>

                <ParamField body="nanos" type="number" required>
                  OpenAPI type: <code>integer (int32)</code>.
                </ParamField>

                <ParamField body="unknownFields" type="object">
                  OpenAPI type: <code>UnknownFieldSet</code>.

                  This field is automatically added as part of protobuf to json mapping

                  <Expandable title="child attributes">
                    <ParamField body="fields" type="object" required>
                      OpenAPI type: <code>Map\_Int\_Field</code>.
                    </ParamField>
                  </Expandable>
                </ParamField>
              </Expandable>
            </ParamField>
          </Expandable>
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="Variant 2" type="object">
      <Expandable title="child attributes">
        <ParamField body="DeduplicationOffset" type="object" required>
          OpenAPI type: <code>DeduplicationOffset2</code>.

          <Expandable title="child attributes">
            <ParamField body="value" type="number" required>
              OpenAPI type: <code>integer (int64)</code>.
            </ParamField>
          </Expandable>
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="Variant 3" type="object">
      <Expandable title="child attributes">
        <ParamField body="Empty" type="object" required>
          OpenAPI type: <code>Empty10</code>.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="submissionId" type="string" required>
  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
</ParamField>

<ParamField body="userId" type="string">
  See \[PrepareSubmissionRequest.user\_id] Optional
</ParamField>

<ParamField body="hashingSchemeVersion" type="string" required>
  The hashing scheme version used when building the hash Required

  Allowed values: <code>HASHING\_SCHEME\_VERSION\_UNSPECIFIED</code>, <code>HASHING\_SCHEME\_VERSION\_V2</code>, <code>HASHING\_SCHEME\_VERSION\_V3</code>.
</ParamField>

<ParamField body="minLedgerTime" type="object">
  OpenAPI type: <code>MinLedgerTime</code>.

  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

  <Expandable title="child attributes">
    <ParamField body="time" type="object">
      OpenAPI type: <code>Time</code>.

      Required

      <Expandable title="child attributes">
        <ParamField body="Variant 1" type="object">
          <Expandable title="child attributes">
            <ParamField body="Empty" type="object" required>
              OpenAPI type: <code>Empty9</code>.
            </ParamField>
          </Expandable>
        </ParamField>

        <ParamField body="Variant 2" type="object">
          <Expandable title="child attributes">
            <ParamField body="MinLedgerTimeAbs" type="object" required>
              OpenAPI type: <code>MinLedgerTimeAbs</code>.

              <Expandable title="child attributes">
                <ParamField body="value" type="string" required />
              </Expandable>
            </ParamField>
          </Expandable>
        </ParamField>

        <ParamField body="Variant 3" type="object">
          <Expandable title="child attributes">
            <ParamField body="MinLedgerTimeRel" type="object" required>
              OpenAPI type: <code>MinLedgerTimeRel</code>.

              <Expandable title="child attributes">
                <ParamField body="value" type="object" required>
                  OpenAPI type: <code>Duration</code>.

                  <Expandable title="child attributes">
                    <ParamField body="seconds" type="number" required>
                      OpenAPI type: <code>integer (int64)</code>.
                    </ParamField>

                    <ParamField body="nanos" type="number" required>
                      OpenAPI type: <code>integer (int32)</code>.
                    </ParamField>

                    <ParamField body="unknownFields" type="object">
                      OpenAPI type: <code>UnknownFieldSet</code>.

                      This field is automatically added as part of protobuf to json mapping

                      <Expandable title="child attributes">
                        <ParamField body="fields" type="object" required>
                          OpenAPI type: <code>Map\_Int\_Field</code>.
                        </ParamField>
                      </Expandable>
                    </ParamField>
                  </Expandable>
                </ParamField>
              </Expandable>
            </ParamField>
          </Expandable>
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

## Responses

### 200

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

<ResponseField name="updateId" type="string" required>
  The id of the transaction that resulted from the submitted command. Must be a valid LedgerString (as described in `value.proto`). Required
</ResponseField>

<ResponseField name="completionOffset" type="integer (int64)" required>
  The details of the offset field are described in `community/ledger-api/README.md`. Required
</ResponseField>

### 400

Invalid value, Invalid value for: body

<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--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 POST /v2/interactive-submission/executeAndWait operation changed in this snapshot.</p>
  </div>
</div>
