Skip to content

Updating 3921 Statements

Use the updateF3921Statements mutation to update data on existing 3921 statements.

Note

Only statements in draft mode can be updated; statements which have been finalized cannot be updated.

The GraphQL mutation below demonstrates updating various fields on the 3921. Full documentation for the query is available as part of the introspective GraphQL documentation.

mutation {
  updateF3921Statements(
    statements: [
      {
        otxId: "df6949fe-95e8-41b4-bc31-561a9108e73a"
        statement: {
          corporationInfo: [
            "Cassatt and Company"
            "TIN: 111123456"
          ]
        }
      }
      {
        otxId: "04eabee4-67dc-46bb-9415-578800fa26d4"
        statement: {
          dateOptionExercised: "2021-05-12"
          exercisePricePerShare: "226.38"
          numberSharesTransferred: 1422
        }
      }
    ]
  ) {
    statements {
      recordNumber
      statement {
        corporationInfo
        dateOptionExercised
        exercisePricePerShare
        numberSharesTransferred
        otxId
        recipientFirstName
        recipientLastName
        uploaderId
      }
      messages
    }
    errors
  }
}

The code snippets below illustrate running the query. See the documentation on authentication for information about obtaining the credential data passed in the header.

# Terminate lines with \ character to allow command to span multiple lines.
# Escape quotation marks in body of mutation or query with backslashes.
# Use here document for data stream.
# Tested using the bash interpreter on Linux.
curl 'https://sandbox.ottertax.com/v2/graphql' \
  -i \
  -X POST \
  -H 'content-type:  application/json' \
  -H 'access-token:  YOUR ACCESS TOKEN' \
  -H 'client:        YOUR CLIENT ID' \
  -H 'uid:           YOUR UID' \
  -d @- <<END_DATA
    { 
      "query":"
        mutation {
          updateF3921Statements(
            statements: [
              {
                otxId: \"df6949fe-95e8-41b4-bc31-561a9108e73a\"
                statement: {
                  corporationInfo: [
                    \"Cassatt and Company\"
                    \"TIN: 111123456\"
                  ]
                }
              }
              {
                otxId: \"04eabee4-67dc-46bb-9415-578800fa26d4\"
                statement: {
                  dateOptionExercised: \"2021-05-12\"
                  exercisePricePerShare: \"226.38\"
                  numberSharesTransferred: 1422
                }
              }
            ]
          ) {
            statements {
              recordNumber
              statement {
                corporationInfo
                dateOptionExercised
                exercisePricePerShare
                numberSharesTransferred
                otxId
                recipientFirstName
                recipientLastName
                uploaderId
              }
              messages
            }
            errors
          }
        }
      "
    }
END_DATA
:: Terminate lines with ^ character to allow command to span multiple lines.
:: Precede quotation marks in body of mutation or query with triple backslashes.
:: Precede other quotation marks in data stream with single backslashes.
:: Tested using a command prompt on Windows 10.
curl "https://sandbox.ottertax.com/v2/graphql" ^
  -i ^
  -X POST ^
  -H "content-type: application/json" ^
  -H "access-token: YOUR ACCESS TOKEN" ^
  -H "client:       YOUR CLIENT ID" ^
  -H "uid:          YOUR UID" ^
  -d "{ \"query\":\" ^
        mutation { ^
          updateF3921Statements( ^
            statements: [ ^
              { ^
                otxId: \\\"df6949fe-95e8-41b4-bc31-561a9108e73a\\\" ^
                statement: { ^
                  corporationInfo: [ ^
                    \\\"Cassatt and Company\\\" ^
                    \\\"TIN: 111123456\\\" ^
                  ] ^
                } ^
              } ^
              { ^
                otxId: \\\"04eabee4-67dc-46bb-9415-578800fa26d4\\\" ^
                statement: { ^
                  dateOptionExercised: \\\"2021-05-12\\\" ^
                  exercisePricePerShare: \\\"226.38\\\" ^
                  numberSharesTransferred: 1422 ^
                } ^
              } ^
            ] ^
          ) { ^
            statements { ^
              recordNumber ^
              statement { ^
                corporationInfo ^
                dateOptionExercised ^
                exercisePricePerShare ^
                numberSharesTransferred ^
                otxId ^
                recipientFirstName ^
                recipientLastName ^
                uploaderId ^
              } ^
              messages ^
            } ^
            errors ^
          } ^
        } ^
     \" }"
// Using graphql-request from
// https://github.com/prisma-labs/graphql-request
// Example tested with node version 14.16.0
import { GraphQLClient, gql } from 'graphql-request'

