diff --git a/redirects.ts b/redirects.ts index 14762816..2f941d03 100644 --- a/redirects.ts +++ b/redirects.ts @@ -55,7 +55,27 @@ function generateDocsRedirects(basePath: string): RedirectRule[] { // Operations API { from: withBase('/developers/operations-api/utilities'), - to: withBase('/developers/operations-api/system-operations'), + to: withBase('/reference/operations-api/system-operations'), + }, + { from: withBase('/developers/operations-api'), to: withBase('/developers/applications/operations-api') }, + { + from: withBase('/developers/operations-api/databases-and-tables'), + to: withBase('/reference/operations-api/databases-and-tables'), + }, + { + from: withBase('/developers/operations-api/system-operations'), + to: withBase('/reference/operations-api/system-operations'), + }, + { from: withBase('/developers/operations-api/clustering'), to: withBase('/reference/operations-api/clustering') }, + { from: withBase('/developers/operations-api/components'), to: withBase('/reference/operations-api/components') }, + { from: withBase('/developers/operations-api/logs'), to: withBase('/reference/operations-api/logs') }, + { + from: withBase('/developers/operations-api/bulk-operations'), + to: withBase('/reference/operations-api/bulk-operations'), + }, + { + from: withBase('/developers/operations-api/advanced-json-sql-examples'), + to: withBase('/reference/operations-api/advanced-json-sql-examples'), }, // Installation paths @@ -142,7 +162,10 @@ function generateDocsRedirects(basePath: string): RedirectRule[] { from: [withBase('/custom-functions/using-npm-git'), withBase('/developers/custom-functions/create-project')], to: withBase('/developers/applications/'), }, - { from: withBase('/custom-functions/custom-functions-operations'), to: withBase('/developers/operations-api/') }, + { + from: withBase('/custom-functions/custom-functions-operations'), + to: withBase('/developers/applications/operations-api/'), + }, { from: withBase('/custom-functions/debugging-custom-function'), to: withBase('/developers/applications/debugging'), @@ -162,9 +185,9 @@ function generateDocsRedirects(basePath: string): RedirectRule[] { { from: withBase('/audit-logging'), to: withBase('/administration/logging/audit-logging') }, { from: withBase('/jobs'), to: withBase('/administration/jobs') }, { from: withBase('/upgrade-hdb-instance'), to: withBase('/deployments/upgrade-hdb-instance') }, - { from: withBase('/operations-api'), to: withBase('/developers/operations-api/') }, + { from: withBase('/operations-api'), to: withBase('/developers/applications/operations-api/') }, { from: withBase('/rest'), to: withBase('/developers/rest') }, - { from: withBase('/api'), to: withBase('/developers/operations-api/') }, + { from: withBase('/api'), to: withBase('/developers/applications/operations-api/') }, // File rename redirect { from: withBase('/administration/logging/logging'), to: withBase('/administration/logging/standard-logging') }, diff --git a/versioned_docs/version-4.6/administration/administration.md b/versioned_docs/version-4.6/administration/administration.md index e0084bb5..88267ddd 100644 --- a/versioned_docs/version-4.6/administration/administration.md +++ b/versioned_docs/version-4.6/administration/administration.md @@ -12,7 +12,7 @@ As a distributed database, data protection and recovery can benefit from differe - Availability: As a distributed database Harper is intrinsically built for high-availability and a cluster will continue to run even with complete server(s) failure. This is the first and primary defense for protecting against any downtime or data loss. Harper provides fast horizontal scaling functionality with node cloning, which facilitates ease of establishing high availability clusters. - [Audit log](administration/logging/audit-logging): Harper defaults to tracking data changes so malicious data changes can be found, attributed, and reverted. This provides security-level defense against data loss, allowing for fine-grained isolation and reversion of individual data without the large-scale reversion/loss of data associated with point-in-time recovery approaches. -- Snapshots: When used as a source-of-truth database for crucial data, we recommend using snapshot tools to regularly snapshot databases as a final backup/defense against data loss (this should only be used as a last resort in recovery). Harper has a [`get_backup`](./developers/operations-api/databases-and-tables#get-backup) operation, which provides direct support for making and retrieving database snapshots. An HTTP request can be used to get a snapshot. Alternatively, volume snapshot tools can be used to snapshot data at the OS/VM level. Harper can also provide scripts for replaying transaction logs from snapshots to facilitate point-in-time recovery when necessary (often customization may be preferred in certain recovery situations to minimize data loss). +- Snapshots: When used as a source-of-truth database for crucial data, we recommend using snapshot tools to regularly snapshot databases as a final backup/defense against data loss (this should only be used as a last resort in recovery). Harper has a [`get_backup`](../reference/operations-api/databases-and-tables#get-backup) operation, which provides direct support for making and retrieving database snapshots. An HTTP request can be used to get a snapshot. Alternatively, volume snapshot tools can be used to snapshot data at the OS/VM level. Harper can also provide scripts for replaying transaction logs from snapshots to facilitate point-in-time recovery when necessary (often customization may be preferred in certain recovery situations to minimize data loss). ### Horizontal Scaling with Node Cloning @@ -23,8 +23,8 @@ Harper provides rapid horizontal scaling capabilities through [node cloning func Harper provides robust capabilities for analytics and observability to facilitate effective and informative monitoring: - Analytics provides statistics on usage, request counts, load, memory usage with historical tracking. The analytics data can be [accessed through querying](./reference/analytics). -- A large variety of real-time statistics about load, system information, database metrics, thread usage can be retrieved through the [`system_information` API](./developers/operations-api/system-operations). -- Information about the current cluster configuration and status can be found in the [cluster APIs](./developers/operations-api/clustering). +- A large variety of real-time statistics about load, system information, database metrics, thread usage can be retrieved through the [`system_information` API](../reference/operations-api/system-operations). +- Information about the current cluster configuration and status can be found in the [cluster APIs](../reference/operations-api/clustering). - Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https://github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor Harper with Graphana. ### Replication Transaction Logging diff --git a/versioned_docs/version-4.6/administration/harper-studio/instances.md b/versioned_docs/version-4.6/administration/harper-studio/instances.md index 07da8097..597b9cbe 100644 --- a/versioned_docs/version-4.6/administration/harper-studio/instances.md +++ b/versioned_docs/version-4.6/administration/harper-studio/instances.md @@ -10,7 +10,7 @@ The Harper Studio allows you to administer all of your HarperDinstances in one p - **5G Wavelength Instance** Managed installations of Harper running on the Verizon network through AWS Wavelength, what we call 5G Wavelength Instances. _Note, these instances are only accessible via the Verizon network._ - **Enterprise Instance** Any Harper installation that is managed by you. These include instances hosted within your cloud provider accounts (for example, from the AWS or Digital Ocean Marketplaces), privately hosted instances, or instances installed locally. -All interactions between the Studio and your instances take place directly from your browser. Harper stores metadata about your instances, which enables the Studio to display these instances when you log in. Beyond that, all traffic is routed from your browser to the Harper instances using the standard [Harper API](../../developers/operations-api/). +All interactions between the Studio and your instances take place directly from your browser. Harper stores metadata about your instances, which enables the Studio to display these instances when you log in. Beyond that, all traffic is routed from your browser to the Harper instances using the standard [Harper API](../../developers/applications/operations-api). ## Organization Instance List diff --git a/versioned_docs/version-4.6/administration/jobs.md b/versioned_docs/version-4.6/administration/jobs.md index c487f424..777dee55 100644 --- a/versioned_docs/version-4.6/administration/jobs.md +++ b/versioned_docs/version-4.6/administration/jobs.md @@ -16,19 +16,19 @@ The job status can be **COMPLETE** or **IN_PROGRESS**. Example job operations include: -[csv data load](../developers/operations-api/bulk-operations#csv-data-load) +[csv data load](../reference/operations-api/bulk-operations#csv-data-load) -[csv file load](../developers/operations-api/bulk-operations#csv-file-load) +[csv file load](../reference/operations-api/bulk-operations#csv-file-load) -[csv url load](../developers/operations-api/bulk-operations#csv-url-load) +[csv url load](../reference/operations-api/bulk-operations#csv-url-load) -[import from s3](../developers/operations-api/bulk-operations#import-from-s3) +[import from s3](../reference/operations-api/bulk-operations#import-from-s3) -[delete_records_before](../developers/operations-api/bulk-operations#delete-records-before) +[delete_records_before](../reference/operations-api/bulk-operations#delete-records-before) -[export_local](../developers/operations-api/bulk-operations#export-local) +[export_local](../reference/operations-api/bulk-operations#export-local) -[export_to_s3](../developers/operations-api/bulk-operations#export-to-s3) +[export_to_s3](../reference/operations-api/bulk-operations#export-to-s3) Example Response from a Job Operation @@ -42,7 +42,7 @@ Whenever one of these operations is initiated, an asynchronous job is created an ## Managing Jobs -To check on a job's status, use the [get_job](../developers/operations-api/jobs#get-job) operation. +To check on a job's status, use the [get_job](../reference/operations-api/jobs#get-job) operation. Get Job Request @@ -77,7 +77,7 @@ Get Job Response ## Finding Jobs -To find jobs (if the ID is not known) use the [search_jobs_by_start_date](../developers/operations-api/jobs#search-jobs-by-start-date) operation. +To find jobs (if the ID is not known) use the [search_jobs_by_start_date](../reference/operations-api/jobs#search-jobs-by-start-date) operation. Search Jobs Request diff --git a/versioned_docs/version-4.6/administration/logging/audit-logging.md b/versioned_docs/version-4.6/administration/logging/audit-logging.md index 209b4981..7d95becd 100644 --- a/versioned_docs/version-4.6/administration/logging/audit-logging.md +++ b/versioned_docs/version-4.6/administration/logging/audit-logging.md @@ -14,7 +14,7 @@ Audit log is enabled by default. To disable the audit log, set `logging.auditLog #### read_audit_log -The `read_audit_log` operation is flexible, enabling users to query with many parameters. All operations search on a single table. Filter options include timestamps, usernames, and table hash values. Additional examples found in the [Harper API documentation](../../developers/operations-api/logs). +The `read_audit_log` operation is flexible, enabling users to query with many parameters. All operations search on a single table. Filter options include timestamps, usernames, and table hash values. Additional examples found in the [Harper API documentation](../../reference/operations-api/logs). **Search by Timestamp** diff --git a/versioned_docs/version-4.6/deployments/configuration.md b/versioned_docs/version-4.6/deployments/configuration.md index 89fe9ca7..b1b86f1b 100644 --- a/versioned_docs/version-4.6/deployments/configuration.md +++ b/versioned_docs/version-4.6/deployments/configuration.md @@ -16,7 +16,7 @@ The configuration elements in `harperdb-config.yaml` use camelcase, such as `ope To change a configuration value, edit the `harperdb-config.yaml` file and save any changes. **HarperDB must be restarted for changes to take effect.** -Alternatively, all configuration values can also be modified using environment variables, command line arguments, or the operations API via the [`set_configuration` operation](../developers/operations-api/configuration#set-configuration). +Alternatively, all configuration values can also be modified using environment variables, command line arguments, or the operations API via the [`set_configuration` operation](../reference/operations-api/configuration#set-configuration). For nested configuration elements, use underscores to represent parent-child relationships. When accessed this way, elements are case-insensitive. diff --git a/versioned_docs/version-4.6/deployments/upgrade-hdb-instance.md b/versioned_docs/version-4.6/deployments/upgrade-hdb-instance.md index 768b9323..6e9fc4ab 100644 --- a/versioned_docs/version-4.6/deployments/upgrade-hdb-instance.md +++ b/versioned_docs/version-4.6/deployments/upgrade-hdb-instance.md @@ -124,7 +124,7 @@ replication: - Disable NATS by setting `clustering.enabled` to `false`. - Stop the instance and upgrade it. - Start the instance. - - Call [`add_node`](../developers/operations-api/clustering#add-node) on the upgraded instance. In this call, omit `subscriptions` so that a fully replicating cluster is built. The target node for this call should be the bridge node. _Note: depending on your setup, you may need to expand this `add_node` call to include_ [_authorization and/or tls information_](../developers/operations-api/clustering#add-node)_._ + - Call [`add_node`](../reference/operations-api/clustering#add-node) on the upgraded instance. In this call, omit `subscriptions` so that a fully replicating cluster is built. The target node for this call should be the bridge node. _Note: depending on your setup, you may need to expand this `add_node` call to include_ [_authorization and/or tls information_](../reference/operations-api/clustering#add-node)_._ ```json { diff --git a/versioned_docs/version-4.6/developers/applications/operations-api.md b/versioned_docs/version-4.6/developers/applications/operations-api.md new file mode 100644 index 00000000..df0ce063 --- /dev/null +++ b/versioned_docs/version-4.6/developers/applications/operations-api.md @@ -0,0 +1,284 @@ +--- +title: Operations API +--- + +# Operations API + +Think of the Operations API as the command center for Harper. It’s the layer that lets you create databases and tables, insert and query data, monitor system health, and even fine-tune configuration, all through JSON calls. Instead of jumping between tools or UIs, the API gives you everything you need to shape your data story programmatically. + +To show you how it works, we’ll use a familiar example: building a database for our company’s dogs 🐶. Step by step, we’ll go from nothing to a working system, and along the way, you’ll see how easy it is to extend Harper as your needs grow. + +For full details on every operation, check out the [Operations API reference](../../reference/operations-api/). But for now, let’s walk through the journey. + +## Step 1: Create a Database + +Everything in Harper starts with a database. Think of it as the logical container for your tables and data. If you don’t explicitly create one, Harper defaults to a database called data. But let’s create our own to keep things organized. + +```json +{ + "operation": "create_database", + "database": "dev" +} +``` + +If successful, Harper responds with: + +```json +{ + "message": "database 'dev' successfully created" +} +``` + +👉 See more in the [Databases and Tables reference](../../reference/operations-api/databases-and-tables) + +## Step 2: Create a Table + +Inside our database, we’ll create a table to store information about dogs. Every table needs a primary key. In Harper, this is often an `id`. + +```json +{ + "operation": "create_table", + "database": "dev", + "table": "dog", + "primary_key": "id" +} +``` + +Response: + +```json +{ + "message": "table 'dev.dog' successfully created." +} +``` + +Just like that, you now have a table ready to accept records. + +## Step 3: Insert Data + +Let’s add our first record: Penny, a dog we care about. + +```json +{ + "operation": "insert", + "database": "dev", + "table": "dog", + "records": [ + { + "id": 1, + "dog_name": "Penny", + "owner_name": "Kyle", + "breed_id": 154, + "age": 7, + "weight_lbs": 38 + } + ] +} +``` + +Response: + +```json +{ + "message": "inserted 1 of 1 records", + "inserted_hashes": [1], + "skipped_hashes": [] +} +``` + +Harper makes inserts painless. If you add new attributes not defined in the schema, Harper will create them automatically unless you’ve locked things down with explicit attributes. + +More examples in the [NoSQL Operations reference](../../reference/operations-api/nosql-operations). + +## Step 4: Query Data + +Now that we have data, let’s retrieve it. You can query using NoSQL operations like `search_by_id` or `search_by_value`, or you can use SQL. + +**NoSQL Example**: + +```json +{ + "operation": "search_by_id", + "database": "dev", + "table": "dog", + "ids": [1], + "get_attributes": ["dog_name", "owner_name"] +} +``` + +Response: + +```json +[ + { + "dog_name": "Penny", + "owner_name": "Kyle" + } +] +``` + +**SQL Example:** + +```json +{ + "operation": "sql", + "sql": "SELECT * FROM dev.dog WHERE id = 1" +} +``` + +Response: + +```json +[ + { + "id": 1, + "dog_name": "Penny", + "owner_name": "Kyle", + "age": 7, + "weight_lbs": 38, + "breed_id": 154 + } +] +``` + +👉 Explore more in the [SQL Operations reference](../../reference/operations-api/sql-operations) + +## Step 5: Update Data + +Dogs grow and change, and so does data. Updating Penny’s name is as simple as: + +```json +{ + "operation": "update", + "database": "dev", + "table": "dog", + "records": [ + { + "id": 1, + "dog_name": "Penny B" + } + ] +} +``` + +Response: + +```json +{ + "message": "updated 1 of 1 records", + "update_hashes": [1], + "skipped_hashes": [] +} +``` + +## Step 6: Monitor Jobs and Logs + +Harper tracks background jobs (like CSV imports) and system logs (like errors or warnings). + +**Check a job:** + +```json +{ + "operation": "get_job", + "id": "4a982782-929a-4507-8794-26dae1132def" +} +``` + +**Read logs:** + +```json +{ + "operation": "read_log", + "limit": 100, + "level": "error" +} +``` + +This is critical when you’re troubleshooting imports or watching for application errors. See [Jobs](../../reference/operations-api/jobs) and [Logs](../../reference/operations-api/logs) for full coverage. + +## Step 7: Tune Configuration and Restart + +As workloads grow, you might want to adjust configuration. For example, increasing logging verbosity or enabling clustering. + +```json +{ + "operation": "set_configuration", + "logging_level": "trace", + "clustering_enabled": true +} +``` + +Changes require a restart: + +```json +{ + "operation": "restart" +} +``` + +Full details in the [Configuration](../../reference/operations-api/configuration) and [System Operations](../../reference/operations-api/system-operations) docs. + +## Step 8: Secure Your Instance + +Harper gives you fine-grained control over who can do what. You can create roles, assign permissions, and manage users. + +Add a role: + +```json +{ + "operation": "add_role", + "role": "developer", + "permission": { + "dev": { + "tables": { + "dog": { + "read": true, + "insert": true, + "update": true, + "delete": false + } + } + } + } +} +``` + +Add a user: + +```json +{ + "operation": "add_user", + "role": "developer", + "username": "hdb_user", + "password": "password", + "active": true +} +``` + +For token-based authentication: + +```json +{ + "operation": "create_authentication_tokens", + "username": "hdb_user", + "password": "password" +} +``` + +More in [Users and Roles](../../reference/operations-api/users-and-roles) and [Token Authentication](../../reference/operations-api/token-authentication). + +## Step 9: Advanced Operations + +Finally, Harper provides deeper operational tools when you need them: + +- Backups with `get_backup` +- Audit logs with `read_audit_log` +- License management with `set_license` + +See the [full Operations API reference](../../reference/operations-api/) for every option. + +--- + +From creating a database and table to inserting data, querying with SQL or NoSQL, monitoring logs, tuning the system, and locking down security, the Operations API gives you the complete toolkit to run Harper programmatically. + +It’s simple to start small (one table, one record) and grow into advanced scenarios as your application evolves. And since everything is JSON, you can automate workflows from day one. diff --git a/versioned_docs/version-4.6/developers/operations-api/advanced-json-sql-examples.md b/versioned_docs/version-4.6/reference/operations-api/advanced-json-sql-examples.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/advanced-json-sql-examples.md rename to versioned_docs/version-4.6/reference/operations-api/advanced-json-sql-examples.md diff --git a/versioned_docs/version-4.6/developers/operations-api/analytics.md b/versioned_docs/version-4.6/reference/operations-api/analytics.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/analytics.md rename to versioned_docs/version-4.6/reference/operations-api/analytics.md diff --git a/versioned_docs/version-4.6/developers/operations-api/bulk-operations.md b/versioned_docs/version-4.6/reference/operations-api/bulk-operations.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/bulk-operations.md rename to versioned_docs/version-4.6/reference/operations-api/bulk-operations.md diff --git a/versioned_docs/version-4.6/developers/operations-api/certificate-management.md b/versioned_docs/version-4.6/reference/operations-api/certificate-management.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/certificate-management.md rename to versioned_docs/version-4.6/reference/operations-api/certificate-management.md diff --git a/versioned_docs/version-4.6/developers/operations-api/clustering-nats.md b/versioned_docs/version-4.6/reference/operations-api/clustering-nats.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/clustering-nats.md rename to versioned_docs/version-4.6/reference/operations-api/clustering-nats.md diff --git a/versioned_docs/version-4.6/developers/operations-api/clustering.md b/versioned_docs/version-4.6/reference/operations-api/clustering.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/clustering.md rename to versioned_docs/version-4.6/reference/operations-api/clustering.md diff --git a/versioned_docs/version-4.6/developers/operations-api/components.md b/versioned_docs/version-4.6/reference/operations-api/components.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/components.md rename to versioned_docs/version-4.6/reference/operations-api/components.md diff --git a/versioned_docs/version-4.6/developers/operations-api/configuration.md b/versioned_docs/version-4.6/reference/operations-api/configuration.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/configuration.md rename to versioned_docs/version-4.6/reference/operations-api/configuration.md diff --git a/versioned_docs/version-4.6/developers/operations-api/custom-functions.md b/versioned_docs/version-4.6/reference/operations-api/custom-functions.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/custom-functions.md rename to versioned_docs/version-4.6/reference/operations-api/custom-functions.md diff --git a/versioned_docs/version-4.6/developers/operations-api/databases-and-tables.md b/versioned_docs/version-4.6/reference/operations-api/databases-and-tables.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/databases-and-tables.md rename to versioned_docs/version-4.6/reference/operations-api/databases-and-tables.md diff --git a/versioned_docs/version-4.6/developers/operations-api/index.md b/versioned_docs/version-4.6/reference/operations-api/index.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/index.md rename to versioned_docs/version-4.6/reference/operations-api/index.md diff --git a/versioned_docs/version-4.6/developers/operations-api/jobs.md b/versioned_docs/version-4.6/reference/operations-api/jobs.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/jobs.md rename to versioned_docs/version-4.6/reference/operations-api/jobs.md diff --git a/versioned_docs/version-4.6/developers/operations-api/logs.md b/versioned_docs/version-4.6/reference/operations-api/logs.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/logs.md rename to versioned_docs/version-4.6/reference/operations-api/logs.md diff --git a/versioned_docs/version-4.6/developers/operations-api/nosql-operations.md b/versioned_docs/version-4.6/reference/operations-api/nosql-operations.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/nosql-operations.md rename to versioned_docs/version-4.6/reference/operations-api/nosql-operations.md diff --git a/versioned_docs/version-4.6/developers/operations-api/quickstart-examples.md b/versioned_docs/version-4.6/reference/operations-api/quickstart-examples.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/quickstart-examples.md rename to versioned_docs/version-4.6/reference/operations-api/quickstart-examples.md diff --git a/versioned_docs/version-4.6/developers/operations-api/registration.md b/versioned_docs/version-4.6/reference/operations-api/registration.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/registration.md rename to versioned_docs/version-4.6/reference/operations-api/registration.md diff --git a/versioned_docs/version-4.6/developers/operations-api/sql-operations.md b/versioned_docs/version-4.6/reference/operations-api/sql-operations.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/sql-operations.md rename to versioned_docs/version-4.6/reference/operations-api/sql-operations.md diff --git a/versioned_docs/version-4.6/developers/operations-api/system-operations.md b/versioned_docs/version-4.6/reference/operations-api/system-operations.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/system-operations.md rename to versioned_docs/version-4.6/reference/operations-api/system-operations.md diff --git a/versioned_docs/version-4.6/developers/operations-api/token-authentication.md b/versioned_docs/version-4.6/reference/operations-api/token-authentication.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/token-authentication.md rename to versioned_docs/version-4.6/reference/operations-api/token-authentication.md diff --git a/versioned_docs/version-4.6/developers/operations-api/users-and-roles.md b/versioned_docs/version-4.6/reference/operations-api/users-and-roles.md similarity index 100% rename from versioned_docs/version-4.6/developers/operations-api/users-and-roles.md rename to versioned_docs/version-4.6/reference/operations-api/users-and-roles.md