# Transaction request

When an **APP** sends a transaction request involving an account to the **HAS**, if the **PKSA** has registered that account with the **HAS** then it will receive the following message:

### sign\_req

```javascript
{
    cmd: "sign_req" 
    account: string
    data: string
    uuid: string
    expire: number
    token: string // DEPRECATED - protocol < 1 only
}
```

{% tabs %}
{% tab title="Properties" %}

* **`account`**: the Hive account name
* **`data`**: the Base64 representation of an encrypted [`sign_req_data`](#sign_req_data) object
* **`uuid`** {string} the transaction request identifier
* **`expire`** {Number} UNIX time when the request will expire<br>
* **`token`**: the authentication token - ***DEPRECATED since protocol v1***
  {% endtab %}
  {% endtabs %}

The structure of the `sign_req_data` object is:

### sign\_req\_data

```javascript
{
    key_type: string
    ops: Array
    broadcast: boolean
    nonce: number
}
```

{% tabs %}
{% tab title="Properties" %}

* **`key_type`**: the key type required to sign the transactions. It can be one of `posting`|`active`
* **`ops`**: an array of operations
* **`broadcast`**: `true` if the **PKSA** must broadcast the transaction to the blockchain. `false` if the **PKSA** must return a signed transaction but not broadcast it to the blockchain.
* **`nonce`**: UNIX time of the request
  {% endtab %}
  {% endtabs %}

Before sending its `sign_req` request, the **APP** has encrypted the `sign_req_data` using the encryption `key` shared with the **PKSA** during the authentication process.

Only a **PKSA** having previously authenticated an account and having access to the encryption `auth_key` will be able to decrypt the operations to be put in a transaction and to be signed.

As the **HAS** has no access to the \`auth\_key\`, it is completely unaware of what's going on between the **APP** and the **PKSA**.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hiveauth.com/has-for-wallets-pksa/transactions/transaction-request.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
