diff --git a/.gitignore b/.gitignore index e9f83f10dd..8843ebfc08 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ docs/*/*/kb/** # Ignore all generated files but keep _category_.json which is hand-authored docs/changetracker/8.1/integration/api/reference/* !docs/changetracker/8.1/integration/api/reference/_category_.json +!docs/changetracker/8.1/integration/api/reference/index.md # KB copy script lockfile .kb-copy.lock diff --git a/docs/changetracker/8.1/integration/api/overview.md b/docs/changetracker/8.1/integration/api/overview.md index beba7015a1..6296f3b9b4 100644 --- a/docs/changetracker/8.1/integration/api/overview.md +++ b/docs/changetracker/8.1/integration/api/overview.md @@ -6,7 +6,7 @@ sidebar_position: 20 # API -Netwrix Change Tracker provides a comprehensive REST API that allows customers to integrate with the platform programmatically. This is particularly useful for customers who run multiple instances of Netwrix Change Tracker in multiple regions, as they can use the API to pull data from each instance and build global reports containing data from all instances. +Netwrix Change Tracker provides a comprehensive REST API that customers can use to integrate with the platform programmatically. This is particularly useful for customers who run multiple instances of Netwrix Change Tracker in multiple regions, as they can use the API to pull data from each instance and build global reports containing data from all instances. ## Authentication @@ -14,7 +14,7 @@ All API endpoints require authentication. See [Authentication](/docs/changetrack ## API Reference -For a complete interactive reference of all Netwrix Change Tracker Hub API endpoints, see the [Netwrix Change Tracker Hub API Reference](/docs/changetracker/8_1/integration/api/reference/changetracker-hub). The Netwrix Change Tracker Hub (the central management server) generates this reference directly from its OpenAPI 3.0 spec, covering all available endpoints with request/response schemas. +For an interactive reference of all Netwrix Change Tracker Hub API endpoints, see the [Netwrix Change Tracker Hub API Reference](/docs/changetracker/8_1/integration/api/reference/). The Netwrix Change Tracker Hub (the central management server) generates this reference directly from its OpenAPI 3.0 spec, covering all available endpoints with request/response schemas. The raw OpenAPI 3.0 spec (YAML) is also [available for download](/openapi/changetracker-hub-8.1.yaml). @@ -38,7 +38,7 @@ When working with the Change Tracker API, consider the following best practices: 3. **Authentication**: Store API credentials securely and never expose them in client-side code. -4. **Data Filtering**: When retrieving large datasets, use the available filtering parameters to limit the amount of data returned. +4. **Data Filtering**: When retrieving large datasets, use the available filtering parameters to limit how much data the endpoint returns. 5. **Pagination**: For endpoints that return large collections, implement pagination to improve performance. diff --git a/docs/changetracker/8.1/integration/api/reference/index.md b/docs/changetracker/8.1/integration/api/reference/index.md new file mode 100644 index 0000000000..14b5d039d5 --- /dev/null +++ b/docs/changetracker/8.1/integration/api/reference/index.md @@ -0,0 +1,43 @@ +--- +title: "API Reference" +description: "Introduction to the Change Tracker Hub API Reference" +sidebar_position: 1 +--- + +The Change Tracker Hub API Reference documents every REST API endpoint that the Change Tracker Hub (the central management server) exposes. The Hub generates this reference directly from its OpenAPI 3.0 specification, which reflects the API for version 8.1. + +Use this reference to: + +- Explore available endpoints and their parameters +- Review request and response schemas +- Try endpoints interactively from your browser +- Download the OpenAPI spec for use in external tools + +## How this reference is organized + +The reference groups endpoints by tag (functional area). Each endpoint page includes the HTTP method and path, parameters (required and optional), request body schema, response schemas, and a list of possible status codes. + +## Authentication + +All endpoints require authentication. Before you can send requests — whether from the interactive explorer or your own code — you need a valid session. + +See [Authentication](/docs/changetracker/8.1/integration/api/authentication.md) for a PowerShell example that authenticates to the Hub and stores the session for subsequent calls. + +## Use the interactive explorer + +Each endpoint page includes a built-in API explorer. To use it: + +1. Obtain a session token by calling `POST /auth/credentials`. See [Authentication](/docs/changetracker/8.1/integration/api/authentication.md). +2. Click **Authorize** at the top of any endpoint page. +3. Enter your token in the **Bearer** field and click **Authorize**. +4. Open an endpoint, fill in the required parameters, and click **Send API Request**. + +:::tip +Before sending a request, you can edit the server URL directly in the explorer to point to your Change Tracker Hub instance. +::: + +## Download the OpenAPI specification + +You can download the raw OpenAPI 3.0 spec (YAML) and import it into API clients, code generators, or testing tools. + +[Download the OpenAPI spec](/openapi/changetracker-hub-8.1.yaml) diff --git a/docs/kb/accessanalyzer/installation-and-upgrades/access-analyzer-upgrade-faq.md b/docs/kb/accessanalyzer/installation-and-upgrades/access-analyzer-upgrade-faq.md index 1dda3d4356..b4075bf1d5 100644 --- a/docs/kb/accessanalyzer/installation-and-upgrades/access-analyzer-upgrade-faq.md +++ b/docs/kb/accessanalyzer/installation-and-upgrades/access-analyzer-upgrade-faq.md @@ -14,15 +14,16 @@ keywords: - database recovery mode - Netwrix products: - - access-analyzer -sidebar_label: Access Analyzer Upgrade FAQ + - accessanalyzer +sidebar_label: Upgrade and Migration FAQ tags: + - kb - installation-and-upgrades -title: "Access Analyzer Upgrade FAQ" +title: "Upgrade and Migration FAQ" knowledge_article_id: kA0Qk0000001hHRKAY --- -# Access Analyzer Upgrade FAQ +# Upgrade and Migration FAQ ## Questions @@ -32,10 +33,10 @@ knowledge_article_id: kA0Qk0000001hHRKAY ## Answers -1. We do not recommend performing an in-place upgrade for the Netwrix Application server's Operation System. It has been known to cause issues. We suggest spinning up a new server with the new OS and migrating Netwrix to the new server. -2. We recommend migrating Access Analyzer to the new server first. Then, after confirming everything is working as expected on the new server, upgrade to the latest version. -3. You should keep all of Netwrix's databases on simple recovery mode. For mor information, please see the following article: SQL Server Requirements. +1. Netwrix does not recommend in-place Operating System upgrades for the Access Analyzer host server. In-place upgrades have caused issues. Instead, deploy a new server with the target OS and migrate Access Analyzer to it. +2. Netwrix recommends migrating Access Analyzer to the new server first. After confirming everything is working as expected on the new server, upgrade to the latest version. +3. Keep all Netwrix databases in Simple Recovery Mode. For more information, see [SQL Server Requirements](pathname:///docs/accessanalyzer/12_0/requirements/overview#sql-server-requirements). ## Related Articles -- SQL Server Requirements +- [SQL Server Requirements](pathname:///docs/accessanalyzer/12_0/requirements/overview#sql-server-requirements) diff --git a/kb_style_guide.md b/kb_style_guide.md index b05224b68a..759cc27637 100644 --- a/kb_style_guide.md +++ b/kb_style_guide.md @@ -319,30 +319,31 @@ Format external links with a middot and arrow after the company name: Use the following names in KB articles. Do not use abbreviations such as "NA" for Netwrix Auditor. +Product IDs in the `products` field are used for Algolia search metadata. If a product ID below seems outdated, verify against `src/config/products.js` before using it — that file is the authoritative source for product IDs in this repo. + | Full Product Name | Short Product Name | Product ID (for `products` field) | |---|---|---| -| Netwrix Activity Monitor | Activity Monitor | `activity_monitor` | -| Netwrix 1Secure | 1Secure | `onesecure` | +| Netwrix 1Secure | 1Secure | `1secure` | +| Netwrix Access Analyzer | Access Analyzer | `accessanalyzer` | +| Netwrix Access Information Center | Access Information Center | `accessinformationcenter` | +| Netwrix Activity Monitor | Activity Monitor | `activitymonitor` | | Netwrix Auditor | Auditor | `auditor` | -| Netwrix Change Tracker | Change Tracker | `change_tracker` | -| Netwrix Data Classification | Data Classification | `data_classification` | -| Netwrix Directory Manager | Directory Manager | `groupid` | -| Netwrix Endpoint Protector | Endpoint Protector | `endpoint_protector` | -| Netwrix Log Tracker | Log Tracker | `log_tracker` | -| Netwrix Password Policy Enforcer | Password Policy Enforcer | `password_policy_enforcer` | -| Netwrix Password Reset | Password Reset | `password_reset_manager` | -| Netwrix Password Secure | Password Secure | `password_secure` | +| Netwrix Change Tracker | Change Tracker | `changetracker` | +| Netwrix Data Classification | Data Classification | `dataclassification` | +| Netwrix Directory Manager | Directory Manager | `directorymanager` | | Netwrix Endpoint Policy Manager | Endpoint Policy Manager | `policypak` | -| Netwrix Endpoint Privilege Manager | Endpoint Privilege Manager | `privilege_secure_endpoints` | -| Netwrix Privilege Secure for Access Management | Privilege Secure for Access Management | `privilege_secure` | -| Netwrix Privilege Secure for Discovery | Privilege Secure for Discovery | `privilege_secure_discovery` | -| Netwrix Recovery for Active Directory | Recovery for Active Directory | `recovery_ad` | -| Netwrix Access Analyzer | Access Analyzer | `enterprise_auditor` | -| Netwrix Threat Manager | Threat Manager | `threat_manager` | -| Netwrix Threat Prevention | Threat Prevention | `threat_prevention` | -| Netwrix Platform Governance for NetSuite | Platform Governance for NetSuite | `strongpoint_netsuite` | -| Netwrix Platform Governance for Salesforce | Platform Governance for Salesforce | `strongpoint_salesforce` | -| Netwrix Identity Manager | Identity Manager | `usercube` | +| Netwrix Endpoint Protector | Endpoint Protector | `endpointprotector` | +| Netwrix Identity Manager | Identity Manager | `identitymanager` | +| Netwrix Password Policy Enforcer | Password Policy Enforcer | `passwordpolicyenforcer` | +| Netwrix Password Reset | Password Reset | `passwordreset` | +| Netwrix Password Secure | Password Secure | `passwordsecure` | +| Netwrix Platform Governance for NetSuite | Platform Governance for NetSuite | `platgovnetsuite` | +| Netwrix Platform Governance for Salesforce | Platform Governance for Salesforce | `platgovsalesforce` | +| Netwrix Privilege Secure for Access Management | Privilege Secure for Access Management | `privilegesecure` | +| Netwrix Privilege Secure for Discovery | Privilege Secure for Discovery | `privilegesecurediscovery` | +| Netwrix Recovery for Active Directory | Recovery for Active Directory | `recoveryforactivedirectory` | +| Netwrix Threat Manager | Threat Manager | `threatmanager` | +| Netwrix Threat Prevention | Threat Prevention | `threatprevention` | | Netwrix Vulnerability Tracker by Greenbone | Vulnerability Tracker | `vulnerability_tracker_gb` | ### When to use long vs. short product names diff --git a/src/theme/ApiExplorer/Server/index.tsx b/src/theme/ApiExplorer/Server/index.tsx new file mode 100644 index 0000000000..0a7c078d0a --- /dev/null +++ b/src/theme/ApiExplorer/Server/index.tsx @@ -0,0 +1,180 @@ +import React, { useState } from "react"; + +import { translate } from "@docusaurus/Translate"; +import FloatingButton from "@theme/ApiExplorer/FloatingButton"; +import FormItem from "@theme/ApiExplorer/FormItem"; +import FormSelect from "@theme/ApiExplorer/FormSelect"; +import FormTextInput from "@theme/ApiExplorer/FormTextInput"; +import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; +import { OPENAPI_SERVER } from "@theme/translationIds"; + +import { setServer, setServerVariable } from "@theme/ApiExplorer/Server/slice"; + +interface ServerProps { + labelId?: string; +} + +function toLabel(key: string) { + return key.replace(/([A-Z])/g, " $1").replace(/^[a-z]/, (c) => c.toUpperCase()); +} + +function Server({ labelId }: ServerProps) { + const [isEditing, setIsEditing] = useState(false); + const value = useTypedSelector((state: any) => state.server.value); + const options = useTypedSelector((state: any) => state.server.options); + const dispatch = useTypedDispatch(); + + if (options.length <= 0) { + return null; + } + + if (!value) { + dispatch(setServer(JSON.stringify(options[0]))); + } + + if (value) { + const urlExists = options.find((s: any) => s.url === value.url); + if (!urlExists) { + dispatch(setServer(JSON.stringify(options[0]))); + } + } + + if (!isEditing) { + let url = ""; + if (value) { + url = value.url.replace(/\/$/, ""); + if (value.variables) { + Object.keys(value.variables).forEach((variable) => { + url = url.replace( + `{${variable}}`, + value.variables?.[variable].default ?? "" + ); + }); + } + } + return ( + setIsEditing(true)} + label={translate({ id: OPENAPI_SERVER.EDIT_BUTTON, message: "Edit" })} + > + + + {url} + + + + ); + } + + return ( +
+
+ {options.length > 1 && ( + + s.url)} + onChange={(e: React.ChangeEvent) => { + dispatch( + setServer( + JSON.stringify( + options.filter((s: any) => s.url === e.target.value)[0] + ) + ) + ); + }} + value={value?.url} + /> + + )} + {value?.variables && + Object.keys(value.variables).map((key) => { + if (value.variables?.[key].enum !== undefined) { + return ( + + ) => { + dispatch( + setServerVariable( + JSON.stringify({ key, value: e.target.value }) + ) + ); + }} + value={value?.variables[key].default} + /> + + ); + } + return ( + + ) => { + dispatch( + setServerVariable( + JSON.stringify({ key, value: e.target.value }) + ) + ); + }} + value={value?.variables?.[key].default} + /> + + ); + })} +
+ {value?.variables ? ( + + ) : ( + + )} + +
+
+
+ ); +} + +export default Server; diff --git a/static/openapi/changetracker-hub-8.1.yaml b/static/openapi/changetracker-hub-8.1.yaml index 5734bcbee5..de189bd7a7 100644 --- a/static/openapi/changetracker-hub-8.1.yaml +++ b/static/openapi/changetracker-hub-8.1.yaml @@ -3,7 +3,12 @@ info: title: ChangeTracker Hub version: '8.1' servers: - - url: https://localhost:5001/api + - url: '{serverUrl}' + description: Your Change Tracker server URL + variables: + serverUrl: + default: https://localhost:5001/api + description: 'Full base URL including /api (e.g., https://your-server/api)' paths: '/command/tasks/poll/{AgentId}': get: