From 34102e343b4f093d80f82828fb718e4cd0f9e19c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Mon, 25 Mar 2024 18:34:58 +0100 Subject: [PATCH 1/4] Batch-replace 'Redis version' with 'server verion' in JSON files --- src/commands/command-docs.json | 6 +++--- src/commands/lolwut.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/commands/command-docs.json b/src/commands/command-docs.json index 75df5b4c65..29cebd0357 100644 --- a/src/commands/command-docs.json +++ b/src/commands/command-docs.json @@ -32,7 +32,7 @@ "type": "string" }, "since": { - "description": "the Redis version that added the command (or for module commands, the module version).", + "description": "the server verion that added the command (or for module commands, the module version).", "type": "string" }, "group": { @@ -118,7 +118,7 @@ } }, "deprecated_since": { - "description": "the Redis version that deprecated the command (or for module commands, the module version)", + "description": "the server verion that deprecated the command (or for module commands, the module version)", "type": "string" }, "replaced_by": { @@ -135,7 +135,7 @@ "items": [ { "type": "string", - "description": "The Redis version that the entry applies to." + "description": "The server verion that the entry applies to." }, { "type": "string", diff --git a/src/commands/lolwut.json b/src/commands/lolwut.json index 546c14cfc2..10b7236399 100644 --- a/src/commands/lolwut.json +++ b/src/commands/lolwut.json @@ -1,6 +1,6 @@ { "LOLWUT": { - "summary": "Displays computer art and the Redis version", + "summary": "Displays computer art and the server verion", "group": "server", "since": "5.0.0", "arity": -1, @@ -11,7 +11,7 @@ ], "reply_schema": { "type": "string", - "description": "String containing the generative computer art, and a text with the Redis version." + "description": "String containing the generative computer art, and a text with the server verion." }, "arguments": [ { From f1790f9709ebef5c5fdc180e5f82891af506474a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Mon, 25 Mar 2024 18:37:03 +0100 Subject: [PATCH 2/4] Batch-replace 'a Redis object' with 'an object' in JSON files --- src/commands/object-encoding.json | 2 +- src/commands/object-freq.json | 2 +- src/commands/object-idletime.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/commands/object-encoding.json b/src/commands/object-encoding.json index f255b57d75..3fab4aadb5 100644 --- a/src/commands/object-encoding.json +++ b/src/commands/object-encoding.json @@ -1,6 +1,6 @@ { "ENCODING": { - "summary": "Returns the internal encoding of a Redis object.", + "summary": "Returns the internal encoding of an object.", "complexity": "O(1)", "group": "generic", "since": "2.2.3", diff --git a/src/commands/object-freq.json b/src/commands/object-freq.json index 03b5b2b20f..7a7553b188 100644 --- a/src/commands/object-freq.json +++ b/src/commands/object-freq.json @@ -1,6 +1,6 @@ { "FREQ": { - "summary": "Returns the logarithmic access frequency counter of a Redis object.", + "summary": "Returns the logarithmic access frequency counter of an object.", "complexity": "O(1)", "group": "generic", "since": "4.0.0", diff --git a/src/commands/object-idletime.json b/src/commands/object-idletime.json index 03c202a2b9..dc1d254c8e 100644 --- a/src/commands/object-idletime.json +++ b/src/commands/object-idletime.json @@ -1,6 +1,6 @@ { "IDLETIME": { - "summary": "Returns the time since the last access to a Redis object.", + "summary": "Returns the time since the last access to an object.", "complexity": "O(1)", "group": "generic", "since": "2.2.3", From 65af7861d8053712d98ccebf70d1d875e363b102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Mon, 25 Mar 2024 18:43:24 +0100 Subject: [PATCH 3/4] Remove remaing occurrences of "Redis" in JSON files --- src/commands/append.json | 2 +- src/commands/cluster.json | 2 +- src/commands/command-count.json | 2 +- src/commands/command-getkeys.json | 2 +- src/commands/command-getkeysandflags.json | 2 +- src/commands/command-list.json | 2 +- src/commands/command.json | 2 +- src/commands/dump.json | 2 +- src/commands/hello.json | 2 +- src/commands/migrate.json | 2 +- src/commands/publish.json | 2 +- src/commands/readonly.json | 2 +- src/commands/restore-asking.json | 2 +- src/commands/restore.json | 2 +- src/commands/sentinel-ckquorum.json | 2 +- src/commands/sentinel-config.json | 2 +- src/commands/sentinel-debug.json | 2 +- src/commands/sentinel-failover.json | 2 +- src/commands/sentinel-flushconfig.json | 2 +- src/commands/sentinel-get-master-addr-by-name.json | 2 +- src/commands/sentinel-is-master-down-by-addr.json | 2 +- src/commands/sentinel-master.json | 2 +- src/commands/sentinel-masters.json | 4 ++-- src/commands/sentinel-myid.json | 2 +- src/commands/sentinel-pending-scripts.json | 2 +- src/commands/sentinel-replicas.json | 2 +- src/commands/sentinel-reset.json | 2 +- src/commands/sentinel-set.json | 2 +- src/commands/sentinel.json | 2 +- src/commands/shutdown.json | 2 +- src/commands/slaveof.json | 2 +- src/commands/spublish.json | 2 +- src/commands/swapdb.json | 2 +- 33 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/commands/append.json b/src/commands/append.json index a8ec6bf82e..cc0912df7a 100644 --- a/src/commands/append.json +++ b/src/commands/append.json @@ -1,7 +1,7 @@ { "APPEND": { "summary": "Appends a string to the value of a key. Creates the key if it doesn't exist.", - "complexity": "O(1). The amortized time complexity is O(1) assuming the appended value is small and the already present value is of any size, since the dynamic string library used by Redis will double the free space available on every reallocation.", + "complexity": "O(1). The amortized time complexity is O(1) assuming the appended value is small and the already present value is of any size, since the dynamic string library used by the server will double the free space available on every reallocation.", "group": "string", "since": "2.0.0", "arity": 3, diff --git a/src/commands/cluster.json b/src/commands/cluster.json index e74404d8e7..25171473e7 100644 --- a/src/commands/cluster.json +++ b/src/commands/cluster.json @@ -1,6 +1,6 @@ { "CLUSTER": { - "summary": "A container for Redis Cluster commands.", + "summary": "A container for Cluster commands.", "complexity": "Depends on subcommand.", "group": "cluster", "since": "3.0.0", diff --git a/src/commands/command-count.json b/src/commands/command-count.json index 7306767b60..a996f04937 100644 --- a/src/commands/command-count.json +++ b/src/commands/command-count.json @@ -16,7 +16,7 @@ "CONNECTION" ], "reply_schema": { - "description": "Number of total commands in this Redis server.", + "description": "Number of total commands in this server.", "type": "integer" } } diff --git a/src/commands/command-getkeys.json b/src/commands/command-getkeys.json index 88103c5e63..36763cefcd 100644 --- a/src/commands/command-getkeys.json +++ b/src/commands/command-getkeys.json @@ -16,7 +16,7 @@ "CONNECTION" ], "reply_schema": { - "description": "List of keys from the given Redis command.", + "description": "List of keys from the given command.", "type": "array", "items": { "type": "string" diff --git a/src/commands/command-getkeysandflags.json b/src/commands/command-getkeysandflags.json index a069f5e606..9dd1e26ebe 100644 --- a/src/commands/command-getkeysandflags.json +++ b/src/commands/command-getkeysandflags.json @@ -16,7 +16,7 @@ "CONNECTION" ], "reply_schema": { - "description": "List of keys from the given Redis command and their usage flags.", + "description": "List of keys from the given command and their usage flags.", "type": "array", "uniqueItems": true, "items": { diff --git a/src/commands/command-list.json b/src/commands/command-list.json index b85a9a5d74..7f4e3f5da0 100644 --- a/src/commands/command-list.json +++ b/src/commands/command-list.json @@ -1,7 +1,7 @@ { "LIST": { "summary": "Returns a list of command names.", - "complexity": "O(N) where N is the total number of Redis commands", + "complexity": "O(N) where N is the total number of commands", "group": "server", "since": "7.0.0", "arity": -2, diff --git a/src/commands/command.json b/src/commands/command.json index 9d15be2441..247d4863e3 100644 --- a/src/commands/command.json +++ b/src/commands/command.json @@ -1,7 +1,7 @@ { "COMMAND": { "summary": "Returns detailed information about all commands.", - "complexity": "O(N) where N is the total number of Redis commands", + "complexity": "O(N) where N is the total number of commands", "group": "server", "since": "2.8.13", "arity": -1, diff --git a/src/commands/dump.json b/src/commands/dump.json index 9e772edd10..5d0f600614 100644 --- a/src/commands/dump.json +++ b/src/commands/dump.json @@ -1,7 +1,7 @@ { "DUMP": { "summary": "Returns a serialized representation of the value stored at a key.", - "complexity": "O(1) to access the key and additional O(N*M) to serialize it, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1).", + "complexity": "O(1) to access the key and additional O(N*M) to serialize it, where N is the number of objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1).", "group": "generic", "since": "2.6.0", "arity": 2, diff --git a/src/commands/hello.json b/src/commands/hello.json index e916e72555..f3fcc5a13c 100644 --- a/src/commands/hello.json +++ b/src/commands/hello.json @@ -1,6 +1,6 @@ { "HELLO": { - "summary": "Handshakes with the Redis server.", + "summary": "Handshakes with the server.", "complexity": "O(1)", "group": "connection", "since": "6.0.0", diff --git a/src/commands/migrate.json b/src/commands/migrate.json index f1dfae4e09..4988ba8be7 100644 --- a/src/commands/migrate.json +++ b/src/commands/migrate.json @@ -1,6 +1,6 @@ { "MIGRATE": { - "summary": "Atomically transfers a key from one Redis instance to another.", + "summary": "Atomically transfers a key from one instance to another.", "complexity": "This command actually executes a DUMP+DEL in the source instance, and a RESTORE in the target instance. See the pages of these commands for time complexity. Also an O(N) data transfer between the two instances is performed.", "group": "generic", "since": "2.6.0", diff --git a/src/commands/publish.json b/src/commands/publish.json index 1dd757d69b..51890bf9c7 100644 --- a/src/commands/publish.json +++ b/src/commands/publish.json @@ -25,7 +25,7 @@ } ], "reply_schema": { - "description": "the number of clients that received the message. Note that in a Redis Cluster, only clients that are connected to the same node as the publishing client are included in the count", + "description": "the number of clients that received the message. Note that in a Cluster, only clients that are connected to the same node as the publishing client are included in the count", "type": "integer", "minimum": 0 } diff --git a/src/commands/readonly.json b/src/commands/readonly.json index 253573c97c..4478cfb797 100644 --- a/src/commands/readonly.json +++ b/src/commands/readonly.json @@ -1,6 +1,6 @@ { "READONLY": { - "summary": "Enables read-only queries for a connection to a Redis Cluster replica node.", + "summary": "Enables read-only queries for a connection to a Cluster replica node.", "complexity": "O(1)", "group": "cluster", "since": "3.0.0", diff --git a/src/commands/restore-asking.json b/src/commands/restore-asking.json index 2694a873cc..71c2a6815d 100644 --- a/src/commands/restore-asking.json +++ b/src/commands/restore-asking.json @@ -1,7 +1,7 @@ { "RESTORE-ASKING": { "summary": "An internal command for migrating keys in a cluster.", - "complexity": "O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).", + "complexity": "O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).", "group": "server", "since": "3.0.0", "arity": -4, diff --git a/src/commands/restore.json b/src/commands/restore.json index 383dd451e1..b60ee8c25b 100644 --- a/src/commands/restore.json +++ b/src/commands/restore.json @@ -1,7 +1,7 @@ { "RESTORE": { "summary": "Creates a key from the serialized representation of a value.", - "complexity": "O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).", + "complexity": "O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).", "group": "generic", "since": "2.6.0", "arity": -4, diff --git a/src/commands/sentinel-ckquorum.json b/src/commands/sentinel-ckquorum.json index cdd6cd1974..e79132303f 100644 --- a/src/commands/sentinel-ckquorum.json +++ b/src/commands/sentinel-ckquorum.json @@ -1,6 +1,6 @@ { "CKQUORUM": { - "summary": "Checks for a Redis Sentinel quorum.", + "summary": "Checks for a Sentinel quorum.", "group": "sentinel", "since": "2.8.4", "arity": 3, diff --git a/src/commands/sentinel-config.json b/src/commands/sentinel-config.json index a406125a5d..22186fd676 100644 --- a/src/commands/sentinel-config.json +++ b/src/commands/sentinel-config.json @@ -1,6 +1,6 @@ { "CONFIG": { - "summary": "Configures Redis Sentinel.", + "summary": "Configures Sentinel.", "complexity": "O(N) when N is the number of configuration parameters provided", "group": "sentinel", "since": "6.2.0", diff --git a/src/commands/sentinel-debug.json b/src/commands/sentinel-debug.json index c671ec5e1a..b19f2416b9 100644 --- a/src/commands/sentinel-debug.json +++ b/src/commands/sentinel-debug.json @@ -1,6 +1,6 @@ { "DEBUG": { - "summary": "Lists or updates the current configurable parameters of Redis Sentinel.", + "summary": "Lists or updates the current configurable parameters of Sentinel.", "complexity": "O(N) where N is the number of configurable parameters", "group": "sentinel", "since": "7.0.0", diff --git a/src/commands/sentinel-failover.json b/src/commands/sentinel-failover.json index 8f50375897..8a211990f2 100644 --- a/src/commands/sentinel-failover.json +++ b/src/commands/sentinel-failover.json @@ -1,6 +1,6 @@ { "FAILOVER": { - "summary": "Forces a Redis Sentinel failover.", + "summary": "Forces a Sentinel failover.", "group": "sentinel", "since": "2.8.4", "arity": 3, diff --git a/src/commands/sentinel-flushconfig.json b/src/commands/sentinel-flushconfig.json index b2fa5decfe..13757c2a63 100644 --- a/src/commands/sentinel-flushconfig.json +++ b/src/commands/sentinel-flushconfig.json @@ -1,6 +1,6 @@ { "FLUSHCONFIG": { - "summary": "Rewrites the Redis Sentinel configuration file.", + "summary": "Rewrites the Sentinel configuration file.", "complexity": "O(1)", "group": "sentinel", "since": "2.8.4", diff --git a/src/commands/sentinel-get-master-addr-by-name.json b/src/commands/sentinel-get-master-addr-by-name.json index 998f95ec9a..1bcbec5341 100644 --- a/src/commands/sentinel-get-master-addr-by-name.json +++ b/src/commands/sentinel-get-master-addr-by-name.json @@ -1,6 +1,6 @@ { "GET-MASTER-ADDR-BY-NAME": { - "summary": "Returns the port and address of a master Redis instance.", + "summary": "Returns the port and address of a master instance.", "complexity": "O(1)", "group": "sentinel", "since": "2.8.4", diff --git a/src/commands/sentinel-is-master-down-by-addr.json b/src/commands/sentinel-is-master-down-by-addr.json index a13e96b79f..fd7698014c 100644 --- a/src/commands/sentinel-is-master-down-by-addr.json +++ b/src/commands/sentinel-is-master-down-by-addr.json @@ -1,6 +1,6 @@ { "IS-MASTER-DOWN-BY-ADDR": { - "summary": "Determines whether a master Redis instance is down.", + "summary": "Determines whether a master instance is down.", "complexity": "O(1)", "group": "sentinel", "since": "2.8.4", diff --git a/src/commands/sentinel-master.json b/src/commands/sentinel-master.json index 8ca446d498..ff94617aeb 100644 --- a/src/commands/sentinel-master.json +++ b/src/commands/sentinel-master.json @@ -1,6 +1,6 @@ { "MASTER": { - "summary": "Returns the state of a master Redis instance.", + "summary": "Returns the state of a master instance.", "complexity": "O(1)", "group": "sentinel", "since": "2.8.4", diff --git a/src/commands/sentinel-masters.json b/src/commands/sentinel-masters.json index 1e96b71051..26992585a1 100644 --- a/src/commands/sentinel-masters.json +++ b/src/commands/sentinel-masters.json @@ -1,6 +1,6 @@ { "MASTERS": { - "summary": "Returns a list of monitored Redis masters.", + "summary": "Returns a list of monitored masters.", "complexity": "O(N) where N is the number of masters", "group": "sentinel", "since": "2.8.4", @@ -14,7 +14,7 @@ ], "reply_schema": { "type": "array", - "description": "List of monitored Redis masters, and their state.", + "description": "List of monitored masters, and their state.", "items": { "type": "object", "additionalProperties": { diff --git a/src/commands/sentinel-myid.json b/src/commands/sentinel-myid.json index 4d366ebf3b..7caaa09146 100644 --- a/src/commands/sentinel-myid.json +++ b/src/commands/sentinel-myid.json @@ -1,6 +1,6 @@ { "MYID": { - "summary": "Returns the Redis Sentinel instance ID.", + "summary": "Returns the Sentinel instance ID.", "complexity": "O(1)", "group": "sentinel", "since": "6.2.0", diff --git a/src/commands/sentinel-pending-scripts.json b/src/commands/sentinel-pending-scripts.json index 22dae4774d..10a36a6462 100644 --- a/src/commands/sentinel-pending-scripts.json +++ b/src/commands/sentinel-pending-scripts.json @@ -1,6 +1,6 @@ { "PENDING-SCRIPTS": { - "summary": "Returns information about pending scripts for Redis Sentinel.", + "summary": "Returns information about pending scripts for Sentinel.", "group": "sentinel", "since": "2.8.4", "arity": 2, diff --git a/src/commands/sentinel-replicas.json b/src/commands/sentinel-replicas.json index 09d88f2d0d..32b04e994a 100644 --- a/src/commands/sentinel-replicas.json +++ b/src/commands/sentinel-replicas.json @@ -1,6 +1,6 @@ { "REPLICAS": { - "summary": "Returns a list of the monitored Redis replicas.", + "summary": "Returns a list of the monitored replicas.", "complexity": "O(N) where N is the number of replicas", "group": "sentinel", "since": "5.0.0", diff --git a/src/commands/sentinel-reset.json b/src/commands/sentinel-reset.json index 17b53a481f..5d2a63f3d5 100644 --- a/src/commands/sentinel-reset.json +++ b/src/commands/sentinel-reset.json @@ -1,6 +1,6 @@ { "RESET": { - "summary": "Resets Redis masters by name matching a pattern.", + "summary": "Resets masters by name matching a pattern.", "complexity": "O(N) where N is the number of monitored masters", "group": "sentinel", "since": "2.8.4", diff --git a/src/commands/sentinel-set.json b/src/commands/sentinel-set.json index 3e86196119..abca33b89a 100644 --- a/src/commands/sentinel-set.json +++ b/src/commands/sentinel-set.json @@ -1,6 +1,6 @@ { "SET": { - "summary": "Changes the configuration of a monitored Redis master.", + "summary": "Changes the configuration of a monitored master.", "complexity": "O(1)", "group": "sentinel", "since": "2.8.4", diff --git a/src/commands/sentinel.json b/src/commands/sentinel.json index c14d5a30c6..fd2f4046d5 100644 --- a/src/commands/sentinel.json +++ b/src/commands/sentinel.json @@ -1,6 +1,6 @@ { "SENTINEL": { - "summary": "A container for Redis Sentinel commands.", + "summary": "A container for Sentinel commands.", "complexity": "Depends on subcommand.", "group": "sentinel", "since": "2.8.4", diff --git a/src/commands/shutdown.json b/src/commands/shutdown.json index a9e45d42d3..f47f067535 100644 --- a/src/commands/shutdown.json +++ b/src/commands/shutdown.json @@ -1,6 +1,6 @@ { "SHUTDOWN": { - "summary": "Synchronously saves the database(s) to disk and shuts down the Redis server.", + "summary": "Synchronously saves the database(s) to disk and shuts down the server.", "complexity": "O(N) when saving, where N is the total number of keys in all databases when saving data, otherwise O(1)", "group": "server", "since": "1.0.0", diff --git a/src/commands/slaveof.json b/src/commands/slaveof.json index 6595960f94..af5b54fae0 100644 --- a/src/commands/slaveof.json +++ b/src/commands/slaveof.json @@ -1,6 +1,6 @@ { "SLAVEOF": { - "summary": "Sets a Redis server as a replica of another, or promotes it to being a master.", + "summary": "Sets a server as a replica of another, or promotes it to being a master.", "complexity": "O(1)", "group": "server", "since": "1.0.0", diff --git a/src/commands/spublish.json b/src/commands/spublish.json index 16c948cc6f..1016bd2826 100644 --- a/src/commands/spublish.json +++ b/src/commands/spublish.json @@ -43,7 +43,7 @@ } ], "reply_schema": { - "description": "the number of clients that received the message. Note that in a Redis Cluster, only clients that are connected to the same node as the publishing client are included in the count", + "description": "the number of clients that received the message. Note that in a Cluster, only clients that are connected to the same node as the publishing client are included in the count", "type": "integer", "minimum": 0 } diff --git a/src/commands/swapdb.json b/src/commands/swapdb.json index e98bc768bf..6d05fab12d 100644 --- a/src/commands/swapdb.json +++ b/src/commands/swapdb.json @@ -1,6 +1,6 @@ { "SWAPDB": { - "summary": "Swaps two Redis databases.", + "summary": "Swaps two databases.", "complexity": "O(N) where N is the count of clients watching or blocking on keys from both databases.", "group": "server", "since": "4.0.0", From ccbdf608f051b6c253aad512966024c402465212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Mon, 25 Mar 2024 18:44:04 +0100 Subject: [PATCH 4/4] Remove "Redis" in src/commands/README.md --- src/commands/README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/commands/README.md b/src/commands/README.md index 5ef9a3f290..0a4d730f1b 100644 --- a/src/commands/README.md +++ b/src/commands/README.md @@ -1,15 +1,13 @@ -This directory contains JSON files, one for each of Redis commands. +This directory contains JSON files, one for each command. Each JSON contains all the information about the command itself, but these JSON files are not to be used directly! Any third party who needs access to command information must get it from `COMMAND INFO` and `COMMAND DOCS`. The output can be extracted in a JSON format by using `redis-cli --json`, in the same manner as in `utils/generate-commands-json.py`. -The JSON files are used to generate commands.def (and https://github.com/redis/redis-doc/blob/master/commands.json) in Redis, and +The JSON files are used to generate commands.def within this repo and JSON files for documentation, and despite looking similar to the output of `COMMAND` there are some fields and flags that are implicitly populated, and that's the reason one shouldn't rely on the raw files. -The structure of each JSON is somewhat documented in https://redis.io/commands/command-docs/ and https://redis.io/commands/command/ - The `reply_schema` section is a standard JSON Schema (see https://json-schema.org/) that describes the reply of each command. It is designed to someday be used to auto-generate code in client libraries, but is not yet mature and is not exposed externally.