# server_definitions

[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/rpc/handlers/server_info/ServerDefinitions.cpp#L385)

The `server_definitions` command returns an SDK-compatible `definitions.json`, generated from the `xrpld` instance currently running. You can use this to query a node in a network, quickly receiving the definitions necessary to serialize/deserialize its binary data.

The response also includes the `TRANSACTION_FORMATS`, `LEDGER_ENTRY_FORMATS`, `TRANSACTION_FLAGS`, `LEDGER_ENTRY_FLAGS`, and `ACCOUNT_SET_FLAGS` sections, which describe the fields and flags of each transaction and ledger entry type. New in: xrpld 3.2.0

You can also generate the same definitions without a running server using the [`--definitions`](/es-es/docs/infrastructure/commandline-usage) command-line flag.

## Request Format

An example of the request format:

WebSocket
```json
{
  "id": 2,
  "command": "server_definitions"
}
```

JSON-RPC
```json
{
  "method": "server_definitions"
}
```

The request includes the following parameters:

| Field | Type | Required? | Description |
|  --- | --- | --- | --- |
| `hash` | String | No | If included and the hash matches the server's hash, the full set of definitions will not be returned. |


## Response Format

An example of a successful response:

WebSocket
```json
{
  "id": 1,
  "result": {
    "FIELDS": [
      [
        "Generic",
        {
          "isSerialized": false,
          "isSigningField": false,
          "isVLEncoded": false,
          "nth": 0,
          "type": "Unknown"
        }
      ],
      [
        "Invalid",
        {
          "isSerialized": false,
          "isSigningField": false,
          "isVLEncoded": false,
          "nth": -1,
          "type": "Unknown"
        }
      ],
      [
        "ObjectEndMarker",
        {
          "isSerialized": true,
          "isSigningField": true,
          "isVLEncoded": false,
          "nth": 1,
          "type": "STObject"
        }
      ],
      [
        "ArrayEndMarker",
        {
          "isSerialized": true,
          "isSigningField": true,
          "isVLEncoded": false,
          "nth": 1,
          "type": "STArray"
        }
      ]
      ...
    ],
    "TRANSACTION_FORMATS": {
      "common": [
        {
          "name": "TransactionType",
          "optionality": 0
        },
        {
          "name": "Flags",
          "optionality": 1
        },
        {
          "name": "SourceTag",
          "optionality": 1
        }
        ...
      ],
      "AccountSet": [
        {
          "name": "EmailHash",
          "optionality": 1
        },
        ...
        {
          "name": "SetFlag",
          "optionality": 1
        }
        ...
      ]
      ...
    },
    "LEDGER_ENTRY_FORMATS": {
      "common": [
        {
          "name": "LedgerIndex",
          "optionality": 1
        },
        {
          "name": "LedgerEntryType",
          "optionality": 0
        },
        {
          "name": "Flags",
          "optionality": 0
        }
      ],
      "DID": [
        {
          "name": "Account",
          "optionality": 0
        },
        {
          "name": "DIDDocument",
          "optionality": 1
        }
        ...
      ]
      ...
    },
    "TRANSACTION_FLAGS": {
      "universal": {
        "tfFullyCanonicalSig": 2147483648,
        "tfInnerBatchTxn": 1073741824
      },
      "AccountSet": {
        "tfRequireDestTag": 65536,
        "tfOptionalDestTag": 131072
        ...
      }
      ...
    },
    "LEDGER_ENTRY_FLAGS": {
      "AccountRoot": {
        "lsfDisallowXRP": 524288
        ...
      }
      ...
    },
    "ACCOUNT_SET_FLAGS": {
      "asfRequireDest": 1,
      "asfRequireAuth": 2,
      "asfDisallowXRP": 3
      ...
    }
  }
}
```

To see a full `definitions.json` file and descriptions of the top-level fields—including the `TRANSACTION_FORMATS`, `LEDGER_ENTRY_FORMATS`, `TRANSACTION_FLAGS`, `LEDGER_ENTRY_FLAGS`, and `ACCOUNT_SET_FLAGS` sections—see: [Definitions File](/es-es/docs/references/protocol/binary-format#definitions-file).

## Possible Errors

Any of the [universal error types](/docs/references/http-websocket-apis/api-conventions/error-formatting#universal-errors).