async function main() {
  const endpoint = 'https://sandbox.ottertax.com/v2/graphql'

  const graphQLClient = new GraphQLClient(endpoint, {
    headers: {
      'access-token': 'YOUR ACCESS TOKEN',
      'client':       'YOUR CLIENT ID',
      'uid':          'YOUR UID'
    },
  })
  const query = gql`
    mutation {
      updateF3921Statements(
        statements: [
          {
            otxId: "df6949fe-95e8-41b4-bc31-561a9108e73a"
            statement: {
              corporationInfo: [
                "Cassatt and Company"
                "TIN: 111123456"
              ]
            }
          }
          {
            otxId: "04eabee4-67dc-46bb-9415-578800fa26d4"
            statement: {
              dateOptionExercised: "2021-05-12"
              exercisePricePerShare: "226.38"
              numberSharesTransferred: 1422
            }
          }
        ]
      ) {
        statements {
          recordNumber
          statement {
            corporationInfo
            dateOptionExercised
            exercisePricePerShare
            numberSharesTransferred
            otxId
            recipientFirstName
            recipientLastName
            uploaderId
          }
          messages
        }
        errors
      }
    }
  `

  const data = await graphQLClient.request(query)
  console.log(JSON.stringify(data))
}

main().catch((error) => console.error(error))
<?php
// Tested with php-cli version 8.0.5.
$query =<<<'END_DATA'
  mutation {
    updateF3921Statements(
      statements: [
        {
          otxId: "df6949fe-95e8-41b4-bc31-561a9108e73a"
          statement: {
            corporationInfo: [
              "Cassatt and Company"
              "TIN: 111123456"
            ]
          }
        }
        {
          otxId: "04eabee4-67dc-46bb-9415-578800fa26d4"
          statement: {
            dateOptionExercised: "2021-05-12"
            exercisePricePerShare: "226.38"
            numberSharesTransferred: 1422
          }
        }
      ]
    ) {
      statements {
        recordNumber
        statement {
          corporationInfo
          dateOptionExercised
          exercisePricePerShare
          numberSharesTransferred
          otxId
          recipientFirstName
          recipientLastName
          uploaderId
        }
        messages
      }
      errors
    }
  }
END_DATA;
$payload = array ('query' => $query);
$options = array(
  'http' => array(
    'method'  => 'POST',
    'content' => json_encode( $payload ),
    'header'=>  "Content-Type: application/json\r\n" .
                "access-token: YOUR ACCESS TOKEN\r\n" .
                "client:       YOUR CLIENT ID\r\n" .
                "uid:          YOUR UID\r\n"
    )
);

$context  = stream_context_create( $options );
$response = file_get_contents( 'https://sandbox.ottertax.com/v2/graphql',
                               false, $context );
if( $response === FALSE ) {
  echo "Call to server failed.\n";
} else {
  echo $response . "\n";
}
?>
# Using GQL from
# https://github.com/graphql-python/gql
# Tested using python version 3.8.8
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

transport = AIOHTTPTransport(url="https://sandbox.ottertax.com/v2/graphql",
                            headers={ 'access-token': 'YOUR ACCESS TOKEN',
                                      'client':       'YOUR CLIENT ID',
                                      'uid':          'YOUR UID' })
client = Client(transport=transport, fetch_schema_from_transport=True)
query = gql(
    """
      mutation {
        updateF3921Statements(
          statements: [
            {
              otxId: "df6949fe-95e8-41b4-bc31-561a9108e73a"
              statement: {
                corporationInfo: [
                  "Cassatt and Company"
                  "TIN: 111123456"
                ]
              }
            }
            {
              otxId: "04eabee4-67dc-46bb-9415-578800fa26d4"
              statement: {
                dateOptionExercised: "2021-05-12"
                exercisePricePerShare: "226.38"
                numberSharesTransferred: 1422
              }
            }
          ]
        ) {
          statements {
            recordNumber
            statement {
              corporationInfo
              dateOptionExercised
              exercisePricePerShare
              numberSharesTransferred
              otxId
              recipientFirstName
              recipientLastName
              uploaderId
            }
            messages
          }
          errors
        }
      }
    """
)

result = client.execute(query)
print(result)
# If you wish to use a library instead, see
# https://github.com/github/graphql-client
# Tested using ruby 2.7.2.
require( 'net/http' )
require( 'uri' )
require( 'json' )

uri = URI( "https://sandbox.ottertax.com/v2/graphql" )
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
headers = { 'Content-Type': 'application/json',
            'access-token': 'YOUR ACCESS TOKEN',
            'client':       'YOUR CLIENT ID',
            'uid':          'YOUR UID' }

query = <<-END_DATA
  mutation {
    updateF3921Statements(
      statements: [
        {
          otxId: "df6949fe-95e8-41b4-bc31-561a9108e73a"
          statement: {
            corporationInfo: [
              "Cassatt and Company"
              "TIN: 111123456"
            ]
          }
        }
        {
          otxId: "04eabee4-67dc-46bb-9415-578800fa26d4"
          statement: {
            dateOptionExercised: "2021-05-12"
            exercisePricePerShare: "226.38"
            numberSharesTransferred: 1422
          }
        }
      ]
    ) {
      statements {
        recordNumber
        statement {
          corporationInfo
          dateOptionExercised
          exercisePricePerShare
          numberSharesTransferred
          otxId
          recipientFirstName
          recipientLastName
          uploaderId
        }
        messages
      }
      errors
    }
  }
END_DATA
request = Net::HTTP::Post.new(uri.request_uri, headers )
request.body = {query: query}.to_json
response = http.request(request)
if( response.code == '200' )
  payload = JSON.parse( response.body )
  STDOUT.puts( payload )
else
  STDOUT.puts( "Response code was #{response.code}:\n#{response.inspect}" )
end