openapi: 3.0.3
servers:
  - description: Rudder server
    url: https://rudder.example.local/rudder/api/latest
info:
  contact:
    email: dev@rudder.io
    name: Rudder developers
    url: https://www.rudder.io
  description: |
    Download OpenAPI specification: [openapi.yml](openapi.yml)

    # Introduction

    Rudder exposes a REST API, enabling the user to interact with Rudder without using the webapp, for example in scripts or cronjobs.

    ## Versioning

    Each time the API is extended with new features (new functions, new parameters, new responses, ...), it will be assigned a new version number. This will allow you
    to keep your existing scripts (based on previous behavior). Versions will always be integers (no 2.1 or 3.3, just 2, 3, 4, ...) or `latest`.

    You can change the version of the API used by setting it either within the url or in a header:

    * the URL: each URL is prefixed by its version id, like `/api/version/function`.

    ```bash
    # Version 10
    curl -X GET -H "X-API-Token: yourToken" https://rudder.example.com/rudder/api/10/rules
    # Latest
    curl -X GET -H "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/rules
    # Wrong (not an integer) => 404 not found
    curl -X GET -H "X-API-Token: yourToken" https://rudder.example.com/rudder/api/3.14/rules
    ```

    * the HTTP headers. You can add the **X-API-Version** header to your request. The value needs to be an integer or `latest`.

    ```bash
    # Version 10
    curl -X GET -H "X-API-Token: yourToken" -H "X-API-Version: 10" https://rudder.example.com/rudder/api/rules
    # Wrong => Error response indicating which versions are available
    curl -X GET -H "X-API-Token: yourToken" -H "X-API-Version: 3.14" https://rudder.example.com/rudder/api/rules
    ```

    In the future, we may declare some versions as deprecated, in order to remove them in a later version of Rudder, but we will never remove any versions without warning, or without a safe
    period of time to allow migration from previous versions.


    <h4>Existing versions</h4>
    <table>
      <thead>
        <tr>
          <th style="width: 20%">Version</th>
          <th style="width: 20%">Rudder versions it appeared in</th>
          <th style="width: 70%">Description</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="code">1</td>
          <td class="code">Never released (for internal use only)</td>
          <td>Experimental version</td>
        </tr>
        <tr>
          <td class="code">2 to 10 (deprecated)</td>
          <td class="code">4.3 and before</td>
          <td>These versions provided the core set of API features for rules, directives, nodes global parameters, change requests and compliance, rudder settings and system API</td>
        </tr>
        <tr>
          <td class="code">11</td>
          <td class="code">5.0</td>
          <td>New system API (replacing old localhost v1 api): status, maintenance operations and server behavior</td>
        </tr>
        <tr>
          <td class="code">12</td>
          <td class="code">6.0 and 6.1</td>
          <td>Node key management</td>
        </tr>
        <tr>
          <td class="code">13</td>
          <td class="code">6.2</td>
          <td><ul>
            <li>Node status endpoint</li>
            <li>System health check</li>
            <li>System maintenance job to purge software [that endpoint was back-ported in 6.1]</li>
          </ul></td>
        </tr>
        <tr>
          <td class="code">14</td>
          <td class="code">7.0</td>
          <td><ul>
            <li>Secret management</li>
            <li>Directive tree</li>
            <li>Improve techniques management</li>
            <li>Demote a relay</li>
          </ul></td>
        </tr>
        <tr>
          <td class="code">15</td>
          <td class="code">7.1</td>
          <td><ul>
            <li>Package updates in nodes</li>
          </ul></td>
        </tr>
        <tr>
          <td class="code">16</td>
          <td class="code">7.2</td>
          <td><ul>
            <li>Create node API included from plugin</li>
            <li>Configuration archive import/export</li>
          </ul></td>
        </tr>
      </tbody>
    </table>


    ## Response format

    All responses from the API are in the JSON format.

    ```json
    {
      "action": "The name of the called function",
      "id": "The ID of the element you want, if relevant",
      "result": "The result of your action: success or error",
      "data": "Only present if this is a success and depends on the function, it's usually a JSON object",
      "errorDetails": "Only present if this is an error, it contains the error message"
    }
    ```


    * __Success__ responses are sent with the 200 HTTP (Success) code

    * __Error__ responses are sent with a HTTP error code (mostly 5xx...)


    ## HTTP method

    Rudder's REST API is based on the usage of [HTTP methods](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html). We use them to indicate what action will be done by the request. Currently, we use four of them:


    * **GET**: search or retrieve information (get rule details, get a group, ...)

    * **PUT**: add new objects (create a directive, clone a Rule, ...)

    * **DELETE**: remove objects (delete a node, delete a parameter, ...)

    * **POST**: update existing objects (update a directive, reload a group, ...)


    ## Parameters

    ### General parameters

    Some parameters are available for almost all API functions. They will be described in this section.
    They must be part of the query and can't be submitted in a JSON form.

    #### Available for all requests

    <table>
      <thead>
        <tr>
          <th style="width: 30%">Field</th>
          <th style="width: 10%">Type</th>
          <th style="width: 70%">Description</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="code">prettify</td>
          <td><b>boolean</b><br><i>optional</i></td>
          <td>
            Determine if the answer should be prettified (human friendly) or not. We recommend using this for debugging purposes, but not for general script usage as this does add some unnecessary load on the server side.
            <p class="default-value">Default value: <code>false</code></p>
          </td>
        </tr>
      </tbody>
    </table>


    #### Available for modification requests (PUT/POST/DELETE)

    <table>
      <thead>
        <tr>
          <th style="width: 25%">Field</th>
          <th style="width: 12%">Type</th>
          <th style="width: 70%">Description</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="code">reason</td>
          <td><b>string</b><br><i>optional</i> or <i>required</i></td>
          <td>
            Set a message to explain the change. If you set the reason messages to be mandatory in the web interface, failing to supply this value will lead to an error.
            <p class="default-value">Default value: <code>""</code></p>
          </td>
        </tr>
        <tr>
          <td class="code">changeRequestName</td>
          <td><b>string</b><br><i>optional</i></td>
          <td>
            Set the change request name, is used only if workflows are enabled. The default value depends on the function called
            <p class="default-value">Default value: <code>A default string for each function</code></p>
          </td>
        </tr>
        <tr>
          <td class="code">changeRequestDescription</td>
          <td><b>string</b><br><i>optional</i></td>
          <td>
            Set the change request description, is used only if workflows are enabled.
            <p class="default-value">Default value: <code>""</code></p>
          </td>
        </tr>
      </tbody>
    </table>


    ### Passing parameters

    Parameters to the API can be sent:

    * As part of the URL for resource identification

    * As data for POST/PUT requests

      * Directly in JSON format

      * As request arguments

    #### As part of the URL for resource identification

    Parameters in URLs are used to indicate which resource you want to interact with. The function will not work if this resource is missing.

    ```bash
    # Get the Rule of ID "id"
    curl -H "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/rules/id
    ```



    CAUTION: To avoid surprising behavior, do not put a '/' at the end of an URL: it would be interpreted as '/[empty string parameter]' and redirected to '/index', likely not what you wanted to do.


    #### Sending data for POST/PUT requests

    ##### Directly in JSON format

    JSON format is the preferred way to interact with Rudder API for creating or updating resources.
    You'll also have to set the *Content-Type* header to **application/json** (without it the JSON content would be ignored).
    In a `curl` `POST` request, that header can be provided with the `-H` parameter:

    ```bash
    curl -X POST -H "Content-Type: application/json" ...
    ```

    The supplied file must contain a valid JSON: strings need quotes, booleans and integers don't, etc.

    The (human readable) format is:

    ```json
    {
      "key1": "value1",
      "key2": false,
      "key3": 42
    }
    ```


    Here is an example with inlined data:

    ```bash
    # Update the Rule 'id' with a new name, disabled, and setting it one directive
    curl -X POST -H "X-API-Token: yourToken" -H  "Content-Type: application/json"
    https://rudder.example.com/rudder/api/rules/latest/{id}
      -d '{ "displayName": "new name", "enabled": false, "directives": "directiveId"}'
    ```

    You can also pass a supply the JSON in a file:

    ```bash
    # Update the Rule 'id' with a new name, disabled, and setting it one directive
    curl -X POST -H "X-API-Token: yourToken" -H "Content-Type: application/json" https://rudder.example.com/rudder/api/rules/latest/{id} -d @jsonParam
    ```

    Note that the general parameters view in the previous chapter cannot be passed in a JSON, and you will need to pass them a URL parameters if you want them to be taken into account (you can't mix JSON and request parameters):

    ```bash
    # Update the Rule 'id' with a new name, disabled, and setting it one directive with reason message "Reason used"
    curl -X POST -H "X-API-Token: yourToken" -H "Content-Type: application/json" "https://rudder.example.com/rudder/api/rules/latest/{id}?reason=Reason used" -d @jsonParam -d "reason=Reason ignored"
    ```

    ##### Request parameters

    In some cases, when you have little, simple data to update, JSON can feel bloated. In such cases, you can use
    request parameters. You will need to pass one parameter for each data you want to change.

    Parameters follow the following schema:

    ```
    key=value
    ```

    You can pass parameters by two means:

    * As query parameters: At the end of your url, put a **?** then your first parameter and then a **&** before next parameters. In that case, parameters need to be https://en.wikipedia.org/wiki/Percent-encoding[URL encoded]

    ```bash
    # Update the Rule 'id' with a new name, disabled, and setting it one directive
    curl -X POST -H "X-API-Token: yourToken"  https://rudder.example.com/rudder/api/rules/latest/{id}?"displayName=my new name"&"enabled=false"&"directives=aDirectiveId"
    ```

    * As request data: You can pass those parameters in the request data, they won't figure in the URL, making it lighter to read, You can pass a file that contains data.

    ```bash
    # Update the Rule 'id' with a new name, disabled, and setting it one directive (in file directive-info.json)
    curl -X POST -H "X-API-Token: yourToken"
    https://rudder.example.com/rudder/api/rules/latest/{id} -d "displayName=my new name" -d "enabled=false" -d @directive-info.json
    ```
  license:
    name: CC-BY-SA 2.0
    url: https://spdx.org/licenses/CC-BY-SA-2.0.html
  title: Rudder API
  version: "17"
  x-apisguru-categories:
    - developer_tools
  x-logo:
    url: https://www.rudder.io/wp-content/uploads/2019/11/color_logo_horizontal_dark_bg-1024x176.png
  x-origin:
    - format: openapi
      url: https://docs.rudder.io/api/openapi.yml
      version: "3.0"
  x-providerName: rudder.example.local
externalDocs:
  description: Learn more about Rudder.
  url: https://docs.rudder.io
security:
  - API-Tokens: []
tags:
  - description: Information about API endpoints and versions
    name: API Info
  - description: Is alive check
    name: Status
  - description: Access compliance data
    name: Compliance
  - description: Rules management
    name: Rules
  - description: Directives management
    name: Directives
  - description: Techniques management
    name: Techniques
  - description: Groups management
    name: Groups
  - description: Nodes management
    name: Nodes
  - description: Inventory processing service
    name: Inventories
  - description: Global parameters
    name: Parameters
  - description: Campaigns
    name: Campaigns
  - description: Import and export zip of policies
    name: Archives
  - description: Server configuration
    name: Settings
  - description: Internal components and administration
    name: System
  - description: |-
      **Requires that the `changes-validation` plugin is installed on the server.**

      Manage change requests.
    name: 🧩 Change requests
  - description: |-
      **Requires that the `cve` plugin is installed on the server.**

      Manage CVE plugins data and configuration.
    name: 🧩 CVE
  - description: |-
      **Requires that the `system update` plugin is installed on the server.**

      Fetch System update campaigns results.
    name: 🧩 System update campaigns
  - description: |-
      **Requires that the `datasources` plugin is installed on the server.**

      Data sources plugin configuration.
    name: 🧩 Data sources
  - description: |-
      **Requires that the `scale-out-relay` plugin is installed on the server.**

      Manage relays.
    name: 🧩 Scale out Relay
  - description: |-
      **Requires that the `user-management` plugin is installed on the server.**

      Manage users settings and configuration file.
    name: 🧩 User Management
  - description: |-
      **Requires that the `branding` plugin is installed on the server.**

      Manage web interface customization.
    name: 🧩 Branding
  - description: |-
      **Requires that the `secret-management` plugin is installed on the server.**

      Manage secrets variables.
    name: 🧩 Secret Management
paths:
  /api/changeRequests:
    get:
      description: List all change requests
      operationId: listChangeRequests
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listChangeRequests
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          $ref: "#/components/schemas/change-request"
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Change requests information
      summary: List all change requests
      tags:
        - 🧩 Change requests
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/changeRequests --data "status=open"
  /archives/export:
    get:
      description: Get a ZIP archive or rules, directives, techniques and groups with optionally their dependencies
      operationId: export
      parameters:
        - description: IDs (optionally with revision, '+' need to be escaped as '%2B') of rules to include
          examples:
            multipleIds:
              summary: Example of multiple IDs, some with revisions
              value:
                - a0573b59-e5bd-441b-9031-f307aa21a61e
                - 4cba6eee-3a43-4e17-a608-a4941b6d984f%2B35177d0823791a374de9e16a6ab27e6466fbc8c2
            oneId:
              summary: Example of a single ID
              value:
                - a0573b59-e5bd-441b-9031-f307aa21a61e
          explode: false
          in: query
          name: rules
          schema:
            items:
              type: string
            type: array
          style: form
        - description: IDs (optionally with revision, '+' need to be escaped as '%2B') of directives to include
          examples:
            multipleIds:
              summary: Example of multiple IDs, some with revisions
              value:
                - a0573b59-e5bd-441b-9031-f307aa21a61e
                - 4cba6eee-3a43-4e17-a608-a4941b6d984f%2B35177d0823791a374de9e16a6ab27e6466fbc8c2
            oneId:
              summary: Example of a single ID
              value:
                - a0573b59-e5bd-441b-9031-f307aa21a61e
          explode: false
          in: query
          name: directives
          schema:
            items:
              type: string
            type: array
          style: form
        - description: IDs, ie technique name/technique version (optionally with revision, '+' need to be escaped as '%2B') of techniques to include
          examples:
            multipleIds:
              summary: Example of multiple IDs, some with revisions
              value:
                - userManagement/6.3
                - fileContent/3.0%2B35177d0823791a374de9e16a6ab27e6466fbc8c2
            oneId:
              summary: Example of a single ID
              value:
                - fileContent/3.0
          explode: false
          in: query
          name: techniques
          schema:
            items:
              type: string
            type: array
          style: form
        - description: IDs (optionally with revision, '+' need to be escaped as '%2B') of groups to include
          examples:
            multipleIds:
              summary: Example of multiple IDs, some with revisions
              value:
                - a0573b59-e5bd-441b-9031-f307aa21a61e
                - 4cba6eee-3a43-4e17-a608-a4941b6d984f%2B35177d0823791a374de9e16a6ab27e6466fbc8c2
            oneId:
              summary: Example of a single ID
              value:
                - a0573b59-e5bd-441b-9031-f307aa21a61e
          explode: false
          in: query
          name: groups
          schema:
            items:
              type: string
            type: array
          style: form
        - description: Scope of dependencies to include in archive, where rule as directives and groups dependencies, directives have techniques dependencies, and techniques and groups don't have dependencies. 'none' means no dependencies will be include, 'all' means that the whole tree will,  'directives' and 'groups' means to include them specifically, 'techniques' means to include both directives and techniques.
          examples:
            directivesAndGroups:
              summary: Include directives and groups, but no techniques
              value:
                - directives
                - groups
            none:
              summary: Do not include dependencies
              value:
                - none
          explode: false
          in: query
          name: include
          schema:
            items:
              enum:
                - all (default)
                - none
                - directives
                - techniques
                - groups
              type: string
            type: array
          style: form
      responses:
        "200":
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
          description: A zip archive with the queried content.
      summary: Get a ZIP archive of the requested items and their dependencies
      tags:
        - Archives
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/archives/export?rules=8e522a3e-aa45-43cd-bf33-4e8d04a566f6&include=directives,groups'
  /archives/import:
    post:
      description: Import a ZIP archive of techniques, directives, groups and rules in a saved in a normalized format into Rudder
      operationId: import
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                archive:
                  description: The ZIP archive file containing policies in a conventional layout and serialization format
                  format: binary
                  type: string
                merge:
                  description: Optional merge algo of the import. Default `override-all` means what is in the archive is the new reality. `keep-rule-groups` will keep existing target definition for existing rules (ignore archive value).
                  enum:
                    - override-all
                    - keep-rule-groups
                  type: string
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - import
                    type: string
                  data:
                    description: Details about archive import process
                    properties:
                      archiveImported:
                        type: boolean
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Archive imported
      summary: Import a ZIP archive of policies into Rudder
      tags:
        - Archives
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" -X POST https://rudder.example.com/rudder/api/latest/archives/import --form "archive=@my-archive-file.zip" --form "merge=keep-rule-groups"'
  /branding:
    get:
      description: Get all web interface customization parameters
      operationId: getBrandingConf
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getBrandingConf
                    type: string
                  data:
                    properties:
                      branding:
                        $ref: "#/components/schemas/branding-conf"
                    required:
                      - branding
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Branding configuration
      summary: Get branding configuration
      tags:
        - 🧩 Branding
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/branding
    post:
      description: change color, logo, label etc.
      operationId: updateBRandingConf
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/branding-conf"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateBRandingConf
                    type: string
                  data:
                    properties:
                      branding:
                        $ref: "#/components/schemas/branding-conf"
                    required:
                      - branding
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Updated
      summary: Update web interface customization
      tags:
        - 🧩 Branding
      x-codeSamples:
        - lang: curl
          source: |+
            update.json:

            {
            	"displayBar":true,
            	"displayLabel":false,
            	"labelText":"Production",
            	"barColor":{
            		"red":1,
            		"blue":1,
            		"green":1,
            		"alpha":1
            	},
            	"labelColor":{
            		"red":0,
            		"blue":0,
            		"green":0,
            		"alpha":1
            	},
            	"wideLogo":{
            		"enable":true
            	},
            	"smallLogo":{
            		"enable":true
            	},
            	"displayBarLogin":true,
            	"displayMotd":true,
            	"motd":"Welcome, please sign in:"
            }

            curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/branding --header "Content-type: application/json" --data @update.json

  /branding/reload:
    post:
      description: Reload the configuration from file
      operationId: reloadBrandingConf
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getBrandingConf
                    type: string
                  data:
                    properties:
                      branding:
                        $ref: "#/components/schemas/branding-conf"
                    required:
                      - branding
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Branding configuration
      summary: Reload branding file
      tags:
        - 🧩 Branding
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/branding/reload
  /campaigns:
    get:
      description: Get all campaigns details
      operationId: allCampaigns
      parameters:
        - $ref: "#/components/parameters/campaign-type"
        - $ref: "#/components/parameters/campaign-status"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - allCampaigns
                    type: string
                  data:
                    properties:
                      campaigns:
                        items:
                          $ref: "#/components/schemas/campaign-details"
                        type: array
                    required:
                      - campaigns
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign details result
      summary: Get all campaigns details
      tags:
        - Campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/campaigns'
    post:
      description: Save a campaign details
      operationId: saveCampaign
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/campaign-details"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - saveCampaign
                    type: string
                  data:
                    properties:
                      campaigns:
                        items:
                          $ref: "#/components/schemas/campaign-details"
                        type: array
                    required:
                      - campaigns
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign details result
      summary: Save a campaign
      tags:
        - Campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/campaigns'
  /campaigns/events:
    get:
      description: Get all campaign events
      operationId: getAllCampaignEvents
      parameters:
        - $ref: "#/components/parameters/campaign-type"
        - $ref: "#/components/parameters/campaign-event-status"
        - $ref: "#/components/parameters/campaign-id"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/offset"
        - $ref: "#/components/parameters/before"
        - $ref: "#/components/parameters/after"
        - $ref: "#/components/parameters/order"
        - $ref: "#/components/parameters/asc"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getCampaignEvent
                    type: string
                  data:
                    properties:
                      campaignEvents:
                        items:
                          $ref: "#/components/schemas/campaign-event-details"
                        type: array
                    required:
                      - campaignEvents
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign event details result
      summary: Get all campaign events
      tags:
        - Campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/campaigns/0076a379-f32d-4732-9e91-33ab219d8fde/events'
  "/campaigns/events/{id}":
    delete:
      description: Delete a campaign event details
      operationId: deleteCampaignEvent
      parameters:
        - $ref: "#/components/parameters/campaign-event-id-path"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteCampaignEvent
                    type: string
                  data:
                    properties:
                      campaignEvents:
                        items:
                          $ref: "#/components/schemas/campaign-event-details"
                        type: array
                    required:
                      - campaignEvents
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign event details result
      summary: Delete a campaign event details
      tags:
        - Campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request DELETE 'https://rudder.example.com/rudder/api/latest/campaigns/events/0076a379-f32d-4732-9e91-33ab219d8fde'
    get:
      description: Get a campaign event details
      operationId: getCampaignEvent
      parameters:
        - $ref: "#/components/parameters/campaign-event-id-path"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getCampaignEvent
                    type: string
                  data:
                    properties:
                      campaignEvents:
                        items:
                          $ref: "#/components/schemas/campaign-event-details"
                        type: array
                    required:
                      - campaignEvents
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign details result
      summary: Get a campaign event details
      tags:
        - Campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/campaigns/events/0076a379-f32d-4732-9e91-33ab219d8fde'
    post:
      description: Update an existing event
      operationId: saveCampaignEvent
      parameters:
        - $ref: "#/components/parameters/campaign-event-id-path"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - saveCampaignEvent
                    type: string
                  data:
                    properties:
                      campaignEvents:
                        items:
                          $ref: "#/components/schemas/campaign-event-details"
                        type: array
                    required:
                      - campaignEvents
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign event details result
      summary: Update an existing event
      tags:
        - Campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/campaigns/events/0076a379-f32d-4732-9e91-33ab219d8fde'
  "/campaigns/{id}":
    delete:
      description: Delete a campaign
      operationId: deleteCampaign
      parameters:
        - $ref: "#/components/parameters/campaign-id-path"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteCampaign
                    type: string
                  data:
                    properties:
                      campaigns:
                        items:
                          $ref: "#/components/schemas/campaign-details"
                        type: array
                    required:
                      - campaigns
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign details result
      summary: Delete a campaign
      tags:
        - Campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request DELETE 'https://rudder.example.com/rudder/api/latest/campaigns/0076a379-f32d-4732-9e91-33ab219d8fde'
    get:
      description: Get a campaign details
      operationId: getCampaign
      parameters:
        - $ref: "#/components/parameters/campaign-id-path"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getCampaign
                    type: string
                  data:
                    properties:
                      campaigns:
                        items:
                          $ref: "#/components/schemas/campaign-details"
                        type: array
                    required:
                      - campaigns
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign details result
      summary: Get a campaign details
      tags:
        - Campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/campaigns/0076a379-f32d-4732-9e91-33ab219d8fde'
  "/campaigns/{id}/events":
    get:
      description: Get campaign events for a campaign
      operationId: getEventsCampaign
      parameters:
        - $ref: "#/components/parameters/campaign-id-path"
        - $ref: "#/components/parameters/campaign-type"
        - $ref: "#/components/parameters/campaign-event-status"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/offset"
        - $ref: "#/components/parameters/before"
        - $ref: "#/components/parameters/after"
        - $ref: "#/components/parameters/order"
        - $ref: "#/components/parameters/asc"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getEventsCampaign
                    type: string
                  data:
                    properties:
                      campaignEvents:
                        items:
                          $ref: "#/components/schemas/campaign-event-details"
                        type: array
                    required:
                      - campaignEvents
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign details result
      summary: Get campaign events for a campaign
      tags:
        - Campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/campaigns/0076a379-f32d-4732-9e91-33ab219d8fde/events'
  "/campaigns/{id}/schedule":
    post:
      description: Schedule a campaign event for a campaign
      operationId: scheduleCampaign
      parameters:
        - $ref: "#/components/parameters/campaign-id-path"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - scheduleCampaign
                    type: string
                  data:
                    properties:
                      campaignEvents:
                        items:
                          $ref: "#/components/schemas/campaign-event-details"
                        type: array
                    required:
                      - campaignEvents
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign events details result
      summary: Schedule a campaign event for a campaign
      tags:
        - Campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/campaigns/0076a379-f32d-4732-9e91-33ab219d8fde/schedule'
  "/changeRequests/{changeRequestId}":
    delete:
      description: Refuse a change request
      operationId: declineChangeRequest
      parameters:
        - $ref: "#/components/parameters/change-request-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - declineChangeRequest
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          $ref: "#/components/schemas/change-request"
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Change requests information
      summary: Decline a request details
      tags:
        - 🧩 Change requests
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request DELETE https://rudder.example.com/rudder/api/latest/changeRequests/43'
    get:
      description: Get a change request details
      operationId: changeRequestDetails
      parameters:
        - $ref: "#/components/parameters/change-request-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - changeRequestDetails
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          $ref: "#/components/schemas/change-request"
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Change requests information
      summary: Get a change request details
      tags:
        - 🧩 Change requests
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/changeRequests --data "status=open"
    post:
      description: Update a change request
      operationId: updateChangeRequest
      parameters:
        - $ref: "#/components/parameters/change-request-id"
      requestBody:
        content:
          application/json:
            schema:
              properties:
                description:
                  description: Change request description
                  type: string
                name:
                  description: Change request name
                  type: string
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateChangeRequest
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          $ref: "#/components/schemas/change-request"
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Change requests information
      summary: Update a request details
      tags:
        - 🧩 Change requests
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/changeRequests/42  --data "name=new Name of change request" -d "description=add a new description"'
  "/changeRequests/{changeRequestId}/accept":
    post:
      description: Accept a change request
      operationId: acceptChangeRequest
      parameters:
        - $ref: "#/components/parameters/change-request-id"
      requestBody:
        content:
          application/json:
            schema:
              properties:
                status:
                  description: New status of the change request
                  enum:
                    - pending deployment
                    - deployed
                  example: deployed
                  type: string
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - acceptChangeRequest
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          $ref: "#/components/schemas/change-request"
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Change requests information
      summary: Accept a request details
      tags:
        - 🧩 Change requests
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/changeRequests --data "status=open"'
  /compliance:
    get:
      description: Get current global compliance of a Rudder server
      operationId: getGlobalCompliance
      parameters:
        - $ref: "#/components/parameters/compliance-percent-precision"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getGlobalCompliance
                    type: string
                  data:
                    properties:
                      globalCompliance:
                        properties:
                          compliance:
                            description: Global compliance level (`-1` when no policies are defined)
                            example: 57
                            format: integer
                            type: number
                          complianceDetails:
                            properties:
                              error:
                                example: 1.32
                                format: float
                                type: number
                              noReport:
                                example: 36.18
                                format: float
                                type: number
                              successAlreadyOK:
                                example: 48.68
                                format: float
                                type: number
                              successNotApplicable:
                                example: 5.92
                                format: float
                                type: number
                              successRepaired:
                                example: 2.63
                                format: float
                                type: number
                              unexpectedMissingComponent:
                                example: 2.63
                                format: float
                                type: number
                              unexpectedUnknownComponent:
                                example: 2.63
                                format: float
                                type: number
                            type: object
                        required:
                          - compliance
                        type: object
                    required:
                      - globalCompliance
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    example: success
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: Global compliance
      tags:
        - Compliance
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/compliance?prettify=true'"
  /compliance/directives:
    get:
      description: Get current compliance of all the nodes of a Rudder server
      operationId: getDirectivesCompliance
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getDirectiveComplianceId
                    type: string
                  data:
                    properties:
                      directivesCompliance:
                        properties:
                          compliance:
                            description: Directive compliance level
                            example: 83.34
                            format: float
                            type: number
                          complianceDetails:
                            properties:
                              error:
                                example: 1.32
                                format: float
                                type: number
                              noReport:
                                example: 7.45
                                format: float
                                type: number
                              successAlreadyOK:
                                example: 66.68
                                format: float
                                type: number
                              successNotApplicable:
                                example: 16.66
                                format: float
                                type: number
                              successRepaired:
                                example: 2.63
                                format: float
                                type: number
                              unexpectedMissingComponent:
                                example: 2.63
                                format: float
                                type: number
                              unexpectedUnknownComponent:
                                example: 2.63
                                format: float
                                type: number
                            type: object
                          id:
                            description: id of the directive
                            example: 9a1773c9-0889-40b6-be89-f6504443ac1b
                            format: uuid
                            type: string
                          mode:
                            enum:
                              - full-compliance
                              - changes-only
                              - reports-disabled
                            type: string
                          name:
                            description: Name of the directive
                            example: test directive
                            type: string
                          nodes:
                            $ref: "#/components/schemas/directive-node-compliance"
                          rules:
                            $ref: "#/components/schemas/directive-rule-compliance"
                        required:
                          - id
                          - name
                          - mode
                          - compliance
                          - complianceDetails
                          - rules
                          - nodes
                        type: object
                    required:
                      - directivesCompliance
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    example: success
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: Compliance details for all directives
      tags:
        - Compliance
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/compliance/directives'"
  "/compliance/directives/{directiveId}":
    get:
      description: Get current compliance of a directive of a Rudder server
      operationId: getDirectiveComplianceId
      parameters:
        - description: format of export
          examples:
            oneId:
              summary: CSV format for the export
              value:
                - csv
          explode: false
          in: query
          name: format
          schema:
            type: string
          style: form
        - $ref: "#/components/parameters/directive-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/compliance-directive-id"
                  - $ref: "#/components/schemas/compliance-directive-id-csv"
          description: Success
      summary: Compliance details by directive
      tags:
        - Compliance
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/compliance/directives/704afe7b-1a65-4d2e-b4c9-54f4f548c316'"
  /compliance/nodes:
    get:
      description: Get current compliance of all the nodes of a Rudder server
      operationId: getNodesCompliance
      parameters:
        - $ref: "#/components/parameters/compliance-level"
        - $ref: "#/components/parameters/compliance-percent-precision"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getNodesCompliance
                    type: string
                  data:
                    properties:
                      nodes:
                        items:
                          properties:
                            compliance:
                              description: Rule compliance level
                              example: 57.43
                              format: float
                              type: number
                            complianceDetails:
                              properties:
                                error:
                                  example: 1.32
                                  format: float
                                  type: number
                                noReport:
                                  example: 36.18
                                  format: float
                                  type: number
                                successAlreadyOK:
                                  example: 48.68
                                  format: float
                                  type: number
                                successNotApplicable:
                                  example: 5.92
                                  format: float
                                  type: number
                                successRepaired:
                                  example: 2.63
                                  format: float
                                  type: number
                                unexpectedMissingComponent:
                                  example: 2.63
                                  format: float
                                  type: number
                                unexpectedUnknownComponent:
                                  example: 2.63
                                  format: float
                                  type: number
                              type: object
                            id:
                              description: id of the node
                              example: f37f4928-fcb5-4acf-a422-d40f123a9670
                              format: uuid
                              type: string
                            mode:
                              enum:
                                - full-compliance
                                - changes-only
                                - reports-disabled
                              type: string
                          required:
                            - id
                            - mode
                            - compliance
                            - complianceDetails
                          type: object
                        type: array
                    required:
                      - nodes
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    example: success
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: Compliance details for all nodes
      tags:
        - Compliance
      x-codeSamples:
        - lang: curl
          source: |+
            # To get the compliance information of a specific node
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/compliance/nodes?level=2'

            # To get the list of nodes which have a compliance <100 for a given directive (c5881268-5612-48f2-8ef4-0ab8387fccd6) 
            curl -k -H "X-API-Token: yourToken" -X GET "https://rudder.example.com/rudder/api/latest/compliance/nodes?level=3" \
            | jq '[.data.nodes[] 
              | {
                  "nodeid":.id, 
                  "dirs": [.rules[].directives[]] 
                    | map(select(.id == "c5881268-5612-48f2-8ef4-0ab8387fccd6" and .compliance < 100)) 
                }
              ] 
            | map(select(.dirs | length != 0)) 
            | [.[] |
                {"nodeid":.nodeid, "comp":.dirs[0].complianceDetails}
              ]'

  "/compliance/nodes/{nodeId}":
    get:
      description: Get current compliance of a node of a Rudder server
      operationId: getNodeCompliance
      parameters:
        - $ref: "#/components/parameters/compliance-level"
        - $ref: "#/components/parameters/compliance-percent-precision"
        - $ref: "#/components/parameters/node-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getNodeCompliance
                    type: string
                  data:
                    properties:
                      nodes:
                        items:
                          properties:
                            compliance:
                              description: Rule compliance level
                              example: 57.43
                              format: float
                              type: number
                            complianceDetails:
                              properties:
                                error:
                                  example: 1.32
                                  format: float
                                  type: number
                                noReport:
                                  example: 36.18
                                  format: float
                                  type: number
                                successAlreadyOK:
                                  example: 48.68
                                  format: float
                                  type: number
                                successNotApplicable:
                                  example: 5.92
                                  format: float
                                  type: number
                                successRepaired:
                                  example: 2.63
                                  format: float
                                  type: number
                                unexpectedMissingComponent:
                                  example: 2.63
                                  format: float
                                  type: number
                                unexpectedUnknownComponent:
                                  example: 2.63
                                  format: float
                                  type: number
                              type: object
                            id:
                              description: id of the node
                              example: f37f4928-fcb5-4acf-a422-d40f123a9670
                              format: uuid
                              type: string
                            mode:
                              enum:
                                - full-compliance
                                - changes-only
                                - reports-disabled
                              type: string
                          required:
                            - id
                            - mode
                            - compliance
                            - complianceDetails
                          type: object
                        type: array
                    required:
                      - nodes
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    example: success
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: Compliance details by node
      tags:
        - Compliance
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/compliance/nodes/root?level=1'"
  /compliance/rules:
    get:
      description: Get current compliance of all the rules of a Rudder server
      operationId: getRulesCompliance
      parameters:
        - $ref: "#/components/parameters/compliance-level"
        - $ref: "#/components/parameters/compliance-percent-precision"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getRulesCompliance
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          properties:
                            compliance:
                              description: Rule compliance level
                              example: 57.43
                              format: float
                              type: number
                            complianceDetails:
                              properties:
                                error:
                                  example: 1.32
                                  format: float
                                  type: number
                                noReport:
                                  example: 36.18
                                  format: float
                                  type: number
                                successAlreadyOK:
                                  example: 48.68
                                  format: float
                                  type: number
                                successNotApplicable:
                                  example: 5.92
                                  format: float
                                  type: number
                                successRepaired:
                                  example: 2.63
                                  format: float
                                  type: number
                                unexpectedMissingComponent:
                                  example: 2.63
                                  format: float
                                  type: number
                                unexpectedUnknownComponent:
                                  example: 2.63
                                  format: float
                                  type: number
                              type: object
                            id:
                              description: id of the rule
                              example: f37f4928-fcb5-4acf-a422-d40f123a9670
                              format: uuid
                              type: string
                            mode:
                              enum:
                                - full-compliance
                                - changes-only
                                - reports-disabled
                              type: string
                          required:
                            - id
                            - mode
                            - compliance
                            - complianceDetails
                          type: object
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    example: success
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: Compliance details for all rules
      tags:
        - Compliance
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/compliance/rules?level=2'"
  "/compliance/rules/{ruleId}":
    get:
      description: Get current compliance of a rule of a Rudder server
      operationId: getRuleCompliance
      parameters:
        - $ref: "#/components/parameters/compliance-level"
        - $ref: "#/components/parameters/compliance-percent-precision"
        - $ref: "#/components/parameters/rule-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getRuleCompliance
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          properties:
                            compliance:
                              description: Rule compliance level
                              example: 57.43
                              format: float
                              type: number
                            complianceDetails:
                              properties:
                                error:
                                  example: 1.32
                                  format: float
                                  type: number
                                noReport:
                                  example: 36.18
                                  format: float
                                  type: number
                                successAlreadyOK:
                                  example: 48.68
                                  format: float
                                  type: number
                                successNotApplicable:
                                  example: 5.92
                                  format: float
                                  type: number
                                successRepaired:
                                  example: 2.63
                                  format: float
                                  type: number
                                unexpectedMissingComponent:
                                  example: 2.63
                                  format: float
                                  type: number
                                unexpectedUnknownComponent:
                                  example: 2.63
                                  format: float
                                  type: number
                              type: object
                            id:
                              description: id of the rule
                              example: f37f4928-fcb5-4acf-a422-d40f123a9670
                              format: uuid
                              type: string
                            mode:
                              enum:
                                - full-compliance
                                - changes-only
                                - reports-disabled
                              type: string
                          required:
                            - id
                            - mode
                            - compliance
                            - complianceDetails
                          type: object
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    example: success
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: Compliance details by rule
      tags:
        - Compliance
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/compliance/rules?level=2'"
  /cve:
    get:
      description: Get all CVE details
      operationId: getAllCve
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getAllCve
                    type: string
                  data:
                    properties:
                      CVEs:
                        items:
                          $ref: "#/components/schemas/cveDetails"
                        type: array
                    required:
                      - CVEs
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: CVE details result
      summary: Get all CVE details
      tags:
        - 🧩 CVE
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/cve'
  /cve/check:
    post:
      description: Trigger a CVE check
      operationId: checkCVE
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - checkCVE
                    type: string
                  data:
                    properties:
                      cveChecks:
                        items:
                          $ref: "#/components/schemas/cveCheck"
                        type: array
                    required:
                      - cveChecks
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: CVE check result
      summary: Trigger a CVE check
      tags:
        - 🧩 CVE
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/cve/check'
  /cve/check/config:
    get:
      description: Get CVE check config
      operationId: getCVECheckConfiguration
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getCVECheckConfiguration
                    type: string
                  data:
                    properties:
                      apiKey:
                        description: Token used by to contact the API to check CVE
                        type: string
                      url:
                        description: Url used to check CVE
                        example: https://api.rudder.io/cve/v1/
                        type: string
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: CVE check config
      summary: Get CVE check config
      tags:
        - 🧩 CVE
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/cve/check/config'
    post:
      description: Update cve check config
      operationId: updateCVECheckConfiguration
      requestBody:
        content:
          application/json:
            schema:
              description: CVE check config
              properties:
                apiKey:
                  description: Token used by to contact the API to check CVE
                  type: string
                url:
                  description: Url used to check CVE
                  example: https://api.rudder.io/cve/v1/
                  type: string
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateCVECheckConfiguration
                    type: string
                  data:
                    properties:
                      apiKey:
                        description: Token used by to contact the API to check CVE
                        type: string
                      url:
                        description: Url used to check CVE
                        example: https://api.rudder.io/cve/v1/
                        type: string
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: new CVE check config
      summary: Update cve check config
      tags:
        - 🧩 CVE
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/cve/check/config'
  /cve/check/last:
    get:
      description: Get last CVE check result
      operationId: getLastCVECheck
      parameters:
        - $ref: "#/components/parameters/cve-group-id"
        - $ref: "#/components/parameters/cve-node-id"
        - $ref: "#/components/parameters/cve-cve-id"
        - $ref: "#/components/parameters/cve-package"
        - $ref: "#/components/parameters/cve-severity"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getLastCVECheck
                    type: string
                  data:
                    properties:
                      CVEChecks:
                        items:
                          $ref: "#/components/schemas/cveCheck"
                        type: array
                    required:
                      - CVEChecks
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Last CVE check
      summary: Get last CVE check result
      tags:
        - 🧩 CVE
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/cve/check/last'
  /cve/list:
    post:
      description: Get CVE details, from a list passed as parameter
      operationId: getCVEList
      requestBody:
        content:
          application/json:
            schema:
              description: List of CVE ids you want
              properties:
                cveIds:
                  items:
                    description: CVE id
                    example: CVE-2019-5953
                    type: string
                  type: array
                maxScore:
                  description: Only send CVE with a score lower than the value
                  example: 8.5
                  format: A score between 0 and 10 as a float
                  type: string
                minScore:
                  description: Only send CVE with a score higher than the value
                  example: 7.5
                  format: A score between 0 and 10 as a float
                  type: string
                onlyScore:
                  default: false
                  description: Only send score of the cve, and not the whole detailed list
                  example: true
                  type: boolean
                publishedDate:
                  description: Only send CVE with a publication date more recent than the value
                  format: date
                  type: string
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getCVEList
                    type: string
                  data:
                    properties:
                      CVEs:
                        items:
                          $ref: "#/components/schemas/cveDetails"
                        type: array
                    required:
                      - CVEs
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: CVE list
      summary: Get a list of CVE details
      tags:
        - 🧩 CVE
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/cve/list'
  /cve/update:
    post:
      description: Update CVE database from remote source
      operationId: updateCVE
      requestBody:
        content:
          application/json:
            schema:
              description: CVE update config
              properties:
                url:
                  description: Url used to update CVE, will default to one set in config
                  example: https://nvd.nist.gov/feeds/json/cve/1.1
                  type: string
                years:
                  items:
                    description: Year of the CVE archive to download
                    example: "2019"
                    type: string
                  type: array
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateCVE
                    type: string
                  data:
                    properties:
                      CVEs:
                        example: 12345
                        type: integer
                    required:
                      - CVEs
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: updated CVE count
      summary: Update CVE database from remote source
      tags:
        - 🧩 CVE
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/cve/update'
  /cve/update/fs:
    post:
      description: Update CVE database from file system
      operationId: readCVEfromFS
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - readCVEfromFS
                    type: string
                  data:
                    properties:
                      CVEs:
                        example: 12345
                        type: integer
                    required:
                      - CVEs
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: updated CVE count
      summary: Update CVE database from file system
      tags:
        - 🧩 CVE
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/cve/update/FS'
  "/cve/{cveId}":
    get:
      description: Get a CVE details
      operationId: getCve
      parameters:
        - $ref: "#/components/parameters/cve-cve-id-path"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getCve
                    type: string
                  data:
                    properties:
                      CVEs:
                        items:
                          $ref: "#/components/schemas/cveDetails"
                        type: array
                    required:
                      - CVEs
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: CVE details result
      summary: Get a CVE details
      tags:
        - 🧩 CVE
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/cve/CVE-2019-5953'
  /datasources:
    get:
      description: Get the configuration of all present data sources
      operationId: getAllDataSources
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getAllDataSources
                    type: string
                  data:
                    properties:
                      datasources:
                        items:
                          $ref: "#/components/schemas/datasource"
                        type: array
                    required:
                      - datasources
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Data sources information
      summary: List all data sources
      tags:
        - 🧩 Data sources
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/datasources'"
    put:
      description: Create a new data source
      operationId: createDataSource
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/datasource"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - createDataSource
                    type: string
                  data:
                    description: Information about the data sources
                    properties:
                      datasources:
                        items:
                          $ref: "#/components/schemas/datasource"
                        type: array
                    required:
                      - datasources
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Created
      summary: Create a data source
      tags:
        - 🧩 Data sources
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request PUT https://rudder.example.com/rudder/api/latest/datasources --header "Content-type: application/json" --data @datasources.json'
  /datasources/reload:
    post:
      description: Update properties from all data source on all nodes. The call is asynchronous.
      operationId: ReloadAllDatasourcesAllNodes
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - ReloadAllDatasourcesAllNodes
                    type: string
                  data:
                    example: Data for all nodes, for all configured data sources are going to be updated
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Data source reloaded
      summary: Update properties from data sources
      tags:
        - 🧩 Data sources
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/datasources/reload'
  "/datasources/reload/{datasourceId}":
    post:
      description: Update properties from all data source on all nodes. The call is asynchronous.
      operationId: ReloadOneDatasourceAllNodes
      parameters:
        - $ref: "#/components/parameters/datasource-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - ReloadOneDatasourceAllNodes
                    type: string
                  data:
                    example: Data for all nodes, for the 'test-data-source' data source are going to be updated
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Data source reloaded
      summary: Update properties from data sources
      tags:
        - 🧩 Data sources
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/datasources/reload/datasourceId'
  "/datasources/{datasourceId}":
    delete:
      description: Delete a data source configuration
      operationId: deleteDataSource
      parameters:
        - $ref: "#/components/parameters/datasource-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteDataSource
                    type: string
                  data:
                    properties:
                      datasources:
                        items:
                          $ref: "#/components/schemas/datasource"
                        type: array
                    required:
                      - datasources
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Data source information
      summary: Delete a data source
      tags:
        - 🧩 Data sources
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request DELETE https://rudder.example.com/rudder/api/latest/datasources/my-data-source'
    get:
      description: Get the configuration of a data source
      operationId: getDataSource
      parameters:
        - $ref: "#/components/parameters/datasource-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getDataSource
                    type: string
                  data:
                    properties:
                      datasources:
                        items:
                          $ref: "#/components/schemas/datasource"
                        type: array
                    required:
                      - datasources
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Data source information
      summary: Get data source configuration
      tags:
        - 🧩 Data sources
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/datasources/my-data-source'
    post:
      description: Update the configuration of a data source
      operationId: updateDataSource
      parameters:
        - $ref: "#/components/parameters/datasource-id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/datasource"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateDataSource
                    type: string
                  data:
                    properties:
                      datasources:
                        items:
                          $ref: "#/components/schemas/datasource"
                        type: array
                    required:
                      - datasources
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Data source information
      summary: Update a data source configuration
      tags:
        - 🧩 Data sources
      x-codeSamples:
        - lang: curl
          source: |-
            cat disable-datasource-1.json.json
            {
              "description": "This data source is temporary no more used and so disabled",
              "enabled": false
            }

            curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/datasources/my-data-source --header "Content-type: application/json" --data @disable-datasource-1.json.json
  /directives:
    get:
      description: List all directives
      operationId: listDirectives
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listDirectives
                    type: string
                  data:
                    properties:
                      directives:
                        items:
                          $ref: "#/components/schemas/directive"
                        type: array
                    required:
                      - directives
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Directives information
      summary: List all directives
      tags:
        - Directives
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/directives'
    put:
      description: Create a new directive from provided parameters. You can specify a source directive to clone it.
      operationId: createDirective
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/directive-new"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - createDirective
                    type: string
                  data:
                    properties:
                      directives:
                        items:
                          $ref: "#/components/schemas/directive"
                        type: array
                    required:
                      - directives
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Directives information
      summary: Create a directive
      tags:
        - Directives
      x-codeSamples:
        - lang: curl
          source: |+
            directives.json:

            {
              "id": "cf2a6c72-18ae-4f82-a12c-0b887792db41",
              "displayName": "Example Directive",
              "shortDescription": "This in an example Directive to use in Rudder api documentation",
              "longDescription": "",
              "techniqueName": "genericVariableDefinition",
              "techniqueVersion": "2.0",
              "tags": {
                "env" : "production",
                "country" : "FR"
              },
              "parameters": {
                "section": {
                  "name": "sections",
                  "sections": [
                    {
                      "section": {
                        "name": "Variable definition",
                        "vars": [
                          {
                            "var": {
                              "name": "GENERIC_VARIABLE_CONTENT",
                              "value": "new variable content"
                            }
                          },
                          {
                            "var": {
                              "name": "GENERIC_VARIABLE_NAME",
                              "value": "new_variable"
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              "priority": 3,
              "enabled": true,
              "system": false,
              "policyMode": "default"
            }

            curl --header "X-API-Token: yourToken" --request PUT https://rudder.example.com/rudder/api/latest/directives --header "Content-type: application/json" --data @directive.json

  "/directives/{directiveId}":
    delete:
      description: Delete a directive
      operationId: deleteDirective
      parameters:
        - $ref: "#/components/parameters/directive-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteDirective
                    type: string
                  data:
                    properties:
                      directives:
                        items:
                          $ref: "#/components/schemas/directive"
                        type: array
                    required:
                      - directives
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Directives information
      summary: Delete a directive
      tags:
        - Directives
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request DELETE https://rudder.example.com/rudder/api/latest/directives/17dadf50-6056-4c8b-a935-6b97d14b89a7'
    get:
      description: Get all information about a given directive
      operationId: directiveDetails
      parameters:
        - $ref: "#/components/parameters/directive-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - directiveDetails
                    type: string
                  data:
                    properties:
                      directives:
                        items:
                          $ref: "#/components/schemas/directive"
                        type: array
                    required:
                      - directives
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Directives information
      summary: Get directive details
      tags:
        - Directives
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/directives/17dadf50-6056-4c8b-a935-6b97d14b89a7'
    post:
      description: Update directive information
      operationId: updateDirective
      parameters:
        - $ref: "#/components/parameters/directive-id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/directive"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateDirective
                    type: string
                  data:
                    properties:
                      directives:
                        items:
                          $ref: "#/components/schemas/directive"
                        type: array
                    required:
                      - directives
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Directives information
      summary: Update a directive details
      tags:
        - Directives
      x-codeSamples:
        - lang: curl
          source: |-
            directive.json:
            {
              "longDescription": "Add a loooooooooooong description",
              "parameters": {
                "section": {
                  "name": "sections",
                  "sections": [
                    {
                      "section": {
                        "name": "Variable definition",
                        "vars": [
                          {
                            "var": {
                              "name": "GENERIC_VARIABLE_CONTENT",
                              "value": "Change Variable Content"
                            }
                          },
                          {
                            "var": {
                              "name": "GENERIC_VARIABLE_NAME",
                              "value": "new_variable"
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              "priority": 5
            }

            curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/directives/cf2a6c72-18ae-4f82-a12c-0b887792db41 --header "Content-type: application/json" --data @directive.json
  "/directives/{directiveId}/check":
    post:
      description: Check that update on a directive is valid
      operationId: checkDirective
      parameters:
        - $ref: "#/components/parameters/directive-id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/directive"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - checkDirective
                    type: string
                  data:
                    properties:
                      directives:
                        items:
                          $ref: "#/components/schemas/directive"
                        type: array
                    required:
                      - directives
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Directives information
      summary: Check that update on a directive is valid
      tags:
        - Directives
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/directives/17dadf50-6056-4c8b-a935-6b97d14b89a7/check  --data "displayName=Name of new directive"'
  /groups:
    get:
      description: List all groups
      operationId: listGroups
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listGroups
                    type: string
                  data:
                    properties:
                      groups:
                        items:
                          $ref: "#/components/schemas/group"
                        type: array
                    required:
                      - groups
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups information
      summary: List all groups
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/groups'
    put:
      description: Create a new group based in provided parameters
      operationId: createGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/group-new"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - createGroup
                    type: string
                  data:
                    properties:
                      groups:
                        items:
                          $ref: "#/components/schemas/group"
                        type: array
                    required:
                      - groups
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Group information
      summary: Create a group
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: |+
            groups.json:
            {
             "category": "c355f46e-11b0-4c7a-aedd-6a5f3b0303b6",
             "displayName": "Example group",
             "description": "This is an example Group to use in Rudder api documentation",
             "query":
               {"select":"node","composition":"Or","where":
                 [
                   {"objectType":"node","attribute":"nodeId","comparator":"eq","value":"1ae6ccfe-00ba-44c0-b1aa-362d2f386032"},
                   {"objectType":"node","attribute":"nodeId","comparator":"eq","value":"e4a80fd8-373e-45fc-ad94-2ae618be32e3"}
                 ]
               },
              "dynamic": true,
              "enabled": true
            }

            curl --header "X-API-Token: yourToken" --request PUT https://rudder.example.com/rudder/api/latest/groups --header "Content-Type: application/json" --data @group.json

  /groups/categories:
    put:
      description: Create a new group category
      operationId: CreateGroupCategory
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/group-category"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - CreateGroupCategory
                    type: string
                  data:
                    properties:
                      groupCategories:
                        items:
                          $ref: "#/components/schemas/group-category"
                        type: array
                    required:
                      - groupCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups category information
      summary: Create a group category
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request PUT 'https://rudder.example.com/rudder/api/latest/groups/categories' --data "name=new category name" -d "parent=4306143d-eabf-4478-b7b1-1616f4aa02b5" -d "description=A new category created via API'
  "/groups/categories/{groupCategoryId}":
    delete:
      description: Delete a group category. It must have no child groups and no children categories.
      operationId: DeleteGroupCategory
      parameters:
        - $ref: "#/components/parameters/group-category-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - DeleteGroupCategory
                    type: string
                  data:
                    properties:
                      groupCategories:
                        items:
                          $ref: "#/components/schemas/group-category"
                        type: array
                    required:
                      - groupCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups category information
      summary: Delete group category
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request DELETE 'https://rudder.example.com/rudder/api/latest/groups/categories/4306143d-eabf-4478-b7b1-1616f4aa02b5'"
    get:
      description: Get detailed information about a group category
      operationId: GetGroupCategoryDetails
      parameters:
        - $ref: "#/components/parameters/group-category-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - GetGroupCategoryDetails
                    type: string
                  data:
                    properties:
                      groupCategories:
                        items:
                          $ref: "#/components/schemas/group-category"
                        type: array
                    required:
                      - groupCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups category information
      summary: Get group category details
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/groups/categories/4306143d-eabf-4478-b7b1-1616f4aa02b5'"
    post:
      description: Update detailed information about a group category
      operationId: UpdateGroupCategory
      parameters:
        - $ref: "#/components/parameters/group-category-id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/group-category-update"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - UpdateGroupCategory
                    type: string
                  data:
                    properties:
                      groupCategories:
                        items:
                          $ref: "#/components/schemas/group-category"
                        type: array
                    required:
                      - groupCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups category information
      summary: Update group category details
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/groups/categories/4306143d-eabf-4478-b7b1-1616f4aa02b5' --data "name=new category name"
  /groups/tree:
    get:
      description: Get all available groups and their categories in a tree
      operationId: GetGroupTree
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - GetGroupTree
                    type: string
                  data:
                    example:
                      categories:
                        - categories: []
                          description: That category holds all the system and special target
                          groups:
                            - description: All nodes known by Rudder directly connected to the root server
                              displayName: All nodes managed by root policy server
                              dynamic: true
                              enabled: true
                              id: hasPolicyServer-root
                              nodeIds:
                                - dd404bda-2785-4959-abaa-8f37a0bbd85e
                                - f6223b0e-e2aa-4d1f-b6d1-74de8ea8e513
                                - root
                              query:
                                composition: And
                                select: nodeAndPolicyServer
                                where:
                                  - attribute: policyServerId
                                    comparator: eq
                                    objectType: node
                                    value: root
                          id: SystemGroups
                          name: System groups
                          parent: GroupRoot
                        - categories: []
                          description: ""
                          groups:
                            - description: ""
                              displayName: Linux nodes
                              dynamic: false
                              enabled: true
                              id: 79d83ff9-24d8-4be6-b1f7-cbb1c173f7a5
                              nodeIds: []
                              query:
                                composition: And
                                select: node
                                where:
                                  - attribute: OS
                                    comparator: eq
                                    objectType: node
                                    value: Linux
                          id: 38dd2107-a73b-45fb-916d-e110312abb87
                          name: production groups
                          parent: GroupRoot
                      description: This is the root category for the groups (both dynamic and static) and group categories
                      groups:
                        - description: ""
                          displayName: Test Clients
                          dynamic: true
                          enabled: true
                          id: af208515-c2f2-4577-bbf4-9fffebbe6629
                          nodeIds: []
                          query:
                            composition: Or
                            select: node
                            where:
                              - attribute: nodeHostname
                                comparator: regex
                                objectType: node
                                value: servername.*company.net
                              - attribute: nodeHostname
                                comparator: regex
                                objectType: node
                                value: lt serverbla.*company.net
                        - description: ""
                          displayName: Test Clients
                          dynamic: true
                          enabled: true
                          id: d7634b2d-7189-422b-9971-24c29b75da46
                          nodeIds: []
                          query:
                            composition: Or
                            select: node
                            where:
                              - attribute: nodeHostname
                                comparator: regex
                                objectType: node
                                value: servername.*company.net
                              - attribute: nodeHostname
                                comparator: regex
                                objectType: node
                                value: lt serverbla.*company.net
                      id: GroupRoot
                      name: Root of the group and group categories
                      parent: GroupRoot
                    properties:
                      groupCategories:
                        description: Group tree
                        example: null
                        type: object
                    required:
                      - groupCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups information
      summary: Get groups tree
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/groups/tree
  "/groups/{groupId}":
    delete:
      description: Update detailed information about a group
      operationId: deleteGroup
      parameters:
        - $ref: "#/components/parameters/group-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteGroup
                    type: string
                  data:
                    properties:
                      groups:
                        items:
                          $ref: "#/components/schemas/group"
                        type: array
                    required:
                      - groups
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups information
      summary: Delete a group
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request DELETE 'https://rudder.example.com/rudder/api/latest/groups/17dadf50-6056-4c8b-a935-6b97d14b89a7'"
    get:
      description: Get detailed information about a group
      operationId: groupDetails
      parameters:
        - $ref: "#/components/parameters/group-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - groupDetails
                    type: string
                  data:
                    properties:
                      groups:
                        items:
                          $ref: "#/components/schemas/group"
                        type: array
                    required:
                      - groups
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups information
      summary: Get group details
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/groups/17dadf50-6056-4c8b-a935-6b97d14b89a7'"
    post:
      description: Update detailed information about a group
      operationId: updateGroup
      parameters:
        - $ref: "#/components/parameters/group-id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/group-update"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateGroup
                    type: string
                  data:
                    properties:
                      groups:
                        items:
                          $ref: "#/components/schemas/group"
                        type: array
                    required:
                      - groups
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups information
      summary: Update group details
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/groups/17dadf50-6056-4c8b-a935-6b97d14b89a7' --data \"displayName=New name of group\""
  "/groups/{groupId}/reload":
    post:
      description: Recompute the content of a group
      operationId: reloadGroup
      parameters:
        - $ref: "#/components/parameters/group-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - reloadGroup
                    type: string
                  data:
                    properties:
                      groups:
                        items:
                          $ref: "#/components/schemas/group"
                        type: array
                    required:
                      - groups
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups information
      summary: Reload a group
      tags:
        - Groups
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/groups/17dadf50-6056-4c8b-a935-6b97d14b89a7/reload'"
  /info:
    get:
      description: List all endpoints and their version
      operationId: apiGeneralInformations
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - apiGeneralInformations
                    type: string
                  data:
                    properties:
                      availableVersions:
                        items:
                          $ref: "#/components/schemas/api-versions"
                        type: array
                      documentation:
                        description: Link to Rudder API description
                        type: string
                      endpoints:
                        items:
                          $ref: "#/components/schemas/api-endpoints"
                        type: array
                    required:
                      - documentation
                      - availableVersions
                      - endpoints
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: API endpoints
      summary: List all endoints
      tags:
        - API Info
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/info
  "/info/details/{endpointName}":
    get:
      description: Get the description and the list of supported version for one API endpoint
      operationId: apiInformations
      parameters:
        - description: Name of the endpoint for which one wants information
          in: path
          name: endpointName
          required: true
          schema:
            example: listAcceptedNodes
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - apiInformations
                    type: string
                  data:
                    properties:
                      documentation:
                        description: Link to Rudder API description
                        type: string
                      endpointName:
                        description: The endpoint name as key and the endpoint description as value
                        type: string
                      endpoints:
                        items:
                          description: Supported path and version for that endpoint
                          example: |-
                            {
                              "listAcceptedNodes": "List all accepted nodes with configurable details level",
                              "GET": "[8,9,10,11,12,13] /nodes"
                            }
                          properties:
                            httpVerb:
                              format: The HTTP verb for the endpoint for key and the supported version and API path for value
                            version:
                              $ref: "#/components/schemas/api-version"
                          type: object
                        type: array
                    required:
                      - documentation
                      - endpointName
                      - endpoints
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: API Endpoint information
      summary: Get information about one API endpoint
      tags:
        - API Info
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/info/details/listAcceptedNodes
  "/info/{sectionId}":
    get:
      description: Get all endpoints in the given section with their supported version.
      operationId: apiSubInformations
      parameters:
        - description: Id of the API section
          in: path
          name: sectionId
          required: true
          schema:
            example: nodes
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - apiSubInformations
                    type: string
                  data:
                    properties:
                      availableVersions:
                        items:
                          $ref: "#/components/schemas/api-versions"
                        type: array
                      documentation:
                        description: Link to Rudder API description
                        type: string
                      endpoints:
                        items:
                          $ref: "#/components/schemas/api-endpoints"
                        type: array
                    required:
                      - documentation
                      - availableVersions
                      - endpoints
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Endpoint information
      summary: Get information on endpoint in a section
      tags:
        - API Info
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/info/nodes
  /inventories/info:
    get:
      description: Provide information about the current state of the inventory processor
      operationId: queueInformation
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - queueInformation
                    type: string
                  data:
                    description: Information about the service
                    properties:
                      queueMaxSize:
                        example: 50
                        type: integer
                      queueSaturated:
                        description: Is the inventory queue full
                        example: false
                        type: boolean
                    required:
                      - queueMaxSize
                      - queueSaturated
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Inventories information
      summary: Get information about inventory processing queue
      tags:
        - Inventories
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/'
  /inventories/upload:
    post:
      description: Upload an inventory to the web application
      operationId: uploadInventory
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                file:
                  description: The inventory file. The original file name is used to check extension, that should be .xml[.gz] or .ocs[.gz]
                  format: binary
                  type: string
                signature:
                  description: The signature file. The original file name is used to check extension, that should be ${originalInventoryFileName}.sign[.gz]
                  format: binary
                  type: string
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - uploadInventory
                    type: string
                  data:
                    example: Inventory 'file.xml' for Node 'c1bab9fc-bcf6-4d59-a397-84c8e2fc06c0' added to processing queue.
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Inventory uploaded
      summary: Upload an inventory for processing
      tags:
        - Inventories
      x-codeSamples:
        - lang: curl
          source: 'curl --request POST --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/inventories/upload -F "file=@inventory-file" -F "signature=@signature-file"'
  /inventories/watcher/restart:
    post:
      description: Restart the inventory watcher if necessary
      operationId: fileWatcherRestart
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - fileWatcherRestart
                    type: string
                  data:
                    example: Incoming inventory watcher restarted
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Started
      summary: Restart inventory watcher
      tags:
        - Inventories
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/inventories/watcher/restart'"
  /inventories/watcher/start:
    post:
      description: Start the inventory watcher if necessary
      operationId: fileWatcherStart
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - fileWatcherStart
                    type: string
                  data:
                    example: Incoming inventory watcher started
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Started
      summary: Start inventory watcher
      tags:
        - Inventories
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/inventories/watcher/start'"
  /inventories/watcher/stop:
    post:
      description: Stop the inventory watcher if necessary
      operationId: fileWatcherStop
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - fileWatcherStop
                    type: string
                  data:
                    example: Incoming inventory watcher stopped
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Stopped
      summary: Stop inventory watcher
      tags:
        - Inventories
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/inventories/watcher/stop'"
  /methods:
    get:
      description: Get all generic methods metadata
      operationId: methods
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      methods:
                        $ref: "#/components/schemas/methods"
                    required:
                      - methods
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Methods information
      summary: List methods
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/methods'
  /methods/reload:
    post:
      description: Reload methods metadata from file system
      operationId: reloadMethods
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      methods:
                        $ref: "#/components/schemas/methods"
                    required:
                      - methods
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Methods information
      summary: Reload methods
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/methods/reload'
  /nodes:
    get:
      description: Get information about the nodes managed by the target server
      operationId: listAcceptedNodes
      parameters:
        - $ref: "#/components/parameters/include"
        - $ref: "#/components/parameters/node-query"
        - $ref: "#/components/parameters/node-where"
        - $ref: "#/components/parameters/node-composition"
        - $ref: "#/components/parameters/node-select"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listAcceptedNodes
                    type: string
                  data:
                    description: Information about the nodes
                    properties:
                      nodes:
                        items:
                          $ref: "#/components/schemas/node-full"
                        type: array
                    required:
                      - nodes
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Nodes
      summary: List managed nodes
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: |
            # To get the Linux nodes with a hostname starting with "node1"
            curl -g --header "X-API-Token: yourToken" 'https://rudder.example.com/rudder/api/latest/nodes?where=[{"objectType":"node","attribute":"OS","comparator":"eq","value":"Linux"},{"objectType":"node","attribute":"nodeHostname","comparator":"regex","value":"node1.*"}]&composition=And'

            # To get the list of nodes with their agent version
            curl -k -H "X-API-Token: yourToken" -X GET "https://rudder.example.com/rudder/api/latest/nodes?include=minimal,managementTechnology" | jq '.data.nodes[] | {"id": .id, "version": .managementTechnology[].version}'

            # To get information about the eth0 interface of a specific node
            curl -k -H "X-API-Token: yourToken" -H "Content-Type: application/json" -X GET 'https://rudder.example.com/rudder/api/latest/nodes/8b168194-c0b4-41ab-b2b5-9571a8906d59?include=networkInterfaces' | jq '.data.nodes[].networkInterfaces[] | select(.name == "eth0")'
            # It gives:
            #
            #{
            # "name": "eth0",
            # "type": "ethernet",
            # "status": "Up",
            # "macAddress": "52:54:00:49:45:ac",
            # "ipAddresses": [
            #   "fe80:0:0:0:5054:ff:fe49:45ac",
            #   "192.168.110.21"
            # ]
            #}

            # To get information about the nodes running a JVM process
            #
            # This gets information about nodes with processes matching the quesry, and then extract the flat list of matching processes
            curl -g -s -H "X-API-Token: yourToken" 'https://rudder.example.com/rudder/api/latest/nodes?include=minimal,processes&where=[{"objectType":"process","attribute":"commandName","comparator":"regex","value":".*(java|jre|jdk).*"}]' | jq -r '.data.nodes[] | [ { hostname } + .processes[] ][] | select( .name | test(".*(java|jdk|jre).*")) | [.hostname, .user, .name] | @tsv' | cut -c -120
            # It gives:
            #
            # node1.example.com	jenkins	java -jar remoting.jar -workDir /home/jenkins -jar-cache /home/jenkins/rem
            # node2.example.com	tomcat8	/usr/lib/jvm/java-11-openjdk-amd64//bin/java -Djava.util.logging.config.fi
        - lang: python
          source: |
            import json
            import requests

            # Get all nodes having a hostname starting with node1 and based on Linux and only display minimal information (id, hostname, status)
            url = "https://rudder.example.com/rudder/api/latest/nodes"
            linux = {"objectType": "node", "attribute": "OS",
                     "comparator": "eq", "value": "Linux"}
            node1 = {"objectType": "node", "attribute": "nodeHostname",
                     "comparator": "regex", "value": "node1.*"}
            where = [linux, node1]
            params = {"where": json.dumps(where), "include": "minimal"}
            headers = {"X-API-TOKEN": "yourToken"}
            requests.get(url, params=params, headers=headers, verify=False)
    put:
      description: Use the provided array of node information to create new nodes
      operationId: createNodes
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/node-add"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - createNode
                    type: string
                  data:
                    properties:
                      created:
                        items:
                          description: created nodes ID
                          example: 378740d3-c4a9-4474-8485-478e7e52db52
                          type: string
                        type: array
                      failed:
                        items:
                          description: failed nodes ID
                          type: string
                        type: array
                    required:
                      - created
                      - failed
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Creation information
      summary: Create one or several new nodes
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: |+
            curl --header "X-API-Token: yourToken" --request PUT https://rudder.example.com/rudder/api/latest/nodes --header "Content-type: application/json" --data @nodes.json

  /nodes/applyPolicy:
    post:
      description: This API allows to trigger an agent run on all nodes. Response contains a json stating if agent could be started on each node, but not if the run went fine and do not display any output from it. You can see the result of the run in Rudder web interface or in the each agent logs.
      operationId: applyPolicyAllNodes
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - applyPolicyAllNodes
                    type: string
                  data:
                    items:
                      properties:
                        hostname:
                          description: Node hostname
                          example: node.example.com
                          type: string
                        id:
                          description: Rudder id of the node
                          example: 249e14ac-2418-457c-a27d-1650907b13c7
                          format: uuid (or "root")
                          type: string
                        result:
                          description: Result or policy application trigger
                          example: Started
                          type: string
                      type: object
                    type: array
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Result
      summary: Trigger an agent run on all nodes
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/nodes/applyPolicy'
  /nodes/pending:
    get:
      description: Get information about the nodes pending acceptation
      operationId: listPendingNodes
      parameters:
        - $ref: "#/components/parameters/include"
        - $ref: "#/components/parameters/node-query"
        - $ref: "#/components/parameters/node-where"
        - $ref: "#/components/parameters/node-composition"
        - $ref: "#/components/parameters/node-select"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listPendingNodes
                    type: string
                  data:
                    description: Information about the nodes
                    properties:
                      nodes:
                        items:
                          $ref: "#/components/schemas/node-full"
                        type: array
                    required:
                      - nodes
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Nodes
      summary: List pending nodes
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: |+
            # To get the list of pending nodes
            curl --header "X-API-Token: yourToken" 'https://rudder.example.com/rudder/api/latest/nodes/pending'

            # To get the pending Linux nodes with a hostname starting with "node1"
            curl --header "X-API-Token: yourToken" 'https://rudder.example.com/rudder/api/latest/nodes/pending?where=\[\{"objectType":"node","attribute":"OS","comparator":"eq","value":"Linux"\},\{"objectType":"node","attribute":"nodeHostname","comparator":"regex","value":"node1.*"\}\]'

            # To get the list of pending nodes with their agent version
            curl -k -H "X-API-Token: yourToken" -X GET "https://rudder.example.com/rudder/api/latest/nodes/pending?include=minimal,managementTechnology" | jq '.data.nodes[] | {"id": .id, "version": .managementTechnology[].version}'



  "/nodes/pending/{nodeId}":
    post:
      description: Accept or refuse a pending node
      operationId: changePendingNodeStatus
      parameters:
        - $ref: "#/components/parameters/node-id"
      requestBody:
        content:
          application/json:
            schema:
              properties:
                status:
                  description: New status of the pending node
                  enum:
                    - accepted
                    - refused
                  example: accepted
                  type: string
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - changePendingNodeStatus
                    type: string
                  data:
                    description: Information about the node
                    properties:
                      nodes:
                        items:
                          $ref: "#/components/schemas/node-full"
                        type: array
                    required:
                      - nodes
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Nodes
      summary: Update pending Node status
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/nodes/pending/17dadf50-6056-4c8b-a935-6b97d14b89a7 --data "status=accepted"'
  /nodes/status:
    get:
      description: Get acceptation status (pending, accepted, deleted, unknown) of a list of nodes
      operationId: getNodesStatus
      parameters:
        - $ref: "#/components/parameters/node-ids"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getNodesStatus
                    type: string
                  data:
                    description: List of nodeId and associated status
                    properties:
                      nodes:
                        description: List of nodeId and associated status
                        items:
                          properties:
                            id:
                              description: Unique id of the node
                              example: 9a1773c9-0889-40b6-be89-f6504443ac1b
                              format: uuid (or "root")
                              type: string
                            status:
                              description: Status of the node
                              enum:
                                - pending
                                - accepted
                                - deleted
                                - unknown
                              type: string
                          required:
                            - id
                            - status
                          type: object
                        type: array
                    required:
                      - nodes
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: nodes
      summary: Get nodes acceptation status
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/nodes/status?ids=17dadf50-6056-4c8b-a935-6b97d14b89a7,b9a71482-5030-4699-984d-b03d28bbbf36'
  "/nodes/{nodeId}":
    delete:
      description: Remove a node from the Rudder server. It won't be managed anymore.
      operationId: deleteNode
      parameters:
        - $ref: "#/components/parameters/node-id"
        - $ref: "#/components/parameters/node-delete-mode"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteNode
                    type: string
                  data:
                    description: Information about the node
                    properties:
                      nodes:
                        items:
                          $ref: "#/components/schemas/node-full"
                        type: array
                    required:
                      - nodes
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Nodes
      summary: Delete a node
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request DELETE https://rudder.example.com/rudder/api/latest/nodes/17dadf50-6056-4c8b-a935-6b97d14b89a7
    get:
      description: Get details about a given node
      operationId: nodeDetails
      parameters:
        - $ref: "#/components/parameters/node-id"
        - $ref: "#/components/parameters/include"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - nodeDetails
                    type: string
                  data:
                    description: Information about the node
                    properties:
                      nodes:
                        items:
                          $ref: "#/components/schemas/node-full"
                        type: array
                    required:
                      - nodes
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Nodes
      summary: Get information about a node
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/nodes/17dadf50-6056-4c8b-a935-6b97d14b89a7\?include=full'
    post:
      description: Update node settings and properties
      operationId: updateNode
      parameters:
        - $ref: "#/components/parameters/node-id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/node-settings"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateNode
                    type: string
                  data:
                    description: Information about the node
                    properties:
                      nodes:
                        items:
                          $ref: "#/components/schemas/node-full"
                        type: array
                    required:
                      - nodes
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Nodes
      summary: Update node settings and properties
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: |
            # Given the "data.json" JSON file with content:
            { "properties": [
              { "name": "env_type"    , "value": "production" },
              { "name": "shell"       , "value": "/bin/sh" },
              { "name": "utf-8 poetry", "value": "ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ" }
            ]
            , "policyMode" : "audit"
            }
            # Setting properties from "data.json" and policy mode to audit:
            curl --header "X-API-Token: yourToken" --request POST --header "Content-Type: application/json" https://rudder.example.com/rudder/api/latest/nodes/17dadf50-6056-4c8b-a935-6b97d14b89a7 --data @properties.json

            # Removing the key "utf-8 poetry" from the command line and updating the "env_type" one
            curl --header "X-API-Token: yourToken" --request POST --header "Content-Type: application/json" https://rudder.example.com/rudder/api/latest/nodes/17dadf50-6056-4c8b-a935-6b97d14b89a7 --data '{ "properties": [{ "name":"utf-8 poetry", "value":""}, {"name":"env_type", "value":"deprovisioned"}] }'

            # Removing the key "env_type" and changing "shell" and use default policy mode
            curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/nodes/17dadf50-6056-4c8b-a935-6b97d14b89a7 --data "properties=shell=/bin/false" -d "properties=env_type=" -d "policyMode=default"

            # Reset the key status to accept next inventory with its new key
            curl --header "X-API-Token: yourToken" --request POST -H "Content-Type: application/json" 'https://rudder.example.com/rudder/api/latest/nodes/root' -d '{"agentKey":{"status":"undefined"}}'
  "/nodes/{nodeId}/applyPolicy":
    post:
      description: This API allows to trigger an agent run on the target node. Response is a stream of the actual agent run on the node.
      operationId: applyPolicy
      parameters:
        - $ref: "#/components/parameters/node-id"
      responses:
        "200":
          $ref: "#/components/responses/agent-output"
      summary: Trigger an agent run
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/nodes/root/applyPolicy'
  "/nodes/{nodeId}/fetchData":
    post:
      description: Update properties from all data sources on one nodes. The call is asynchronous.
      operationId: ReloadAllDatasourcesOneNode
      parameters:
        - $ref: "#/components/parameters/node-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - ReloadAllDatasourcesOneNode
                    type: string
                  data:
                    example: Data for node '4e3336f9-ace8-44d6-8d07-496ff1631b01', for all configured data sources, is going to be updated
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Data sources reloaded
      summary: Update properties for one node from all data sources
      tags:
        - 🧩 Data sources
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/nodes/17dadf50-6056-4c8b-a935-6b97d14b89a7/fetchData'
  "/nodes/{nodeId}/fetchData/{datasourceId}":
    post:
      description: Update properties from a data source on one nodes. The call is asynchronous.
      operationId: ReloadOneDatasourceOneNode
      parameters:
        - $ref: "#/components/parameters/node-id"
        - $ref: "#/components/parameters/datasource-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - ReloadOneDatasourceOneNode
                    type: string
                  data:
                    example: Data for node '4e3336f9-ace8-44d6-8d07-496ff1631b01', for ' test-data-source' data source, is going to be updated
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Data sources reloaded
      summary: Update properties for one node from a data source
      tags:
        - 🧩 Data sources
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/nodes/nodeId/fetchData/datasourceId'
  "/nodes/{nodeId}/inheritedProperties":
    get:
      description: This API returns all node properties for a node, including group inherited ones.
      operationId: nodeInheritedProperties
      parameters:
        - $ref: "#/components/parameters/node-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - nodeInheritedProperties
                    type: string
                  data:
                    description: Information about the node inherited properties
                    items:
                      $ref: "#/components/schemas/node-inherited-properties"
                    type: array
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Node
      summary: Get inherited node properties for a node
      tags:
        - Nodes
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/nodes/17dadf50-6056-4c8b-a935-6b97d14b89a7/inheritedProperties'
  /parameters:
    get:
      description: Get the current value of all the global parameters
      operationId: listParameters
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listParameters
                    type: string
                  data:
                    description: Parameters
                    properties:
                      parameters:
                        items:
                          $ref: "#/components/schemas/parameter"
                        type: array
                    required:
                      - parameters
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Settings
      summary: List all global parameters
      tags:
        - Parameters
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/parameters'
    put:
      description: Create a new global parameter
      operationId: createParameter
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/parameter"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - createParameter
                    type: string
                  data:
                    description: Parameters
                    properties:
                      parameters:
                        items:
                          $ref: "#/components/schemas/parameter"
                        type: array
                    required:
                      - parameters
                    type: object
                  id:
                    description: Id of the parameter
                    example: rudder_file_edit_footer
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                  - id
                type: object
          description: Settings
      summary: Create a new parameter
      tags:
        - Parameters
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --header "Content-Type: application/json" --request PUT https://rudder.example.com/rudder/api/latest/parameters --data @JSON-file-name'
  "/parameters/{parameterId}":
    delete:
      description: Delete an existing parameter
      operationId: deleteParameter
      parameters:
        - $ref: "#/components/parameters/parameter-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteParameter
                    type: string
                  data:
                    description: Parameters
                    properties:
                      parameters:
                        items:
                          $ref: "#/components/schemas/parameter"
                        type: array
                    required:
                      - parameters
                    type: object
                  id:
                    description: Id of the parameter
                    example: rudder_file_edit_footer
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                  - id
                type: object
          description: Settings
        "500":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteParameter
                    type: string
                  errorDetails:
                    example: "Could not delete Parameter rudder_file_edit_footer cause is: Could not find Parameter rudder_file_edit_footer."
                    type: string
                  id:
                    description: Id of the parameter
                    example: rudder_file_edit_footer
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                  - id
                type: object
          description: Non existing parameter
      summary: Delete a parameter
      tags:
        - Parameters
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request DELETE https://rudder.example.com/rudder/api/latest/parameters/ParameterId'
    get:
      description: Get the current value of a given parameter
      operationId: parameterDetails
      parameters:
        - $ref: "#/components/parameters/parameter-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - parameterDetails
                    type: string
                  data:
                    description: Parameters
                    properties:
                      parameters:
                        items:
                          $ref: "#/components/schemas/parameter"
                        type: array
                    required:
                      - parameters
                    type: object
                  id:
                    description: Id of the parameter
                    example: rudder_file_edit_footer
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                  - id
                type: object
          description: Settings
      summary: Get the value of a parameter
      tags:
        - Parameters
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/parameters/ParameterId'
    post:
      description: Update the properties of a parameter
      operationId: updateParameter
      parameters:
        - $ref: "#/components/parameters/parameter-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateParameter
                    type: string
                  data:
                    description: Parameters
                    properties:
                      parameters:
                        items:
                          $ref: "#/components/schemas/parameter"
                        type: array
                    required:
                      - parameters
                    type: object
                  id:
                    description: Id of the parameter
                    example: rudder_file_edit_footer
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                  - id
                type: object
          description: Settings
      summary: Update a parameter's value
      tags:
        - Parameters
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/parameters/ParameterId --data "value=### Edited by Rudder ###"'
  /rules:
    get:
      description: List all rules
      operationId: listRules
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listRules
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          $ref: "#/components/schemas/rule"
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Rules information
      summary: List all rules
      tags:
        - Rules
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/rules'

            # To get information about the target (included/excluded) groups of the rules
            curl -H "X-API-Token: yourToken" -X GET 'https://rudder.example.com/rudder/api/latest/rules' | jq '.data.rules[] | {"d": .displayName, "id":.id, "inc": .targets[].include?.or, "exc":.targets[].exclude?.or}'
    put:
      description: Create a new rule. You can specify a source rule to clone it.
      operationId: createRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/rule-new"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - createRule
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          $ref: "#/components/schemas/rule"
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Rules information
      summary: Create a rule
      tags:
        - Rules
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request PUT 'https://rudder.example.com/rudder/api/latest/rules' --data \"displayName=Name of New Rule\""
  /rules/categories:
    put:
      description: Create a new rule category
      operationId: CreateRuleCategory
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/rule-category"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - CreateRuleCategory
                    type: string
                  data:
                    properties:
                      ruleCategories:
                        items:
                          $ref: "#/components/schemas/rule-category"
                        type: array
                    required:
                      - ruleCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Rules category information
      summary: Create a rule category
      tags:
        - Rules
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request PUT 'https://rudder.example.com/rudder/api/latest/rules/categories' --data "name=new category" -d "parent=4306143d-eabf-4478-b7b1-1616f4aa02b5" -d "description=A new category created via API"
  "/rules/categories/{ruleCategoryId}":
    delete:
      description: Delete a group category. It must have no child groups and no children categories.
      operationId: DeleteRuleCategory
      parameters:
        - $ref: "#/components/parameters/rule-category-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - DeleteRuleCategory
                    type: string
                  data:
                    properties:
                      groupCategories:
                        items:
                          $ref: "#/components/schemas/rule-category"
                        type: array
                    required:
                      - groupCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Groups category information
      summary: Delete group category
      tags:
        - Rules
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request DELETE 'https://rudder.example.com/rudder/api/latest/rules/categories/4306143d-eabf-4478-b7b1-1616f4aa02b5?prettify=true'"
    get:
      description: Get detailed information about a rule category
      operationId: GetRuleCategoryDetails
      parameters:
        - $ref: "#/components/parameters/rule-category-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - GetRuleCategoryDetails
                    type: string
                  data:
                    properties:
                      rulesCategories:
                        items:
                          $ref: "#/components/schemas/rule-category"
                        type: array
                    required:
                      - rulesCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Rules category information
      summary: Get rule category details
      tags:
        - Rules
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/rules/categories/4306143d-eabf-4478-b7b1-1616f4aa02b5?prettify=true'"
    post:
      description: Update detailed information about a rule category
      operationId: UpdateRuleCategory
      parameters:
        - $ref: "#/components/parameters/rule-category-id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/rule-category-update"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - UpdateRuleCategory
                    type: string
                  data:
                    properties:
                      ruleCategories:
                        items:
                          $ref: "#/components/schemas/rule-category"
                        type: array
                    required:
                      - ruleCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Rules category information
      summary: Update rule category details
      tags:
        - Rules
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/rules/categories/4306143d-eabf-4478-b7b1-1616f4aa02b5?prettify=true' --data \"name=new category name\""
  /rules/tree:
    get:
      description: Get all available rules and their categories in a tree
      operationId: GetRuleTree
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - GetRuleTree
                    type: string
                  data:
                    example:
                      categories:
                        - categories:
                            - categories: []
                              description: ""
                              id: f45ec2fd-69f4-4669-9c22-1af3abe2a107
                              name: Specific dev category
                              parent: 4306143d-eabf-4478-b7b1-1616f4aa02b5
                              rules:
                                - directives: []
                                  displayName: my specific Rule
                                  enabled: true
                                  id: b7fda4e7-3616-4e99-89b0-8ffadaf6b0f0
                                  longDescription: ""
                                  shortDescription: ""
                                  system: false
                                  targets: []
                          description: ""
                          id: 4306143d-eabf-4478-b7b1-1616f4aa02b5
                          name: Dev category
                          parent: rootRuleCategory
                          rules:
                            - directives: []
                              displayName: dev Rule
                              enabled: true
                              id: f2aa50a9-961c-4cce-a266-380cffcdce32
                              longDescription: ""
                              shortDescription: ""
                              system: false
                              targets: []
                      description: This is the main category of Rules
                      id: rootRuleCategory
                      name: Rules
                      parent: rootRuleCategory
                      rules:
                        - directives: []
                          displayName: Global security policy
                          enabled: true
                          id: 43cde273-5bb0-466f-8850-7d3fdde03253
                          longDescription: ""
                          shortDescription: ""
                          system: false
                          targets: []
                        - directives:
                            - bff45fe2-8233-4d28-96aa-78b0390b548b
                          displayName: Global configuration for all nodes
                          enabled: false
                          id: 32377fd7-02fd-43d0-aab7-28460a91347b
                          longDescription: This Rule was created automatically when Rudder was installed. It can be used to target Directives to all nodes (including the Rudder root server itself), or deleted if you would rather create your own set of Rules (it will never be created again).
                          shortDescription: ""
                          system: false
                          targets:
                            - exclude:
                                or: []
                              include:
                                or:
                                  - special:all
                                  - special:all_exceptPolicyServers
                                  - special:all_policyServers
                    properties:
                      ruleCategories:
                        description: Rule tree
                        example: null
                        type: object
                    required:
                      - ruleCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Rules information
      summary: Get rules tree
      tags:
        - Rules
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/rules/tree?prettify=true'"
  "/rules/{ruleId}":
    delete:
      description: Delete a rule.
      operationId: deleteRule
      parameters:
        - $ref: "#/components/parameters/rule-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteRule
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          $ref: "#/components/schemas/rule"
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Rules information
      summary: Delete a rule
      tags:
        - Rules
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request DELETE 'https://rudder.example.com/rudder/api/latest/rules/176ad06b-ed02-4da3-8053-16225d217741'"
    get:
      description: Get the details of a rule
      operationId: ruleDetails
      parameters:
        - $ref: "#/components/parameters/rule-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - ruleDetails
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          $ref: "#/components/schemas/rule"
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Rules information
      summary: Get a rule details
      tags:
        - Rules
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/rules/06ba8940-ed6c-4102-ba46-93d640a64c36'"
    post:
      description: Update the details of a rule
      operationId: updateRule
      parameters:
        - $ref: "#/components/parameters/rule-id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/rule-with-category"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateRule
                    type: string
                  data:
                    properties:
                      rules:
                        items:
                          $ref: "#/components/schemas/rule-with-category"
                        type: array
                    required:
                      - rules
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Rules information
      summary: Update a rule details
      tags:
        - Rules
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/rules/17dadf50-6056-4c8b-a935-6b97d14b89a7' --data \"displayName=Name of rule\""
  "/scaleoutrelay/demote/{nodeId}":
    post:
      description: Demote a relay to a simple node.
      operationId: demoteToNode
      parameters:
        - $ref: "#/components/parameters/node-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - demoteToNode
                    type: string
                  data:
                    description: Success or error message
                    example: 17dadf50-6056-4c8b-a935-6b97d14b89a7
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - action
                  - result
                  - data
                type: object
          description: Demote to node response
      summary: Demote a relay to simple node
      tags:
        - 🧩 Scale out Relay
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST --header \"Content-Type: application/json\" https://rudder.example.com/rudder/api/latest/scaleoutrelay/promote/17dadf50-6056-4c8b-a935-6b97d14b89a7?prettify=true'"
  "/scaleoutrelay/promote/{nodeId}":
    post:
      description: Promote a node to relay
      operationId: promoteToRelay
      parameters:
        - $ref: "#/components/parameters/node-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - promoteToRelay
                    type: string
                  data:
                    description: Success or error message
                    example: 17dadf50-6056-4c8b-a935-6b97d14b89a7
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - action
                  - result
                  - data
                type: object
          description: Promote response
      summary: Promote a node to relay
      tags:
        - 🧩 Scale out Relay
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST --header \"Content-Type: application/json\" https://rudder.example.com/rudder/api/latest/scaleoutrelay/promote/17dadf50-6056-4c8b-a935-6b97d14b89a7?prettify=true'"
  /secret:
    get:
      description: Get the list of all secrets without their value
      operationId: getAllSecrets
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getAllSecrets
                    type: string
                  data:
                    properties:
                      secrets:
                        description: List of API version and status
                        items:
                          properties:
                            description:
                              description: The description of the secret to identify it more easily
                              example: Password of my super secret user account
                              type: string
                            name:
                              description: The name of the secret used as a reference on the value
                              example: secret-password
                              type: string
                          required:
                            - name
                            - description
                          type: object
                        type: array
                    required:
                      - secrets
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Secrets information
      summary: List all secrets
      tags:
        - 🧩 Secret Management
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/secret'"
    post:
      description: Update a secret and override the value, the name cannot be overridden
      operationId: updateSecret
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/secrets"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateSecret
                    type: string
                  data:
                    properties:
                      secrets:
                        description: List of API version and status
                        items:
                          properties:
                            description:
                              description: The description of the secret to identify it more easily
                              example: Password of my super secret user account
                              type: string
                            name:
                              description: The name of the secret used as a reference on the value
                              example: secret-password
                              type: string
                          required:
                            - name
                            - description
                          type: object
                        type: array
                    required:
                      - secrets
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Secrets information
      summary: Update a secret
      tags:
        - 🧩 Secret Management
      x-codeSamples:
        - lang: curl
          source: |+
            add.json:

            {
            	"name" : "secret-password",
            	"description" : "Password of my super secret user account",
            	"value" : "nj-k;EO32!kFWewn2Nk,u",
            }

            curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/secret --header "Content-type: application/json" --data @add.json

    put:
      description: Add a secret
      operationId: addSecret
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/secrets"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - addSecret
                    type: string
                  data:
                    properties:
                      secrets:
                        description: List of API version and status
                        items:
                          properties:
                            description:
                              description: The description of the secret to identify it more easily
                              example: Password of my super secret user account
                              type: string
                            name:
                              description: The name of the secret used as a reference on the value
                              example: secret-password
                              type: string
                          required:
                            - name
                            - description
                          type: object
                        type: array
                    required:
                      - secrets
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Secrets information
      summary: Create a secret
      tags:
        - 🧩 Secret Management
      x-codeSamples:
        - lang: curl
          source: |+
            add.json:

            {
            	"name" : "secret-password",
            	"description" : "Password of my super secret user account",
            	"value" : "nj-k;EO32!kFWewn2Nk,u",
            }

            curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/secret --header "Content-type: application/json" --data @add.json

  "/secret/{name}":
    delete:
      description: Remove the secret by his unique name
      operationId: deleteSecret
      parameters:
        - $ref: "#/components/parameters/secret-name"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteSecret
                    type: string
                  data:
                    properties:
                      secrets:
                        description: List of API version and status
                        items:
                          properties:
                            description:
                              description: The description of the secret to identify it more easily
                              example: Password of my super secret user account
                              type: string
                            name:
                              description: The name of the secret used as a reference on the value
                              example: secret-password
                              type: string
                          required:
                            - name
                            - description
                          type: object
                        type: array
                    required:
                      - secrets
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Secret information
      summary: Delete a secret
      tags:
        - 🧩 Secret Management
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request DELETE 'https://rudder.example.com/rudder/api/latest/secret/secret-password'"
    get:
      description: Get one secret by his unique name
      operationId: getSecret
      parameters:
        - $ref: "#/components/parameters/secret-name"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getSecret
                    type: string
                  data:
                    properties:
                      secrets:
                        description: List of API version and status
                        items:
                          properties:
                            description:
                              description: The description of the secret to identify it more easily
                              example: Password of my super secret user account
                              type: string
                            name:
                              description: The name of the secret used as a reference on the value
                              example: secret-password
                              type: string
                          required:
                            - name
                            - description
                          type: object
                        type: array
                    required:
                      - secrets
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Secret information
      summary: Get one secret
      tags:
        - 🧩 Secret Management
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/secret-password'"
  /settings:
    get:
      description: Get the current value of all the settings
      operationId: getAllSettings
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getAllSettings
                    type: string
                  data:
                    description: Information about the setting
                    properties:
                      settings:
                        properties:
                          allowed_networks:
                            description: List of allowed networks for each policy server (root and relays)
                            items:
                              properties:
                                allowed_networks:
                                  description: List of allowed networks
                                  items:
                                    description: Allowed network (`0.0.0.0/0` for no restriction `a.b.c.d/32` for one IP)
                                    example: 192.168.40.0/24
                                    format: CIDR network
                                    type: string
                                  type: array
                                id:
                                  description: Rudder id of the policy server
                                  example: root
                                  type: string
                              type: object
                            type: array
                          change_message_prompt:
                            description: Explanation to display
                            example: Please provide a reason for this change
                            type: string
                          display_recent_changes_graphs:
                            description: Display changes graphs
                            example: true
                            type: boolean
                          enable_change_message:
                            description: Enable change audit logs
                            example: true
                            type: boolean
                          enable_change_request:
                            description: Enable Change Requests
                            example: false
                            type: boolean
                          enable_javascript_directives:
                            description: Enable script evaluation in Directives
                            example: enabled
                            type: string
                          enable_self_deployment:
                            description: Allow self deployment
                            example: true
                            type: boolean
                          enable_self_validation:
                            description: Allow self validation
                            example: true
                            type: boolean
                          first_run_hour:
                            description: First agent run time - hour
                            example: 0
                            type: integer
                          first_run_minute:
                            description: First agent run time - minute
                            example: 0
                            type: integer
                          global_policy_mode:
                            description: Define the default setting for global policy mode
                            enum:
                              - enforce
                              - audit
                            example: enforce
                            type: string
                          global_policy_mode_overridable:
                            description: Allow overrides on this default setting
                            example: true
                            type: boolean
                          heartbeat_frequency:
                            description: Send heartbeat every heartbeat_frequency runs (only on **changes-only** compliance mode)
                            example: 10
                            type: integer
                          mandatory_change_message:
                            description: Make message mandatory
                            example: false
                            type: boolean
                          modified_file_ttl:
                            description: Number of days to retain modified files
                            example: 7
                            type: integer
                          node_accept_duplicated_hostname:
                            default: false
                            description: Allow acceptation of a pending node when another one with the same hostname is already accepted
                            example: false
                            type: boolean
                          node_onaccept_default_policyMode:
                            description: Default policy mode for accepted node
                            enum:
                              - default
                              - enforce
                              - audit
                            example: default
                            type: string
                          node_onaccept_default_state:
                            description: Set default state for node when they are accepted within Rudder
                            enum:
                              - enabled
                              - ignored
                              - empty-policies
                              - initializing
                              - preparing-eol
                            example: enabled
                            type: string
                          output_file_ttl:
                            description: Number of days to retain agent output files
                            example: 7
                            type: integer
                          relay_server_synchronization_method:
                            description: Method used to synchronize data between server and relays, either "classic" (agent protocol, default), "rsync" (use rsync to synchronize, that you'll need to be manually set up), or "disabled" (use third party system to transmit data)
                            enum:
                              - classic
                              - rsync
                              - disabled
                            example: classic
                            type: string
                          relay_server_synchronize_policies:
                            description: If **rsync** is set as a synchronization method, use rsync to synchronize policies between Rudder server and relays. If false, you'll have to synchronize policies yourself.
                            example: true
                            type: boolean
                          relay_server_synchronize_shared_files:
                            description: If **rsync** is set as a synchronization method, use rsync to synchronize shared files between Rudder server and relays. If false, you'll have to synchronize shared files yourself.
                            type: boolean
                          reporting_mode:
                            description: Compliance reporting mode
                            enum:
                              - full-compliance
                              - changes-only
                              - reports-disabled
                            example: full-compliance
                            type: string
                          require_time_synchronization:
                            description: Require time synchronization between nodes and policy server
                            example: true
                            type: boolean
                          rudder_compute_changes:
                            default: true
                            description: Compute list of changes (repaired reports) per rule
                            type: boolean
                          rudder_compute_dyngroups_max_parallelism:
                            default: "1"
                            description: Set the parallelism to compute dynamic group, as a number of thread (i.e. 4), or a multiplicative of the number of core (x0.5)
                            type: string
                          rudder_generation_compute_dyngroups:
                            default: true
                            description: Recompute all dynamic groups at the start of policy generation
                            type: boolean
                          rudder_generation_continue_on_error:
                            default: false
                            description: Policy generation continues on error during NodeConfiguration evaluation
                            type: boolean
                          rudder_generation_delay:
                            default: 0 seconds
                            description: Set a delay before starting policy generation, this will allow you to accumulate changes before they are deployed to Nodes, and can also lessen webapp resources needs. The value is a number followed by the time unit needed (seconds/s, minutes/m, hours/h ...), ie "5m" for 5 minutes
                            type: string
                          rudder_generation_js_timeout:
                            default: 30
                            description: Policy generation JS evaluation of directive parameter timeout in seconds
                            type: integer
                          rudder_generation_max_parallelism:
                            default: x0.5
                            description: Set the policy generation parallelism, either as an number of thread (i.e. 4), or a multiplicative of the number of core (x0.5)
                            type: string
                          rudder_generation_policy:
                            default: all
                            description: Should policy generation be triggered automatically after a change (value 'all'), or should we wait until a manual launch (through api or UI, value 'onlyManual') or even no policy generation at all (value "none")
                            type: string
                          rudder_report_protocol_default:
                            description: Default reporting protocol used
                            enum:
                              - HTTPS
                              - SYSLOG
                            example: HTTPS
                            type: string
                          rudder_save_db_compliance_details:
                            default: false
                            description: Store all compliance details in database
                            type: boolean
                          rudder_save_db_compliance_levels:
                            default: true
                            description: Store all compliance levels in database
                            type: boolean
                          rudder_verify_certificates:
                            default: false
                            description: Enforce certificate validation in all HTTPS calls
                            type: boolean
                          run_frequency:
                            description: Agent run schedule - time between agent runs (in minutes)
                            example: 5
                            type: integer
                          send_metrics:
                            description: Send anonymous usage statistics
                            example: not defined
                            type: string
                          splay_time:
                            description: Maximum delay after scheduled run time (random interval)
                            example: 5
                            type: integer
                          unexpected_unbound_var_values:
                            default: true
                            description: Allows multiple reports for configuration based on a multivalued variable
                            type: boolean
                    required:
                      - settings
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Settings
      summary: List all settings
      tags:
        - Settings
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/settings'
  "/settings/allowed_networks/{nodeId}":
    get:
      description: Get the list of allowed networks for a policy server
      operationId: getAllowedNetworks
      parameters:
        - $ref: "#/components/parameters/setting-allowed-networks"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getAllowedNetworks
                    type: string
                  data:
                    description: Information about the allowed_networks settings
                    properties:
                      settings:
                        properties:
                          allowed_networks:
                            description: Array of allowed networks
                            example:
                              - 162.168.1.0/24
                              - 192.168.2.0/24
                            items:
                              type: string
                            type: array
                        required:
                          - allowed_networks
                        type: object
                    required:
                      - settings
                    type: object
                  id:
                    description: Target policy server ID
                    example: root
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - id
                  - data
                type: object
          description: Allowed Networks
      summary: Get allowed networks for a policy server
      tags:
        - Settings
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/settings/allowed_networks/root'
    post:
      description: Set the list of allowed networks for a policy server
      operationId: setAllowedNetworks
      parameters:
        - $ref: "#/components/parameters/setting-allowed-networks"
      requestBody:
        content:
          application/json:
            schema:
              properties:
                value:
                  description: New value of the allowed networks
                  example: enforce
                  type: object
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - modifyAllowedNetworks
                    type: string
                  data:
                    description: Information about the allowed_networks settings
                    properties:
                      settings:
                        description: Array of allowed networks
                        example:
                          - 162.168.1.0/24
                          - 192.168.2.0/24
                        items:
                          type: string
                        type: array
                    required:
                      - settings
                    type: object
                  id:
                    description: The id of the modified node
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Allowed Networks
      summary: Set allowed networks for a policy server
      tags:
        - Settings
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --header  "Content-Type: application/json" --request POST https://rudder.example.com/rudder/api/latest/settings/allowed_networks/root --data '{"allowed_networks": ["192.168.1.0/24", "192.168.2.0/24"]}'
  "/settings/allowed_networks/{nodeId}/diff":
    post:
      description: Add or delete allowed networks for a policy server
      operationId: modifyAllowedNetworks
      parameters:
        - $ref: "#/components/parameters/setting-allowed-networks"
      requestBody:
        content:
          application/json:
            schema:
              properties:
                allowed_networks:
                  properties:
                    add:
                      description: List of networks to add to existing allowed networks for that server
                      example:
                        - 192.168.2.0/24
                        - 192.168.0.0/16
                      items:
                        type: string
                      type: array
                    delete:
                      description: List of networks to remove from existing allowed networks for that server
                      example:
                        - 162.168.1.0/24
                      items:
                        type: string
                      type: array
                  type: object
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - modifyDiffAllowedNetworks
                    type: string
                  data:
                    description: Information about the allowed_networks settings
                    properties:
                      settings:
                        description: Array of allowed networks
                        example:
                          - 192.168.2.0/24
                          - 192.168.0.0/16
                        items:
                          type: string
                        type: array
                    required:
                      - settings
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Allowed Networks
      summary: Modify allowed networks for a policy server
      tags:
        - Settings
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/settings/allowed_networks/root/diff --header 'Content-Type: application/json' --data '{"allowed_networks": { "delete": ["192.168.1.0/24"], "add": ["192.168.2.0/24"] } }'
  "/settings/{settingId}":
    get:
      description: Get the current value of a specific setting
      operationId: getSetting
      parameters:
        - $ref: "#/components/parameters/setting-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getSetting
                    type: string
                  data:
                    description: Information about the setting
                    properties:
                      settingId:
                        description: Id and value of the property
                        example: value
                        type: string
                    required:
                      - settings
                    type: object
                  id:
                    description: Id of the setting
                    example: global_policy_mode
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                  - id
                type: object
          description: Settings
      summary: Get the value of a setting
      tags:
        - Settings
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/settings/run_frequency'
    post:
      description: Set the current value of a specific setting
      operationId: modifySetting
      parameters:
        - $ref: "#/components/parameters/setting-id"
      requestBody:
        content:
          application/json:
            schema:
              properties:
                value:
                  description: New value of the setting
                  example: enforce
                  type: string
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - modifySetting
                    type: string
                  data:
                    description: Information about the setting
                    properties:
                      settingId:
                        description: Id and value of the property
                        example: value
                        type: string
                    required:
                      - settings
                    type: object
                  id:
                    description: Id of the setting
                    example: global_policy_mode
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                  - id
                type: object
          description: Settings
      summary: Set the value of a setting
      tags:
        - Settings
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/settings/global_policy_mode_overridable --data "value=true"'
  /status:
    get:
      description: |-
        An unauthenticated API to check if Rudder web application is up and running. Be careful: this API does not follow other Rudder's API convention: 
        - it is not versioned, so the path is just `/api/status`;
        - it returns a plain text message.
      operationId: none
      responses:
        "200":
          content:
            text/plain:
              schema:
                example: OK\\n
                type: string
          description: OK status message
      security: []
      summary: Check if Rudder is alive
      tags:
        - Status
      x-codeSamples:
        - lang: curl
          source: curl --request GET https://rudder.example.com/rudder/api/status
  "/system/archives/{archiveKind}":
    get:
      description: List configuration archives
      operationId: listArchives
      parameters:
        - $ref: "#/components/parameters/archive-kind"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The kind of the archive
                    enum:
                      - archiveFull
                      - archiveGroups
                      - archiveRules
                      - archiveDirectives
                      - archiveParameters
                    example: archiveFull
                    type: string
                  data:
                    properties:
                      full:
                        items:
                          properties:
                            commiter:
                              example: Rudder system account
                              type: string
                            gitCommit:
                              example: 546de1b211ecc5b7ca295abac2191bc6bb05d44e
                              format: hash
                              type: string
                            id:
                              example: 2019-09-17_16-06-15.255
                              type: string
                          required:
                            - commiter
                            - gitCommit
                            - id
                          type: object
                        type: array
                    required:
                      - full
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: List archives
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/system/archives/full'
    post:
      description: Create new archive of the given kind
      operationId: createArchive
      parameters:
        - $ref: "#/components/parameters/archive-kind"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The kind of the archive
                    enum:
                      - archiveFull
                      - archiveGroups
                      - archiveRules
                      - archiveDirectives
                      - archiveParameters
                    example: archiveFull
                    type: string
                  data:
                    properties:
                      full:
                        properties:
                          commiter:
                            example: Rudder system account
                            type: string
                          gitCommit:
                            example: 546de1b211ecc5b7ca295abac2191bc6bb05d44e
                            format: hash
                            type: string
                          id:
                            example: 2019-09-17_16-06-15.255
                            type: string
                        required:
                          - commiter
                          - gitCommit
                          - id
                        type: object
                    required:
                      - full
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: Create an archive
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/system/archives/full'
  "/system/archives/{archiveKind}/restore/{archiveRestoreKind}":
    post:
      description: Restore an archive of the given kind for the given moment
      operationId: restoreArchive
      parameters:
        - $ref: "#/components/parameters/archive-kind"
        - in: path
          name: archiveRestoreKind
          required: true
          schema:
            description: What archive to restore (latest archive, latest commit in configuration repository, or archive with ID as given by listArchive)
            enum:
              - latestArchive
              - latestCommit
              - archive ID
            example: latestCommit
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The kind of the archive
                    enum:
                      - restoreFullLatestArchive
                      - restoreGroupLatestArchive
                      - restoreRulesLatestArchive
                      - restoreDirectivesLatestArchive
                      - restoreParametersLatestArchive
                      - restoreFullLatestCommit
                      - restoreGroupLatestCommit
                      - restoreRulesLatestCommit
                      - restoreDirectivesLatestCommit
                      - restoreParametersLatestCommit
                      - archiveFullDateRestore
                      - archiveGroupDateRestore
                      - archiveRulesDateRestore
                      - archiveDirectivesDateRestore
                      - archiveParametersDateRestore
                    example: archirestoreFullLatestCommitveFull
                    type: string
                  data:
                    properties:
                      directive:
                        example: Started
                        type: string
                      full:
                        example: Started
                        type: string
                      groups:
                        example: Started
                        type: string
                      parameters:
                        example: Started
                        type: string
                      rules:
                        example: Started
                        type: string
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: Restore an archive
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/system/archives/full/restore/latestCommit'
  "/system/archives/{archiveKind}/zip/{commitId}":
    get:
      description: Get an archive of the given kind as a zip
      operationId: getZipArchive
      parameters:
        - $ref: "#/components/parameters/archive-kind"
        - description: commit ID of the archive to get as a ZIP file
          in: path
          name: commitId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
          description: Success
      summary: Get an archive as a ZIP
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/system/archives/full/zip/cad7d5f0729f06d22878b99869b8d43629e05a78 -o full-archive.zip'
  /system/healthcheck:
    get:
      description: Run and get the result of all checks
      operationId: getHealthcheckResult
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getHealthcheckResult
                    type: string
                  data:
                    items:
                      $ref: "#/components/schemas/check"
                    type: array
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Healthcheck information
      summary: Get healthcheck
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/system/healthcheck?prettify=true'"
  /system/info:
    get:
      description: Get information about the server version
      operationId: getSystemInfo
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getSystemInfo
                    type: string
                  data:
                    description: Information about the service
                    properties:
                      rudder:
                        properties:
                          build-time:
                            example: 2019-03-25T10:11:23Z
                            format: date
                            type: string
                          full-version:
                            example: 6.0.4
                            format: X.Y.Z
                            type: string
                          major-version:
                            example: "6.0"
                            format: X.Y
                            type: string
                        required:
                          - major-version
                          - full-version
                          - build-time
                    required:
                      - rudder
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Service information
      summary: Get server information
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/system/info'
  /system/maintenance/purgeSoftware:
    post:
      description: Start the software cleaning batch asynchronously.
      operationId: purgeSoftware
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - purgeSoftware
                    type: string
                  data:
                    items:
                      description: a success message.
                      type: string
                    type: array
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Purge Software
      summary: Trigger batch for cleaning unreferenced software
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/system/maintenance/purgeSoftware?prettify=true'
  /system/regenerate/policies:
    post:
      description: Trigger a full policy generation
      operationId: regeneratePolicies
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - regeneratePolicies
                    type: string
                  data:
                    properties:
                      policies:
                        enum:
                          - Started
                        type: string
                    required:
                      - policies
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: Trigger a new policy generation
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/system/regenerate/policies'"
  /system/reload:
    post:
      description: Reload both techniques and dynamic groups
      operationId: reloadAll
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - reloadAll
                    type: string
                  data:
                    properties:
                      groups:
                        enum:
                          - Started
                        type: string
                      techniques:
                        enum:
                          - Started
                        type: string
                    required:
                      - groups
                      - techniques
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Service reload
      summary: Reload both techniques and dynamic groups
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/system/reload'"
  /system/reload/groups:
    post:
      description: Reload dynamic groups
      operationId: reloadGroups
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - reloadGroups
                    type: string
                  data:
                    properties:
                      groups:
                        enum:
                          - Started
                        type: string
                    required:
                      - groups
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Service reload
      summary: Reload dynamic groups
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/system/reload/groups'
  /system/reload/techniques:
    post:
      description: Reload techniques from local technique library
      operationId: reloadTechniques
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - reloadTechniques
                    type: string
                  data:
                    properties:
                      techniques:
                        enum:
                          - Started
                        type: string
                    required:
                      - techniques
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Service reload
      summary: Reload techniques
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request POST 'https://rudder.example.com/rudder/api/latest/system/reload/techniques'
  /system/status:
    get:
      description: Get information about current server status
      operationId: getStatus
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getStatus
                    type: string
                  data:
                    description: Status of the service
                    properties:
                      global:
                        enum:
                          - OK
                        type: string
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Service status
      summary: Get server status
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/system/status'
  /system/update/policies:
    post:
      description: Update configuration policies if needed
      operationId: updatePolicies
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updatePolicies
                    type: string
                  data:
                    properties:
                      policies:
                        enum:
                          - Started
                        type: string
                    required:
                      - policies
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Success
      summary: Trigger update of policies
      tags:
        - System
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/system/update/policies'"
  "/systemUpdate/campaigns/{id}/history":
    get:
      description: Get a campaign result history
      operationId: getCampaignHistory
      parameters:
        - $ref: "#/components/parameters/campaign-id-path"
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/offset"
        - $ref: "#/components/parameters/before"
        - $ref: "#/components/parameters/after"
        - $ref: "#/components/parameters/order"
        - $ref: "#/components/parameters/asc"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getCampaignHistory
                    type: string
                  data:
                    properties:
                      campaignHistory:
                        items:
                          $ref: "#/components/schemas/campaign-event-result"
                        type: array
                    required:
                      - campaignHistory
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign result history result
      summary: Get a campaign result history
      tags:
        - 🧩 System update campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/system-update/campaigns/0076a379-f32d-4732-9e91-33ab219d8fde/history'
  "/systemUpdate/events/{id}/result":
    get:
      description: Get a campaign event result
      operationId: getCampaignEventResult
      parameters:
        - $ref: "#/components/parameters/campaign-event-id-path"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getCampaignEventResult
                    type: string
                  data:
                    properties:
                      eventResult:
                        items:
                          $ref: "#/components/schemas/campaign-event-result"
                        type: array
                    required:
                      - eventResult
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign result history result
      summary: Get a campaign event result
      tags:
        - 🧩 System update campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/system-update/events/0076a379-f32d-4732-9e91-33ab219d8fde/result/b81d08e8-03f8-46b7-9399-9bea54e41ec7'
  "/systemUpdate/events/{id}/result/{nodeId}":
    get:
      description: Get detailed campaign event result for a Node
      operationId: getCampaignEventResultForNode
      parameters:
        - $ref: "#/components/parameters/campaign-event-id-path"
        - $ref: "#/components/parameters/node-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getCampaignEventResultForNode
                    type: string
                  data:
                    properties:
                      noderesult:
                        items:
                          $ref: "#/components/schemas/campaign-event-node-result"
                        type: array
                    required:
                      - nodeResult
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Campaign event result for a node
      summary: Get detailed campaign event result for a Node
      tags:
        - 🧩 System update campaigns
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request GET 'https://rudder.example.com/rudder/api/latest/system-update/campaigns/0076a379-f32d-4732-9e91-33ab219d8fde/history'
  /techniques:
    get:
      description: List all technique with their versions
      operationId: listTechniques
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      techniques:
                        $ref: "#/components/schemas/techniques"
                    required:
                      - techniques
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Techniques information
      summary: List all techniques
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/techniques'
    put:
      description: Create a new technique in Rudder from a technique in the technique editor
      operationId: CreateTechnique
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/techniques"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      techniques:
                        properties:
                          technique:
                            $ref: "#/components/schemas/editor-technique"
                        required:
                          - technique
                        type: object
                    required:
                      - techniques
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Versions information
      summary: Create technique
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request PUT https://rudder.example.com/rudder/api/latest/techniques'
  /techniques/categories:
    get:
      description: Get all technique categories
      operationId: techniqueCategories
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      techniqueCategories:
                        $ref: "#/components/schemas/categories-tree"
                    required:
                      - techniqueCategories
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Categories information
      summary: List categories
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/techniques/categories'
  /techniques/reload:
    post:
      description: Reload all techniques metadata from file system
      operationId: techniques
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      techniques:
                        $ref: "#/components/schemas/techniques"
                    required:
                      - techniques
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Techniques information
      summary: Reload techniques
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/techniques/reload'
  /techniques/versions:
    get:
      description: List all techniques version
      operationId: listTechniquesVersions
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      techniques:
                        $ref: "#/components/schemas/techniques-versions"
                    required:
                      - techniques
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Versions information
      summary: List versions
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/techniques/versions'
  "/techniques/{techniqueId}":
    get:
      description: Get each Technique's versions with their metadata by ID
      operationId: getTechniqueAllVersion
      parameters:
        - $ref: "#/components/parameters/technique-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      techniques:
                        items:
                          properties:
                            JREditorTechnique:
                              $ref: "#/components/schemas/editor-technique"
                          required:
                            - JREditorTechnique
                          type: object
                        type: array
                    required:
                      - techniques
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Techniques information
      summary: Technique metadata by ID
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/techniques/foo'
  "/techniques/{techniqueId}/directives":
    get:
      description: List all directives based on all version of a technique
      operationId: listTechniquesDirectives
      parameters:
        - $ref: "#/components/parameters/technique-id"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniquesDirectives
                    type: string
                  data:
                    properties:
                      directives:
                        items:
                          $ref: "#/components/schemas/directive"
                        type: array
                    required:
                      - directives
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Techniques information
      summary: List all directives based on a technique
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/techniques/checkGenericFileContent/directives'
  "/techniques/{techniqueId}/{techniqueVersion}":
    delete:
      description: Delete a technique from technique editor
      operationId: deleteTechnique
      parameters:
        - $ref: "#/components/parameters/technique-id"
        - $ref: "#/components/parameters/technique-version"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      techniques:
                        properties:
                          id:
                            description: Deleted technique ID
                            example: foo
                            type: string
                          version:
                            description: Deleted technique version
                            example: 1
                            type: string
                        required:
                          - id
                          - version
                        type: object
                    required:
                      - resources
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Deletion information
      summary: Delete technique
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request DELETE https://rudder.example.com/rudder/api/latest/techniques/foo/1.0'
    get:
      description: Get Technique metadata
      operationId: getTechniqueAllVersionId
      parameters:
        - $ref: "#/components/parameters/technique-id"
        - $ref: "#/components/parameters/technique-version"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      techniques:
                        items:
                          properties:
                            JREditorTechnique:
                              $ref: "#/components/schemas/editor-technique"
                          required:
                            - JREditorTechnique
                          type: object
                        type: array
                    required:
                      - techniques
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Techniques information
      summary: Technique metadata by version and ID
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/techniques/foo/1.0'
    post:
      description: Update technique created with technique editor
      operationId: updateTechnique
      parameters:
        - $ref: "#/components/parameters/technique-id"
        - $ref: "#/components/parameters/technique-version"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/techniques"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      techniques:
                        properties:
                          technique:
                            $ref: "#/components/schemas/editor-technique"
                        required:
                          - technique
                        type: object
                    required:
                      - techniques
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Versions information
      summary: Update technique
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/techniques/bar/1.0'
  "/techniques/{techniqueId}/{techniqueVersion}/directives":
    get:
      description: List all directives based on a version of a technique
      operationId: listTechniqueVersionDirectives
      parameters:
        - $ref: "#/components/parameters/technique-id"
        - $ref: "#/components/parameters/technique-version"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniqueDirectives
                    type: string
                  data:
                    properties:
                      directives:
                        items:
                          $ref: "#/components/schemas/directive"
                        type: array
                    required:
                      - directives
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Techniques information
      summary: List all directives based on a version of a technique
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/techniques/checkGenericFileContent/6.0/directives'
  "/techniques/{techniqueId}/{techniqueVersion}/resources":
    get:
      description: Get currently deployed resources of a technique
      operationId: getTechniquesResources
      parameters:
        - $ref: "#/components/parameters/technique-id"
        - $ref: "#/components/parameters/technique-version"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      resources:
                        $ref: "#/components/schemas/techniques-resources"
                    required:
                      - resources
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Resources information
      summary: Technique's resources
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/techniques/bar/1.0/resources'
  "/techniques/{techniqueId}/{techniqueVersion}/revisions":
    get:
      description: Get revisions for given technique
      operationId: techniqueRevisions
      parameters:
        - $ref: "#/components/parameters/technique-id"
        - $ref: "#/components/parameters/technique-version"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listTechniques
                    type: string
                  data:
                    properties:
                      techniques:
                        $ref: "#/components/schemas/techniques-revisions"
                    required:
                      - techniques
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Versions information
      summary: Technique's revisions
      tags:
        - Techniques
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/techniques/foo/1.0/revisions'
  /usermanagement:
    post:
      description: Add a new user
      operationId: addUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/users"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - addUser
                    type: string
                  data:
                    properties:
                      addedUser:
                        properties:
                          password:
                            description: this password will be hashed for you if the `isPreHashed` is set on false
                            example: passwdWillBeStoredHashed
                            type: string
                          role:
                            description: defined user's permissions
                            items:
                              example: user
                              type: string
                            type: array
                          username:
                            example: John Doe
                            type: string
                        type: object
                    required:
                      - addedUser
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Updated
      summary: Add user
      tags:
        - 🧩 User Management
      x-codeSamples:
        - lang: curl
          source: |+
            add.json:

            {
            	"isPreHashed" : false,
            	"username" : "John Doe",
              "password" : "passwdWillBeStoredHashed",
            	"role" : ["user"]
            }

            curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/usermanagement --header "Content-type: application/json" --data @add.json

  /usermanagement/roles:
    get:
      description: Get all available roles and their rights
      operationId: getRole
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getRole
                    type: string
                  data:
                    items:
                      properties:
                        id:
                          description: Name of the role
                          enum:
                            - inventory
                            - compliance
                            - administrator
                            - etc
                          type: string
                        rights:
                          description: Role's rights
                          items:
                            enum:
                              - node_read
                              - userAccount_all
                            type: string
                          type: array
                      required:
                        - id
                        - rights
                      type: object
                    type: array
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Roles information
      summary: List all roles
      tags:
        - 🧩 User Management
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/usermanagement/roles'"
  "/usermanagement/update/{username}":
    post:
      description: Rename, change password (pre-hashed or not) and change permission of an user. If a parameter is empty, it will be ignored.
      operationId: updateUser
      parameters:
        - $ref: "#/components/parameters/username"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/users"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - updateUser
                    type: string
                  data:
                    properties:
                      updatedUser:
                        properties:
                          password:
                            description: New password given
                            example: Titi
                            type: string
                          role:
                            description: defined user's permissions
                            items:
                              example: user
                              type: string
                            type: array
                          username:
                            description: New Username
                            example: Titi
                            type: string
                        required:
                          - username
                          - password
                          - role
                        type: object
                    required:
                      - updatedUser
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Updated
      summary: Update user's infos
      tags:
        - 🧩 User Management
      x-codeSamples:
        - lang: curl
          source: |+
            update.json:

            {
            	"isPreHashed" : false,
            	"username"    : "",
              "password"    : "Safer password",
            	"role"        : ["user", "deployer", "inventory"]
            }

            curl --header "X-API-Token: yourToken" --request PUT https://rudder.example.com/rudder/api/latest/usermanagement/Toto --header "Content-type: application/json" --data @update.json

  /usermanagement/users:
    get:
      description: Get the list of all present users and their permissions
      operationId: getUserInfo
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - getUserInfo
                    type: string
                  data:
                    properties:
                      digest:
                        enum:
                          - BCRYPT
                          - SHA512
                          - SHA256
                          - SHA1
                          - MD5
                        type: string
                      users:
                        items:
                          $ref: "#/components/schemas/users"
                        type: array
                    required:
                      - digest
                      - users
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Users information
      summary: List all users
      tags:
        - 🧩 User Management
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request GET 'https://rudder.example.com/rudder/api/latest/usermanagement/users'"
  /usermanagement/users/reload:
    get:
      description: Reload the users from the file system, in the configuration file
      operationId: reloadUserConf
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - reloadUserConf
                    type: string
                  data:
                    properties:
                      reload:
                        properties:
                          status:
                            example: Done
                            type: string
                        required:
                          - status
                        type: object
                    required:
                      - reload
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Reload information
      summary: Reload user
      tags:
        - 🧩 User Management
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request POST 'https://rudder.example.com/rudder/api/latest/usermanagement/users/reload'"
  "/usermanagement/{username}":
    delete:
      description: Delete the user and his permissions
      operationId: deleteUser
      parameters:
        - $ref: "#/components/parameters/username"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - deleteUser
                    type: string
                  data:
                    properties:
                      deletedUser:
                        properties:
                          username:
                            description: Username of the deleted user
                            example: Toto
                            type: string
                        required:
                          - username
                        type: object
                    required:
                      - deletedUser
                    type: object
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Deleted user
      summary: Delete an user
      tags:
        - 🧩 User Management
      x-codeSamples:
        - lang: curl
          source: "curl --header \"X-API-Token: yourToken\" --request DELETE 'https://rudder.example.com/rudder/api/latest/usermanagement/Toto'"
  /users:
    get:
      description: List all validated and unvalidated users
      operationId: listUsers
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listUsers
                    type: string
                  data:
                    items:
                      $ref: "#/components/schemas/validated-user"
                    type: array
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: List users
      summary: List user
      tags:
        - 🧩 Change requests
      x-codeSamples:
        - lang: curl
          source: 'curl --header "X-API-Token: yourToken" --request GET https://rudder.example.com/rudder/api/latest/users'
  /validatedUsers:
    post:
      description: Add and remove user from validated users
      operationId: saveWorkflowUser
      requestBody:
        content:
          application/json:
            schema:
              properties:
                validatedUsers:
                  description: list of user to put in validated list
                  items:
                    example: John Do
                    type: string
                  type: array
              required:
                - validatedUsers
              type: object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - addUser
                    type: string
                  data:
                    $ref: "#/components/schemas/validated-user"
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Updated
      summary: Update validated user list
      tags:
        - 🧩 Change requests
      x-codeSamples:
        - lang: curl
          source: |+
            update.json:

            {
            	"validatedUsers": ["John Do", "Jane Doe"]
            }

            curl --header "X-API-Token: yourToken" --request POST https://rudder.example.com/rudder/api/latest/validatedUsers --header "Content-type: application/json" --data @update.json

  "/validatedUsers/{username}":
    delete:
      description: The user is again subject to workflow validation
      operationId: removeValidatedUser
      parameters:
        - $ref: "#/components/parameters/username"
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  action:
                    description: The id of the action
                    enum:
                      - listUsers
                    type: string
                  data:
                    description: the user removed from validated list
                    example: John Do
                    type: string
                  result:
                    description: Result of the request
                    enum:
                      - success
                      - error
                    type: string
                required:
                  - result
                  - action
                  - data
                type: object
          description: Removed user
      summary: Remove an user from validated user list
      tags:
        - 🧩 Change requests
      x-codeSamples:
        - lang: curl
          source: |
            curl --header "X-API-Token: yourToken" --request DELETE https://rudder.example.com/rudder/api/latest/validatedUsers/John Do
components:
  parameters:
    after:
      in: query
      name: after
      required: false
      schema:
        format: date
        type: string
    archive-kind:
      description: Type of archive to make
      in: path
      name: archiveKind
      required: true
      schema:
        enum:
          - full
          - groups
          - rules
          - directives
          - parameters
        example: full
        type: string
    asc:
      in: query
      name: asc
      required: false
      schema:
        enum:
          - asc
          - desc
        type: string
    before:
      in: query
      name: before
      required: false
      schema:
        format: date
        type: string
    campaign-event-id-path:
      description: Id of the campaign event
      in: path
      name: id
      required: true
      schema:
        example: 0076a379-f32d-4732-9e91-33ab219d8fde
        format: uuid
        type: string
    campaign-event-status:
      description: Status of the campaign events we want
      in: query
      name: state
      required: false
      schema:
        enum:
          - scheduled
          - running
          - finished
          - skipped
        example: enabled
        type: string
    campaign-id:
      description: id of the campaigns we want
      in: query
      name: campaignId
      required: false
      schema:
        enum:
          - system-update
          - software-update
        example: system-update
        type: string
    campaign-id-path:
      description: Id of the campaign
      in: path
      name: id
      required: true
      schema:
        example: 0076a379-f32d-4732-9e91-33ab219d8fde
        format: uuid
        type: string
    campaign-status:
      description: Status of the campaigns we want
      in: query
      name: status
      required: false
      schema:
        enum:
          - enabled
          - disabled
          - archived
        example: enabled
        type: string
    campaign-type:
      description: Type of the campaigns we want
      in: query
      name: campaignType
      required: false
      schema:
        enum:
          - system-update
          - software-update
        example: system-update
        type: string
    change-request-id:
      in: path
      name: changeRequestId
      required: true
      schema:
        description: Change request id
        example: 37
        type: integer
    compliance-level:
      description: Number of depth level of compliance objects to display (1:rules, 2:directives, 3:components, 4:nodes, 5:values, 6:reports)
      in: query
      name: level
      schema:
        default: 10
        example: 4
        type: integer
    compliance-percent-precision:
      description: Number of digits after comma in compliance percent figures
      in: query
      name: precision
      schema:
        default: 2
        example: 0
        type: integer
    cve-cve-id:
      description: Id of CVE you want to get from last CVE check
      in: query
      name: cveId
      required: false
      schema:
        type: string
    cve-cve-id-path:
      description: Id of the CVE
      in: path
      name: cveId
      required: true
      schema:
        example: CVE-2022-25235
        format: uuid
        type: string
    cve-group-id:
      description: Id of node groups you want to get from last CVE check
      in: query
      name: groupId
      required: false
      schema:
        type: string
    cve-node-id:
      description: Id of nodes you want to get from last CVE check
      in: query
      name: nodeId
      required: false
      schema:
        type: string
    cve-package:
      description: Name of packages you want to get from last CVE check
      in: query
      name: package
      required: false
      schema:
        type: string
    cve-severity:
      description: Severity of the CVE you want to get from last CVE check
      in: query
      name: severity
      required: false
      schema:
        enum:
          - critical
          - high
          - medium
          - low
          - none
          - unknown
        type: string
    datasource-id:
      description: Id of the data source
      in: path
      name: datasourceId
      required: true
      schema:
        example: test-data-source
        type: string
    directive-id:
      description: Id of the directive
      in: path
      name: directiveId
      required: true
      schema:
        example: 9a1773c9-0889-40b6-be89-f6504443ac1b
        format: uuid
        type: string
    group-category-id:
      in: path
      name: groupCategoryId
      required: true
      schema:
        description: Group category id
        example: e0a311fa-f7b2-4f9e-89a9-db517b9c6b90
        format: uuid
        type: string
    group-id:
      description: Id of the group
      in: path
      name: groupId
      required: true
      schema:
        example: 9a1773c9-0889-40b6-be89-f6504443ac1b
        format: uuid
        type: string
    include:
      description: |-
        Level of information to include from the node inventory. Some base levels are defined (**minimal**, **default**, **full**). You can add fields you want to a base level by adding them to the list, possible values are keys from json answer. If you don't provide a base level, they will be added to `default` level, so if you only want os details, use `minimal,os` as the value for this parameter.
        * **minimal** includes: `id`, `hostname` and `status`
        * **default** includes **minimal** plus `architectureDescription`, `description`, `ipAddresses`, `lastRunDate`, `lastInventoryDate`, `machine`, `os`, `managementTechnology`, `policyServerId`, `properties` (be careful! Only node own properties, if you also need inherited properties, look at the dedicated `/nodes/{id}/inheritedProperties` endpoint), `policyMode `, `ram` and `timezone`
        * **full** includes: **default** plus `accounts`, `bios`, `controllers`, `environmentVariables`, `fileSystems`, `managementTechnologyDetails`, `memories`, `networkInterfaces`, `ports`, `processes`, `processors`, `slots`, `software`, `sound`, `storage`, `videos` and `virtualMachines`
      in: query
      name: include
      schema:
        default: default
        example: minimal
        format: comma-separated list
        type: string
    limit:
      description: Max number of elements in response
      in: query
      name: limit
      required: false
      schema:
        type: integer
    node-composition:
      description: Boolean operator to use between each  `where` criteria.
      in: query
      name: composition
      schema:
        default: and
        enum:
          - and
          - or
        example: and
        type: string
    node-delete-mode:
      description: Deletion mode to use, either move to trash ('move', default) or erase ('erase')
      in: query
      name: mode
      required: false
      schema:
        default: move
        enum:
          - move
          - erase
        example: move
        type: string
    node-id:
      description: Id of the target node
      in: path
      name: nodeId
      required: true
      schema:
        example: 9a1773c9-0889-40b6-be89-f6504443ac1b
        format: uuid (or "root")
        type: string
    node-ids:
      description: Comma separated list of node Ids
      in: query
      name: ids
      required: true
      schema:
        default: default
        example: 8403353b-42c4-46f5-a08d-bc77a1a0bad9,root
        format: comma-separated list
        type: string
    node-query:
      content:
        application/json:
          schema:
            properties:
              composition:
                default: and
                description: Boolean operator to use between each  `where` criteria.
                enum:
                  - and
                  - or
                example: and
                type: string
              select:
                default: node
                description: What kind of data we want to include. Here we can get policy servers/relay by setting `nodeAndPolicyServer`. Only used if `where` is defined.
                type: string
              where:
                description: List of criteria
                items:
                  properties:
                    attribute:
                      description: Attribute to compare
                      example: OS
                      type: string
                    comparator:
                      description: Comparator to use
                      example: eq
                      type: string
                    objectType:
                      description: Type of the object
                      example: node
                      type: string
                    value:
                      description: Value to compare against
                      example: Linux
                      type: string
                  type: object
                type: array
            type: object
      description: The criterion you want to find for your nodes. Replaces the `where`, `composition` and `select` parameters in a single parameter.
      in: query
      name: query
    node-select:
      description: What kind of data we want to include. Here we can get policy servers/relay by setting `nodeAndPolicyServer`. Only used if `where` is defined.
      in: query
      name: select
      schema:
        default: node
        type: string
    node-where:
      content:
        application/json:
          schema:
            description: List of criteria
            items:
              properties:
                attribute:
                  description: Attribute to compare
                  example: OS
                  type: string
                comparator:
                  description: Comparator to use
                  example: eq
                  type: string
                objectType:
                  description: Type of the object
                  example: node
                  type: string
                value:
                  description: Value to compare against
                  example: Linux
                  type: string
              type: object
            type: array
      description: The criterion you want to find for your nodes
      in: query
      name: where
    offset:
      description: Offset of data in response (skip X elements)
      in: query
      name: offset
      required: false
      schema:
        type: integer
    order:
      in: query
      name: order
      required: false
      schema:
        type: string
    parameter-id:
      description: Id of the parameter to manage
      in: path
      name: parameterId
      required: true
      schema:
        example: rudder_file_edit_header
        type: string
    rule-category-id:
      in: path
      name: ruleCategoryId
      required: true
      schema:
        description: Rule category id
        example: e0a311fa-f7b2-4f9e-89a9-db517b9c6b90
        format: uuid
        type: string
    rule-id:
      description: Id of the target rule
      in: path
      name: ruleId
      required: true
      schema:
        example: 9a1773c9-0889-40b6-be89-f6504443ac1b
        format: uuid
        type: string
    secret-name:
      description: Unique name of the secret
      in: path
      name: name
      required: true
      schema:
        type: string
    setting-allowed-networks:
      description: Policy server ID for which you want to manage allowed networks.
      in: path
      name: nodeId
      required: true
      schema:
        example: 9a1773c9-0889-40b6-be89-f6504443ac1b
        format: uuid (or "root")
        type: string
    setting-id:
      description: Id of the setting to set
      in: path
      name: settingId
      required: true
      schema:
        example: global_policy_mode
        type: string
    technique-id:
      description: Technique ID
      in: path
      name: techniqueId
      required: true
      schema:
        description: Technique ID
        example: userManagement
        type: string
    technique-version:
      description: Technique version
      in: path
      name: techniqueVersion
      required: true
      schema:
        description: Technique version
        example: "6.0"
        type: string
    username:
      description: Username of an user (unique)
      in: path
      name: username
      required: true
      schema:
        example: JaneDoe
        type: string
  responses:
    agent-output:
      content:
        text/plain:
          schema:
            example: |-
              Start execution with config [20200218-112602-11ce4f64]
              Hostname        M| State         Technique                 Component                 Key                Message 192.168.210.5   E| compliant     Common                    ncf Initialization                           Configuration library initialization was correct 192.168.210.5   E| compliant     Common                    Update                                       Policy and configuration library are already up to date. No action required. [...]
              ## Summary ##################################################################### 90 components verified in 15 directives
                => 62 components in Enforce mode
                    -> 48 compliant
                    -> 13 not-applicable
                    -> 1 error
                => 28 components in Audit mode
                    -> 15 compliant
                    -> 3 not-applicable
                    -> 10 non-compliant
              Execution time: 8.89s ################################################################################
            type: string
      description: Agent output
  schemas:
    agent-key:
      description: Information about agent key or certificate
      properties:
        status:
          description: Certification status of the security token (reset to `undefined` to trust a new certificate). If `certified`, inventory signature check will be enforced
          enum:
            - certified
            - undefined
          type: string
        value:
          description: Certificate (or public key for <6.0 agents) used by the agent. Be careful write a "\n" after header line and before footer line, JSON does not keep formatting in string.
          example: |-
            -----BEGIN CERTIFICATE-----
            MIIFqDCC[...]3tALNn
            -----END CERTIFICATE-----
          format: PEM
          type: string
      required:
        - value
      type: object
    api-endpoints:
      items:
        description: objects with two fields, the first one has the endpoint name as key and its description as value, the second one has HTTP verb to use (GET, POST PUT, DELETE) as key and the supported version an API path for value.
        example: "{ 'listAcceptedNodes': 'List all accepted nodes with configurable details level', 'GET': '[8,9,10,11,12,13] /nodes' }"
        properties:
          endpointName:
            description: The endpoint name for key and its description for value
            type: string
          httpVerb:
            format: The HTTP verb for the endpoint for key and the supported version and API path for value
        type: object
      type: array
    api-version:
      properties:
        all:
          description: List of API version and status
          items:
            properties:
              status:
                description: Status of the API, either maintained or deprecated
                example: maintained
                format: string
                required:
                  - maintained
                  - deprecated
              version:
                description: API Version
                example: 12
                type: integer
            required:
              - version
              - status
            type: object
          type: array
        latest:
          description: Latest API version available
          example: 12
          type: integer
      type: object
    api-versions:
      properties:
        all:
          description: List of API version and status
          items:
            $ref: "#/components/schemas/api-version"
          type: array
        latest:
          description: Latest API version available
          example: 12
          type: integer
      type: object
    branding-conf:
      properties:
        barColor:
          $ref: "#/components/schemas/color"
        displayBar:
          description: Whether header bar is displayed or not
          type: boolean
        displayBarLogin:
          description: Whether header bar is displayed in login page or not
          type: boolean
        displayLabel:
          description: Whether header bar's label is displayed or not
          type: boolean
        displayMotd:
          description: Whether the message of the day is displayed in login page or not
          type: boolean
        labelColor:
          $ref: "#/components/schemas/color"
        labelText:
          description: The header bar's label title
          example: Production
          type: string
        motd:
          description: Message of the day in login page
          example: "Welcome, please sign in:"
          type: string
        smallLogo:
          $ref: "#/components/schemas/logo"
        wideLogo:
          $ref: "#/components/schemas/logo"
      required:
        - displayBar
        - displayLabel
        - labelText
        - barColor
        - labelColor
        - wideLogo
        - smallLogo
        - displayBarLogin
        - displayMotd
        - motd
      type: object
    campaign-details:
      properties:
        campaignType:
          description: Type of campaign (with version determine what kind of campaign you handle and the details object)
          example: system-update
          type: string
        details:
          oneOf:
            - $ref: "#/components/schemas/campaign-system-update"
            - $ref: "#/components/schemas/campaign-software-update"
        info:
          description: common data about campaign
          properties:
            description:
              description: Campaign description
              example: ""
              type: string
            id:
              description: Campaign id
              example: 0076a379-f32d-4732-9e91-33ab219d8fde
              format: uuid
              type: string
            name:
              description: Campaign name
              example: Update all systems
              type: string
            schedule:
              oneOf:
                - $ref: "#/components/schemas/campaign-schedule-weekly"
                - $ref: "#/components/schemas/campaign-schedule-oneshot"
                - $ref: "#/components/schemas/campaign-schedule-monthly"
            status:
              oneOf:
                - $ref: "#/components/schemas/campaign-status-enabled"
                - $ref: "#/components/schemas/campaign-status-disabled"
                - $ref: "#/components/schemas/campaign-status-archived"
          type: object
        version:
          description: Version of campaign (with type determine what kind of campaign you handle and the details object)
          example: 2
          type: integer
      type: object
    campaign-event-details:
      properties:
        campaignId:
          description: Id of the campaign for this event
          type: string
        campaignType:
          description: Type of campaign
          example: system-update
          type: string
        end:
          description: Campaign event end date
          example: ""
          type: string
        id:
          description: Campaign event id
          example: 0076a379-f32d-4732-9e91-33ab219d8fde
          format: uuid
          type: string
        name:
          description: Campaign event name
          example: "Update all systems #1"
          type: string
        start:
          description: Campaign event start date
          example: ""
          type: string
        status:
          properties:
            reason:
              description: used only for skipped status
              type: string
            value:
              enum:
                - scheduled
                - running
                - finished
                - skipped
              type: string
          type: object
      type: object
    campaign-event-node-result:
      properties:
        id:
          description: Campaign event id
          example: 0076a379-f32d-4732-9e91-33ab219d8fde
          format: uuid
          type: string
        nodes:
          items:
            properties:
              date:
                format: date
                type: string
              nodeId:
                description: Node id
                example: b81d08e8-03f8-46b7-9399-9bea54e41ec7
                type: string
              result:
                properties:
                  errors:
                    description: campaign standard errors
                    type: string
                  output:
                    description: campaign standard output
                    type: string
                  software-updated:
                    description: List of updated software
                    items:
                      properties:
                        after:
                          description: Version of the software after update
                          type: string
                        before:
                          description: Version of the software before update
                          type: string
                        name:
                          description: Name of the software updated
                          type: string
                      type: object
                    type: array
                  status:
                    description: Campaign result
                    enum:
                      - success
                      - error
                      - scheduled
                      - missing
                    type: string
                type: object
            type: object
          type: array
      type: object
    campaign-event-result:
      properties:
        id:
          description: Campaign event id
          example: 0076a379-f32d-4732-9e91-33ab219d8fde
          format: uuid
          type: string
        nodes:
          description: Campaign result for all Nodes
          items:
            description: Campaign result for a Node
            properties:
              date:
                format: date
                type: string
              nbPackages:
                description: Number of software updated
                example: "42"
                type: integer
              nodeId:
                description: Node id
                example: b81d08e8-03f8-46b7-9399-9bea54e41ec7
                type: string
              status:
                description: Campaign status
                enum:
                  - success
                  - error
                  - scheduled
                  - missing
                type: string
            type: object
          type: array
      type: object
    campaign-schedule-monthly:
      properties:
        end:
          description: Date when the campaign should end
          properties:
            day:
              description: Day of the week the campaign should end
              format: "[1-7]"
              type: integer
            hour:
              description: Hour of the day the campaign should end
              format: "[0-23]"
              type: integer
            minute:
              description: Minute of the hour the campaign should end
              format: "[0-59]"
              type: integer
          type: object
        position:
          description: Week during the month in which our campaign start, 1/2/3 means first/second/last, -1/-2 means Last/secondLast
          format: -2, -1, 1, 2, 3
          type: integer
        start:
          description: Date when the campaign should start
          properties:
            day:
              description: Day of the week the campaign should start
              format: "[1-7]"
              type: integer
            hour:
              description: Hour of the day the campaign should start
              format: "[0-23]"
              type: integer
            minute:
              description: Minute of the hour the campaign should start
              format: "[0-59]"
              type: integer
          type: object
        type:
          format: monthly
          type: string
      type: object
    campaign-schedule-oneshot:
      properties:
        end:
          description: Date when the campaign should end
          format: rfc3339
          type: string
        start:
          description: Date when the campaign should start
          format: rfc3339
          type: string
        type:
          format: one-shot
          type: string
      type: object
    campaign-schedule-weekly:
      properties:
        end:
          description: Date when the campaign should end
          properties:
            day:
              description: Day of the week the campaign should end
              example: 3
              format: "[1-7]"
              type: integer
            hour:
              description: Hour of the day the campaign should end
              example: 3
              format: "[0-23]"
              type: integer
            minute:
              description: Minute of the hour the campaign should end
              example: 42
              format: "[0-59]"
              type: integer
          type: object
        start:
          description: Date when the campaign should start
          properties:
            day:
              description: Day of the week the campaign should start
              example: 2
              format: "[1-7]"
              type: integer
            hour:
              description: Hour of the day the campaign should start
              example: 17
              format: "[0-23]"
              type: integer
            minute:
              description: Minute of the hour the campaign should start
              example: 22
              format: "[0-59]"
              type: integer
          type: object
        type:
          format: weekly
          type: string
      type: object
    campaign-software-update:
      description: Software update campaign details (type software-update, version 1)
      properties:
        reboot:
          description: Define the behavior after update
          enum:
            - as-needed
            - disabled
            - always
            - services-only
          type: string
        softwareUpdate:
          description: List of all software to update
          items:
            properties:
              arch:
                description: Architecture of the packkage to update
                example: x64
                type: string
              name:
                description: Name of the package  to update
                example: htop
                type: string
              version:
                description: Target version of the package to update to
                example: "49.3"
                type: string
            type: object
          type: array
        targets:
          description: List of all  groups of node to target the campaign
          items:
            $ref: "#/components/schemas/rule-targets"
          type: array
    campaign-status-archived:
      description: Campaign status
      properties:
        date:
          description: Date when the campaign was archived
          format: rfc3339
          type: string
        reason:
          description: Reason of to archive this campaign
          type: string
        value:
          format: archived
          type: string
      type: object
    campaign-status-disabled:
      description: Campaign status
      properties:
        reason:
          description: Reason of to disable this campaign
          type: string
        value:
          format: disabled
          type: string
      type: object
    campaign-status-enabled:
      description: Campaign status
      properties:
        value:
          format: enabled
          type: string
      type: object
    campaign-system-update:
      description: System update campaign details (type system-update, version 2)
      properties:
        reboot:
          description: Define the behavior after update
          enum:
            - as-needed
            - disabled
            - always
            - services-only
          type: string
        targets:
          description: List of all  groups of node to target the campaign
          items:
            $ref: "#/components/schemas/rule-targets"
          type: array
      type: object
    categories-tree:
      properties:
        id:
          description: Category ID
          example: /
          type: string
        name:
          description: Category's name
          example: /
          type: string
        path:
          description: Category's path
          example: ""
          type: string
        subcategories:
          description: List of sub categories
          items:
            $ref: "#/components/schemas/technique-category"
          type: array
      required:
        - name
        - path
        - id
        - subcategories
      type: object
    change-request:
      description: Content of the change request
      properties:
        acceptable:
          example: true
          type: boolean
        changes:
          properties:
            rules:
              items:
                properties:
                  action:
                    example: modify Rule
                    type: string
                type: object
              type: array
          type: object
        created by:
          example: Matthieu C.
          type: string
        description:
          type: string
        id:
          example: 42
          type: integer
        name:
          example: Remove unused security policy
          type: string
        status:
          enum:
            - Deployed
            - Pending deployment
            - Cancelled
            - Pending validation
            - Open
          type: string
      type: object
    check:
      properties:
        msg:
          description: Message about the check
          example: Only 2GB of RAM left
          type: string
        name:
          description: Name of the check
          example: RAM available
          type: string
        status:
          description: The severity status of the check
          enum:
            - Critical
            - Warning
            - Ok
          type: string
      required:
        - name
        - msg
        - status
      type: object
    color:
      properties:
        alpha:
          description: percentage of opacity
          example: 0.5
          maximum: 1
          minimum: 0
          type: number
        blue:
          description: percentage of blue component
          example: 0.235
          maximum: 1
          minimum: 0
          type: number
        green:
          description: percentage of green component
          example: 0.01
          maximum: 1
          minimum: 0
          type: number
        red:
          description: percentage of red component
          example: 0.2
          maximum: 1
          minimum: 0
          type: number
      required:
        - red
        - blue
        - green
        - alpha
      type: object
    compliance-directive-id:
      properties:
        action:
          description: The id of the action
          enum:
            - getDirectiveComplianceId
          type: string
        data:
          properties:
            directiveCompliance:
              properties:
                compliance:
                  description: Directive compliance level
                  example: 83.34
                  format: float
                  type: number
                complianceDetails:
                  properties:
                    error:
                      example: 1.32
                      format: float
                      type: number
                    noReport:
                      example: 7.45
                      format: float
                      type: number
                    successAlreadyOK:
                      example: 66.68
                      format: float
                      type: number
                    successNotApplicable:
                      example: 16.66
                      format: float
                      type: number
                    successRepaired:
                      example: 2.63
                      format: float
                      type: number
                    unexpectedMissingComponent:
                      example: 2.63
                      format: float
                      type: number
                    unexpectedUnknownComponent:
                      example: 2.63
                      format: float
                      type: number
                  type: object
                id:
                  description: id of the directive
                  example: 9a1773c9-0889-40b6-be89-f6504443ac1b
                  format: uuid
                  type: string
                mode:
                  enum:
                    - full-compliance
                    - changes-only
                    - reports-disabled
                  type: string
                name:
                  description: Name of the directive
                  example: test directive
                  type: string
                nodes:
                  $ref: "#/components/schemas/directive-node-compliance"
                rules:
                  $ref: "#/components/schemas/directive-rule-compliance"
              required:
                - id
                - name
                - mode
                - compliance
                - complianceDetails
                - rules
                - nodes
              type: object
          required:
            - directiveCompliance
          type: object
        result:
          description: Result of the request
          enum:
            - success
            - error
          example: success
          type: string
      required:
        - result
        - action
        - data
      type: object
    compliance-directive-id-csv:
      example: Rule, Component, Node, Value, Status, Message\n Global configuration for all nodes, MOTD Configuration, server.rudder.local, None, successAlreadyOK, The MOTD file was correct\n Global configuration for all nodes, MOTD Configuration, agent1.rudder.local, None, successAlreadyOK, The MOTD file was correct\n Test user, Users, server.rudder.local, toto, successAlreadyOK, The user toto ( Without any defined full name ) is already present on the system\n Test user, Password, server.rudder.local, toto, successAlreadyOK, The user toto ( Without any defined full name ) password change is not required\n Test user, Home directory, server.rudder.local, toto, successNotApplicable, The user toto doesn't need to have its home directory checked"\n
      format: binary
      type: string
    cveCheck:
      properties:
        cveId:
          description: CVE id
          example: CVE-2019-5953
          format: CVE id
          type: string
        nodes:
          description: Id of Nodes affected by this CVE
          items:
            description: Node id
            type: string
          type: array
        packages:
          description: Packages affected by this CVE
          items:
            description: Packages affected by this CVE
            properties:
              name:
                description: Name of the package affected
                example: libssh2-1
                type: string
              version:
                description: Version of the package affected
                example: 1.7.0-1
                type: string
            type: object
          type: array
        score:
          description: CVE score
          properties:
            severity:
              example: Critical
              type: string
            value:
              example: 9.5
              format: A score between 0 and 10 as a float
              type: string
          type: object
      type: object
    cveDetails:
      properties:
        cvssv2:
          description: CVSS V2 of the CVE
          properties:
            baseScore:
              description: CVSS V2 base score
              type: integer
            vector:
              description: CVSS V2 vector
              type: string
          type: object
        cvssv3:
          description: CVSS V3 of the CVE
          properties:
            baseScore:
              description: CVSS V3 base score
              example: 9.8
              format: float (0 to 10)
              type: number
            baseSeverity:
              description: CVSS V3 Severity
              enum:
                - critical
                - high
                - medium
                - low
                - none
              type: string
            vector:
              description: CVSS V3 vector
              example: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
              type: string
          type: object
        cweIds:
          description: List of CWE (Common Weakness Enumeration) of the CVE
          items:
            description: id of a CWE
            example: CWE-119
            type: string
          type: array
        description:
          description: CVE Description
          example: Buffer overflow in GNU Wget 1.20.1 and earlier allows remote attackers to cause a denial-of-service (DoS) or may execute an arbitrary code via unspecified vectors.
          type: string
        id:
          description: CVE id
          example: CVE-2019-5953
          format: cve id
          type: string
        lastModifiedDate:
          description: last Date the CVE was modified
          example: 2019-07-03 01:15:00+02
          format: date
          type: string
        publishedDate:
          description: Date the CVE was published
          example: 2019-05-17 18:29:00+02
          format: date
          type: string
      type: object
    datasource:
      properties:
        description:
          description: Description of the goal of the data source to create.
          example: Synchronize example data from the CMDB
          type: string
        enabled:
          description: Enable or disable data source.
          example: true
          type: boolean
        id:
          description: Unique identifier of the data source to create.
          example: test-data-source
          type: string
        name:
          description: The human readable name of the data source to create.
          example: Test data source
          type: string
        runParameters:
          description: Parameters to configure when the data source is fetched to update node properties.
          properties:
            onGeneration:
              description: Trigger a fetch at the beginning of a policy generation
              example: true
              type: boolean
            onNewNode:
              description: Trigger a fetch when a new node is accepted, for that node
              example: true
              type: boolean
            schedule:
              description: Configure if data source should be fetch periodically
              properties:
                type:
                  description: "`scheduled` enables periodic update, `notscheduled` disables them"
                  enum:
                    - scheduled
                    - notscheduled
                  example: scheduled
                  type: string
              type: object
          type: object
        type:
          description: Define and configure data source type.
          properties:
            name:
              description: Data source type name
              enum:
                - HTTP
              example: HTTP
              type: string
            parameters:
              description: You can use Rudder variable expansion (`${rudder.node`, `${node.properties...}`)
              properties:
                checkSsl:
                  description: Check SSL certificate validity for https. Must be set to false for self-signed certificate
                  example: true
                  type: boolean
                headers:
                  description: Represent HTTP headers for the query. Rudder expansion available.
                  items:
                    properties:
                      name:
                        description: Name of the header
                        example: X-API-Key
                        type: string
                      value:
                        description: Value of the header
                        example: 05ce8e3d9df6
                        type: string
                    type: object
                  type: array
                path:
                  description: JSON path (as defined in [the specification](https://github.com/jayway/JsonPath/), without the leading `$.`) to find the interesting sub-json or string/number/boolean value in the answer. Let empty to use the whole answer as value.
                  type: string
                requestMethod:
                  description: HTTP method to use to contact the URL.
                  enum:
                    - GET
                    - POST
                  example: GET
                  type: string
                requestMode:
                  description: Configure the strategy used to query the HTTP data source.
                  properties:
                    name:
                      description: Node by node strategy
                      enum:
                        - byNode
                      example: byNode
                      type: string
                  type: object
                requestTimeout:
                  description: Timeout in seconds for each HTTP request
                  example: 10
                  type: integer
                url:
                  description: URL to contact. Rudder expansion available.
                  example: http://jsonplaceholder.typicode.com/users/1
                  type: string
              type: object
          type: object
        updateTimeout:
          description: Duration in seconds before aborting data source update. The main goal is to prevent never ending requests. If a periodicity if configured, you should set that timeout at a lower value.
          example: 30
          type: integer
      type: object
    directive:
      properties:
        displayName:
          description: Human readable name of the directive
          example: 91252ea2-feb2-412d-8599-c6945fee02c4
          type: string
        enabled:
          description: Is the directive enabled
          example: true
          type: boolean
        id:
          description: Directive id
          example: 91252ea2-feb2-412d-8599-c6945fee02c4
          format: uuid
          type: string
        longDescription:
          description: Description of the technique (rendered as markdown)
          example: |-
            # Documentation
            * [Ticket link](https://tickets.example.com/issues/3456)
          format: markdown
          type: string
        parameters:
          description: Directive parameters (depends on the source technique)
          example:
            name: sections
            sections:
              - section:
                  name: File to manage
                  sections:
                    - section:
                        name: File
                        vars:
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_PATH
                              value: /root/test
                    - section:
                        name: File cleaning options
                        vars:
                          - var:
                              name: FILE_AND_FOLDER_DELETION_DAYS
                              value: "0"
                          - var:
                              name: FILE_AND_FOLDER_DELETION_OPTION
                              value: none
                          - var:
                              name: FILE_AND_FOLDER_DELETION_PATTERN
                              value: .*
                    - section:
                        name: Permissions
                        vars:
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_CHECK_PERMISSIONS
                              value: "false"
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_GROUP
                              value: ""
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_OWNER
                              value: ""
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_PERM
                              value: "000"
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_RECURSIVE
                              value: "1"
                    - section:
                        name: Post-modification hook
                        vars:
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_POST_HOOK_COMMAND
                              value: ""
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_POST_HOOK_RUN
                              value: "false"
                  vars:
                    - var:
                        name: FILE_AND_FOLDER_MANAGEMENT_ACTION
                        value: copy
                    - var:
                        name: FILE_AND_FOLDER_MANAGEMENT_SOURCE
                        value: /vagrant/node.sh
                    - var:
                        name: FILE_AND_FOLDER_MANAGEMENT_SYMLINK_ENFORCE
                        value: "false"
          type: object
        policyMode:
          description: Policy mode of the directive
          enum:
            - enforce
            - audit
          example: audit
          type: string
        priority:
          description: Directive priority. `0` has highest priority.
          example: 5
          maximum: 10
          minimum: 0
          type: integer
        shortDescription:
          description: One line directive description
          example: 91252ea2-feb2-412d-8599-c6945fee02c4
          type: string
        system:
          description: If true it is an internal Rudder directive
          example: false
          type: boolean
        tags:
          items:
            example:
              customer: MyCompany
            properties:
              name:
                description: Value of the `name` key
                example: value
                type: string
            type: object
          type: array
        techniqueName:
          description: Directive id
          example: userManagement
          type: string
        techniqueVersion:
          description: Directive id
          example: "8.0"
          type: string
      type: object
    directive-new:
      properties:
        displayName:
          description: Human readable name of the directive
          example: 91252ea2-feb2-412d-8599-c6945fee02c4
          type: string
        enabled:
          description: Is the directive enabled
          example: true
          type: boolean
        id:
          description: Directive id
          example: 91252ea2-feb2-412d-8599-c6945fee02c4
          format: uuid
          type: string
        longDescription:
          description: Description of the technique (rendered as markdown)
          example: |-
            # Documentation
            * [Ticket link](https://tickets.example.com/issues/3456)
          format: markdown
          type: string
        parameters:
          description: Directive parameters (depends on the source technique)
          example:
            name: sections
            sections:
              - section:
                  name: File to manage
                  sections:
                    - section:
                        name: File
                        vars:
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_PATH
                              value: /root/test
                    - section:
                        name: File cleaning options
                        vars:
                          - var:
                              name: FILE_AND_FOLDER_DELETION_DAYS
                              value: "0"
                          - var:
                              name: FILE_AND_FOLDER_DELETION_OPTION
                              value: none
                          - var:
                              name: FILE_AND_FOLDER_DELETION_PATTERN
                              value: .*
                    - section:
                        name: Permissions
                        vars:
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_CHECK_PERMISSIONS
                              value: "false"
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_GROUP
                              value: ""
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_OWNER
                              value: ""
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_PERM
                              value: "000"
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_RECURSIVE
                              value: "1"
                    - section:
                        name: Post-modification hook
                        vars:
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_POST_HOOK_COMMAND
                              value: ""
                          - var:
                              name: FILE_AND_FOLDER_MANAGEMENT_POST_HOOK_RUN
                              value: "false"
                  vars:
                    - var:
                        name: FILE_AND_FOLDER_MANAGEMENT_ACTION
                        value: copy
                    - var:
                        name: FILE_AND_FOLDER_MANAGEMENT_SOURCE
                        value: /vagrant/node.sh
                    - var:
                        name: FILE_AND_FOLDER_MANAGEMENT_SYMLINK_ENFORCE
                        value: "false"
          type: object
        priority:
          description: Directive priority. `0` has highest priority.
          example: 5
          maximum: 10
          minimum: 0
          type: integer
        shortDescription:
          description: One line directive description
          example: 91252ea2-feb2-412d-8599-c6945fee02c4
          type: string
        source:
          description: The id of the directive the clone will be based onto. If this parameter if provided,  the new directive will be a clone of this source. Other value will override values from the source.
          example: b9f6d98a-28bc-4d80-90f7-d2f14269e215
          format: uuid
          type: string
        system:
          description: If true it is an internal Rudder directive
          example: false
          type: boolean
        tags:
          items:
            example:
              customer: MyCompany
            properties:
              name:
                description: Value of the `name` key
                example: value
                type: string
            type: object
          type: array
        techniqueName:
          description: Directive id
          example: userManagement
          type: string
        techniqueVersion:
          description: Directive id
          example: "8.0"
          type: string
      type: object
    directive-node-compliance:
      properties:
        compliance:
          description: Directive compliance level
          example: 83.34
          format: float
          type: number
        complianceDetails:
          properties:
            error:
              example: 0
              format: float
              type: number
            noReport:
              example: 0
              format: float
              type: number
            successAlreadyOK:
              example: 100
              format: float
              type: number
            successNotApplicable:
              example: 0
              format: float
              type: number
            successRepaired:
              example: 0
              format: float
              type: number
            unexpectedMissingComponent:
              example: 0
              format: float
              type: number
            unexpectedUnknownComponent:
              example: 0
              format: float
              type: number
          type: object
        id:
          description: id of the node
          example: b6ded8e2-2709-4986-973d-8e5522d20718
          format: uuid
          type: string
        name:
          description: Name of the node
          example: agent1.rudder.local
          type: string
        rules:
          $ref: "#/components/schemas/rule-compliance-component"
      required:
        - id
        - name
        - compliance
        - complianceDetails
        - rules
      type: object
    directive-rule-compliance:
      properties:
        compliance:
          description: Directive compliance level
          example: 83.34
          format: float
          type: number
        complianceDetails:
          properties:
            error:
              example: 0
              format: float
              type: number
            noReport:
              example: 0
              format: float
              type: number
            successAlreadyOK:
              example: 100
              format: float
              type: number
            successNotApplicable:
              example: 0
              format: float
              type: number
            successRepaired:
              example: 0
              format: float
              type: number
            unexpectedMissingComponent:
              example: 0
              format: float
              type: number
            unexpectedUnknownComponent:
              example: 0
              format: float
              type: number
          type: object
        components:
          items:
            properties:
              compliance:
                description: Directive compliance level
                example: 83.34
                format: float
                type: number
              complianceDetails:
                properties:
                  error:
                    example: 0
                    format: float
                    type: number
                  noReport:
                    example: 0
                    format: float
                    type: number
                  successAlreadyOK:
                    example: 100
                    format: float
                    type: number
                  successNotApplicable:
                    example: 0
                    format: float
                    type: number
                  successRepaired:
                    example: 0
                    format: float
                    type: number
                  unexpectedMissingComponent:
                    example: 0
                    format: float
                    type: number
                  unexpectedUnknownComponent:
                    example: 0
                    format: float
                    type: number
                type: object
              name:
                description: Name of the component
                example: MOTD Configuration
                type: string
              nodes:
                $ref: "#/components/schemas/node-compliance-component"
            required:
              - name
              - compliance
              - complianceDetails
              - nodes
            type: object
          type: array
        id:
          description: id of the rule
          example: 32377fd7-02fd-43d0-aab7-28460a91347b
          format: uuid
          type: string
        mode:
          enum:
            - full-compliance
            - changes-only
            - reports-disabled
          type: string
        name:
          description: Name of the rule
          example: Global configuration for all nodes
          type: string
      required:
        - id
        - name
        - compliance
        - complianceDetails
        - nodes
      type: object
    editor-technique:
      properties:
        calls:
          description: Method and blocks contained by this technique
          items:
            oneOf:
              - $ref: "#/components/schemas/technique-method-call"
              - $ref: "#/components/schemas/technique-block"
          type: array
        category:
          description: category of this technique
          example: user_techniques
          type: string
        description:
          description: description of this technique
          example: This techniques apply generic security policies
          type: string
        id:
          description: Technique id
          example: security-policy
          type: string
        name:
          description: Technique name
          example: Security Policy
          type: string
        parameters:
          description: Parameters for this technique
          items:
            $ref: "#/components/schemas/technique-parameter"
          type: array
        resources:
          description: Resources for this technique
          items:
            $ref: "#/components/schemas/technique-resource"
          type: array
        source:
          description: Source of the technique, always editor here
          example: editor
          type: string
        version:
          description: version of this technique
          example: "1.0"
          type: string
      type: object
    group:
      properties:
        description:
          description: Group description
          example: Documentation for the group
          type: string
        displayName:
          description: Name of the group
          example: Ubuntu 18.04 nodes
          type: string
        dynamic:
          default: true
          description: Should the group be dynamically refreshed (if not, it is a static group)
          type: boolean
        enabled:
          default: true
          description: Enable or disable the group
          type: boolean
        groupClass:
          items:
            description: Conditions defined on nodes in the groups. There is one based on the group id, and one based on the group name.
            example: group_ubuntu
            format: condition
            type: string
          type: array
        id:
          default: "{autogenerated}"
          description: Group id
          example: 32d013f7-b6d8-46c8-99d3-016307fa66c0
          format: uuid
          type: string
        nodeIds:
          description: List of nodes in the group
          items:
            description: Node in the group
            example: 109142a2-40eb-4e6d-84b4-7ebe3670474c
            format: uuid (or "root")
            type: string
          type: array
        properties:
          description: Group properties
          items:
            properties:
              name:
                description: Property name
                example: os
                type: string
              value:
                description: Property value (can be a string or JSON object)
                example: debian10
                format: string or JSON
            required:
              - name
              - value
            type: object
          type: array
        query:
          description: The criteria defining the group
          properties:
            composition:
              default: and
              description: Boolean operator to use between each  `where` criteria.
              enum:
                - and
                - or
              example: and
              type: string
            select:
              default: node
              description: What kind of data we want to include. Here we can get policy servers/relay by setting `nodeAndPolicyServer`. Only used if `where` is defined.
              type: string
            where:
              description: List of criteria
              items:
                properties:
                  attribute:
                    description: Attribute to compare
                    example: OS
                    type: string
                  comparator:
                    description: Comparator to use
                    example: eq
                    type: string
                  objectType:
                    description: Type of the object
                    example: node
                    type: string
                  value:
                    description: Value to compare against
                    example: Linux
                    type: string
                type: object
              type: array
          type: object
      type: object
    group-category:
      properties:
        description:
          description: Group category description
          example: Nodes by hardware provider
          type: string
        id:
          default: "{autogenerated}"
          description: Group category id, only provide it when needed.
          example: 32d013f7-b6d8-46c8-99d3-016307fa66c0
          format: uuid
          type: string
        name:
          description: Name of the group category
          example: Hardware groups
          type: string
        parent:
          description: The parent category of the groups
          example: b9f6d98a-28bc-4d80-90f7-d2f14269e215
          format: uuid
          type: string
      required:
        - parent
        - name
      type: object
    group-category-update:
      properties:
        description:
          description: Group category description
          example: Nodes by hardware provider
          type: string
        name:
          description: Name of the group category
          example: Hardware groups
          type: string
        parent:
          description: The parent category of the groups
          example: b9f6d98a-28bc-4d80-90f7-d2f14269e215
          format: uuid
          type: string
      required:
        - parent
        - name
      type: object
    group-new:
      properties:
        category:
          description: Id of the new group's category
          example: e17ecf6a-a9f2-44de-a97c-116d24d30ff4
          format: uuid
          type: string
        description:
          description: Group description
          example: Documentation for the group
          type: string
        displayName:
          description: Name of the group
          example: Ubuntu 18.04 nodes
          type: string
        dynamic:
          default: true
          description: Should the group be dynamically refreshed (if not, it is a static group)
          type: boolean
        enabled:
          default: true
          description: Enable or disable the group
          type: boolean
        id:
          default: "{autogenerated}"
          description: Group id, only provide it when needed.
          example: 32d013f7-b6d8-46c8-99d3-016307fa66c0
          format: uuid
          type: string
        properties:
          description: Group properties
          items:
            properties:
              name:
                description: Property name
                example: os
                type: string
              value:
                description: Property value (can be a string or JSON object)
                example: debian10
                format: string or JSON
            required:
              - name
              - value
            type: object
          type: array
        query:
          description: The criteria defining the group. If not provided, the group will be empty.
          properties:
            composition:
              default: and
              description: Boolean operator to use between each  `where` criteria.
              enum:
                - and
                - or
              example: and
              type: string
            select:
              default: node
              description: What kind of data we want to include. Here we can get policy servers/relay by setting `nodeAndPolicyServer`. Only used if `where` is defined.
              type: string
            where:
              description: List of criteria
              items:
                properties:
                  attribute:
                    description: Attribute to compare
                    example: OS
                    type: string
                  comparator:
                    description: Comparator to use
                    example: eq
                    type: string
                  objectType:
                    description: Type of the object
                    example: node
                    type: string
                  value:
                    description: Value to compare against
                    example: Linux
                    type: string
                type: object
              type: array
          type: object
        source:
          description: The id of the group the clone will be based onto. If this parameter if provided,  the new group will be a clone of this source. Other value will override values from the source.
          example: b9f6d98a-28bc-4d80-90f7-d2f14269e215
          format: uuid
          type: string
      required:
        - displayName
        - category
      type: object
    group-update:
      properties:
        category:
          description: Id of the new group's category
          example: e17ecf6a-a9f2-44de-a97c-116d24d30ff4
          format: uuid
          type: string
        description:
          description: Group description
          example: Documentation for the group
          type: string
        displayName:
          description: Name of the group
          example: Ubuntu 18.04 nodes
          type: string
        dynamic:
          default: true
          description: Should the group be dynamically refreshed (if not, it is a static group)
          type: boolean
        enabled:
          default: true
          description: Enable or disable the group
          type: boolean
        query:
          description: The criteria defining the group. If not provided, the group will be empty.
          properties:
            composition:
              default: and
              description: Boolean operator to use between each  `where` criteria.
              enum:
                - and
                - or
              example: and
              type: string
            select:
              default: node
              description: What kind of data we want to include. Here we can get policy servers/relay by setting `nodeAndPolicyServer`. Only used if `where` is defined.
              type: string
            where:
              description: List of criteria
              items:
                properties:
                  attribute:
                    description: Attribute to compare
                    example: OS
                    type: string
                  comparator:
                    description: Comparator to use
                    example: eq
                    type: string
                  objectType:
                    description: Type of the object
                    example: node
                    type: string
                  value:
                    description: Value to compare against
                    example: Linux
                    type: string
                type: object
              type: array
          type: object
      type: object
    logo:
      properties:
        enable:
          description: Whether the wide logo is displayed or not
          type: boolean
      required:
        - enable
      type: object
    method-parameter:
      properties:
        _type:
          default: String
          description: Type of the parameter
          enum:
            - String
            - HereString
          type: string
        constraints:
          properties:
            allow_empty_string:
              description: Can this parameter be empty?
              example: false
              type: boolean
            allow_whitespace_string:
              description: Can this parameter allow trailing/ending spaces, or even a full whitespace string ?
              example: true
              type: boolean
            max_length:
              description: Maximum size of a parameter
              example: 250
              type: integer
            min_length:
              description: Minimal size of a parameter
              example: 5
              type: integer
            not_regex:
              description: A regexp to invalidate this parameter
              example: ^c.*
              type: string
            regex:
              description: A regex to validate this parameter
              example: .*
              type: string
            select:
              description: List of items authorized for this parameter
              items:
                example: "!="
                type: string
              type: array
          required:
            - allow_empty_string
            - allow_whitespace_string
            - max_length
            - min_length
            - regex
            - not_regex
            - select
          type: object
        description:
          description: Description of this parameter
          example: Name of a package to install
          type: string
        name:
          description: Parameter name
          example: package
          type: string
      required:
        - name
        - description
        - constraints
        - type
      type: object
    methods:
      description: List of available generic methods
      properties:
        agents:
          description: List of agents compatible with this method
          items:
            description: Name of an agent
            example: dsc
            type: string
          type: array
        category:
          description: Category of this technique
          example: user_techniques
          type: string
        condition:
          description: Conditions generated by this method
          properties:
            parameter:
              description: Id of the parameter used to generate condition
              example: package
              type: string
            prefix:
              description: Prefix used to generate condition
              example: package_present
              type: string
          type: object
        deprecated:
          description: Is this method deprecated?
          properties:
            info:
              description: Information notice about the deprecation, especially how to replace it
              example: The method has been deprecated because of X
              type: string
            replacedBy:
              description: Id of the method replacing this method
              example: package_present
              type: string
          type: object
        desc:
          description: Description of this method
          example: Enforce the presence of a package
          type: string
        documentation:
          description: Full documentation of this method
          example: This methods allows...
          type: string
        id:
          description: Method id
          example: package_present
          type: string
        name:
          description: Method name
          example: Package present
          type: string
        parameters:
          description: Parameters for this technique
          items:
            $ref: "#/components/schemas/method-parameter"
          type: array
        version:
          description: Version of this technique
          example: "1.0"
          type: string
      required:
        - id
        - name
        - version
        - category
        - desc
        - documentation
        - parameters
        - agents
        - condition
        - deprecated
      type: object
    node-add:
      items:
        properties:
          agentKey:
            $ref: "#/components/schemas/agent-key"
          hostname:
            description: The fully qualified name of the node
            example: my.node.hostname.local
            type: string
          id:
            description: The Rudder node unique identifier in /opt/rudder/etc/uuid.hive
            example: 378740d3-c4a9-4474-8485-478e7e52db52
            type: string
          ipAddresses:
            description: an array of IPs.
            items:
              example: 192.168.180.90
              type: string
            type: array
          machineType:
            description: The kind of machine for the node (use vm for a generic VM)
            enum:
              - vmware
              - physical
              - vm
              - solariszone
              - qemu
              - xen
              - aixlpar
              - hyperv
              - bsdjail
            type: string
          os:
            $ref: "#/components/schemas/os"
          policyMode:
            description: The policy mode for the node. Can only be specified when status=accepted. If not specified, the default (global) mode will be used
            enum:
              - enforce
              - audit
            type: string
          policyServerId:
            description: The policy server ID for that node. By default, "root"
            example: root
            type: string
          properties:
            description: Node properties (either set by user or filled by third party sources)
            items:
              properties:
                name:
                  description: Property name
                  example: datacenter
                  type: string
                value:
                  description: Property value (can be a string or JSON object)
                  example: AMS2
                  format: string or JSON
              required:
                - name
                - value
              type: object
            type: array
          state:
            description: Node lifecycle state. Can only be specified when status=accepted. If not specified, enable is used
            enum:
              - enabled
              - ignored
              - empty-policies
              - initializing
              - preparing-eol
            type: string
          status:
            description: Target status of the node
            enum:
              - accepted
              - pending
            type: string
          timezone:
            $ref: "#/components/schemas/timezone"
        required:
          - id
          - hostname
          - status
          - os
          - machineType
          - properties
          - ipAddresses
        type: object
      type: array
    node-compliance-component:
      properties:
        compliance:
          description: Directive compliance level
          example: 83.34
          format: float
          type: number
        complianceDetails:
          properties:
            error:
              example: 0
              format: float
              type: number
            noReport:
              example: 0
              format: float
              type: number
            successAlreadyOK:
              example: 100
              format: float
              type: number
            successNotApplicable:
              example: 0
              format: float
              type: number
            successRepaired:
              example: 0
              format: float
              type: number
            unexpectedMissingComponent:
              example: 0
              format: float
              type: number
            unexpectedUnknownComponent:
              example: 0
              format: float
              type: number
          type: object
        id:
          description: id of the node
          example: root
          format: uuid
          type: string
        mode:
          enum:
            - full-compliance
            - changes-only
            - reports-disabled
          type: string
        name:
          description: Name of the node
          example: server.rudder.local
          type: string
        values:
          items:
            properties:
              reports:
                items:
                  properties:
                    message:
                      example: The MOTD file was correct
                      type: string
                    status:
                      example: successAlreadyOK
                      type: string
                  required:
                    - status
                    - message
                  type: object
                type: array
              value:
                example: None
                type: string
            required:
              - value
              - reports
            type: object
          type: array
      required:
        - id
        - name
        - compliance
        - complianceDetails
        - values
      type: object
    node-full:
      properties:
        accounts:
          description: User accounts declared in the node
          items:
            description: User present on the system
            example: root
            type: string
          type: array
        architectureDescription:
          description: Information about CPU architecture (32/64 bits)
          example: x86_64
          type: string
        bios:
          description: BIOS information
          properties:
            description:
              description: System provided description of the BIOS (long name)
              example: FIXME
              type: string
            editor:
              description: BIOS editor
              example: innotek GmbH
              type: string
            name:
              description: BIOS name
              example: VirtualBox
              type: string
            quantity:
              description: Number of BIOS on the machine
              example: 1
              type: integer
            releaseDate:
              description: Release date of the BIOS
              example: 2006-12-01 00:00:00+0000
              type: string
            version:
              description: BIOS version
              example: 1.2.3
              type: string
          type: object
        controllers:
          description: Physical controller information
          items:
            properties:
              description:
                description: System provided description of the controller
                type: string
              manufacturer:
                description: Controller manufacturer
                type: string
              name:
                description: Controller name
                type: string
              quantity:
                description: Quantity of that controller
                example: 1
                type: integer
              type:
                description: Controller type
                type: string
            type: object
          type: array
        description:
          description: A human intended description of the node (not used)
          example: ""
          type: string
        environmentVariables:
          description: Environment variables defined on the node in the context of the agent
          items:
            properties:
              name:
                description: Environment variable name
                example: LANG
                type: string
              value:
                description: Environment variable value
                example: en_US.UTF-8
                type: string
            type: object
          type: array
        fileSystems:
          description: File system declared on the node
          items:
            properties:
              description:
                description: Description of the file system
                type: string
              fileCount:
                description: Number of files
                example: 1456
                type: integer
              freeSpace:
                description: Free space remaining
                example: 3487
                type: integer
              mountPoint:
                description: Mount point
                example: /srv
                type: string
              name:
                description: Type of file system (`ext4`, `swap`, etc.)
                example: ext4
                type: string
              totalSpace:
                description: Total space
                example: 208869
                type: integer
            type: object
          type: array
        hostname:
          description: Fully qualified name of the node
          example: node1.example.com
          type: string
        id:
          description: Unique id of the node
          example: 9a1773c9-0889-40b6-be89-f6504443ac1b
          format: uuid (or "root")
          type: string
        ipAddresses:
          description: IP addresses of the node (IPv4 and IPv6)
          items:
            description: IP of the node
            example: 192.168.23.45
            type: string
          type: array
        lastInventoryDate:
          description: 'Date and time of the latest generated inventory, if one is available (node time). Up to API v11, format was: "YYYY-MM-dd HH:mm"'
          example: 2020-02-29T10:11:32Z
          format: date
          type: string
        lastRunDate:
          description: 'Date and time of the latest run, if one is available (node time). Up to API v11, format was: "YYYY-MM-dd HH:mm"'
          example: 2020-02-29T14:48:28Z
          format: date
          type: string
        machine:
          description: Information about the underlying machine
          properties:
            id:
              description: Rudder unique identifier for the machine
              type: string
            manufacturer:
              description: Information about machine manufacturer
              example: innotek GmbH
              type: string
            provider:
              description: In the case of VM, the VM technology
              example: vbox
              type: string
            serialNumber:
              description: If available, a unique identifier provided by the machine
              example: ece12459-2b90-49c9-ab1e-72e38f797421
              type: string
            type:
              description: Type of the machine
              enum:
                - Physical
                - Virtual
              example: Virtual
              type: string
          type: object
        managementTechnology:
          description: Management agents running on the node
          items:
            properties:
              capabilities:
                description: List of agent capabilities
                items:
                  description: Special capacities of the agent, like parsing xml or yaml, support of advanced acl, etc.
                  example: xml
                  type: string
                type: array
              name:
                description: Agent name
                example: Rudder
                type: string
              nodeKind:
                description: kind of node for the management engine, like `root`, `relay`, `node`, `root-component`
                example: node
                type: string
              rootComponents:
                description: Roles fulfilled by the agent
                items:
                  description: A role that node fulfills in management technology
                  example: rudder-db
                  type: string
                type: array
              version:
                description: Agent version
                example: 6.0.3.release-1.EL.7
                type: string
            required:
              - name
              - value
            type: object
          type: array
        managementTechnologyDetails:
          description: Additional information about management technology
          properties:
            cfengineKeys:
              description: Certificates used by the agent
              items:
                description: Certificate (or public key for <6.0 agents) used by the agent
                example: -----BEGIN CERTIFICATE-----\nMIIFqDCC[...]3tALNn\n-----END CERTIFICATE-----
                format: PEM
                type: string
              type: array
            cfengineUser:
              description: Local user account used by the agent
              example: root
              type: string
          type: object
        memories:
          description: Memory slots
          items:
            description: Memory slots
            properties:
              capacity:
                description: Size of modules
                example: 2
                type: integer
              caption:
                description: Manufacturer provided information about the module
                type: string
              description:
                description: System provided description
                type: string
              name:
                description: Name of the memory slot or memory module
                type: string
              quantity:
                description: Number of modules in that slot
                example: 1
                type: integer
              serialNumber:
                description: Serial number of the module
                type: string
              slotNumber:
                description: Slot number
                example: 3
                type: integer
              speed:
                description: Memory speed (frequency)
                example: 1066
                type: integer
              type:
                description: Memory slot type
                type: string
            type: object
          type: array
        networkInterfaces:
          description: Detailed information about registered network interfaces on the node
          items:
            properties:
              dhcpServer:
                description: DHCP server managing that network interface
                example: 192.168.34.5
                type: string
              ipAddresses:
                description: IP addresses of the network interface
                items:
                  description: IP address
                  example: 192.168.76.4
                  type: string
                type: array
              macAddress:
                description: MAC address of the network interface
                example: 08:00:27:6f:5c:14
                type: string
              mask:
                items:
                  description: Network interface mask
                  example: 255.255.255.0
                  format: CIDR
                  type: string
                type: array
              name:
                description: Interface name (for ex "eth0")
                example: eth0
                type: string
              speed:
                description: Information about synchronization speed
                example: "1000"
                type: string
              status:
                description: network interface status (enabled or not, up or down)
                example: Up
                type: string
              type:
                description: Information about the type of network interface
                example: ethernet
                type: string
            type: object
          type: array
        os:
          description: Information about the operating system
          properties:
            fullName:
              description: Full operating system name
              example: CentOS Linux release 7.6.1810 (Core)
              type: string
            kernelVersion:
              description: Version of the OS kernel
              example: 3.10.0-957.1.3.el7.x86_64
              type: string
            name:
              description: Operating system name (distribution on Linux, etc.)
              example: Centos
              type: string
            servicePack:
              description: If relevant, the service pack of the OS
              example: "3"
              type: string
            type:
              description: Family of the OS
              enum:
                - Windows
                - Linux
                - AIX
                - FreeBSD
              example: Linux
              type: string
            version:
              description: OS version
              example: 7.6.1810
              type: string
          required:
            - type
            - name
            - version
            - fullName
            - kernelVersion
          type: object
        policyMode:
          description: Rudder policy mode for the node (`default` follows the global configuration)
          enum:
            - enforce
            - audit
            - default
          example: audit
          type: string
        policyServerId:
          description: Rudder policy server managing the node
          example: root
          format: uuid (or "root")
          type: string
        ports:
          description: Physical port information objects
          items:
            properties:
              description:
                description: System provided description of the port
                type: string
              name:
                description: Port name
                type: string
              quantity:
                description: Quantity of similar ports
                example: 1
                type: integer
              type:
                description: Port type
                type: string
            type: object
          type: array
        processes:
          description: Process running (at inventory time)
          items:
            description: Process information
            properties:
              cpuUsage:
                description: CPU used by the process (at inventory time)
                example: 1
                type: integer
              description:
                description: System provided description about the process
                type: string
              memory:
                description: Memory allocated to the process (at inventory time)
                example: 0.4000000059604645
                format: float
                type: number
              name:
                description: Process name
                example: /usr/sbin/httpd -DFOREGROUND
                type: string
              pid:
                description: PID of the process
                example: 3576
                type: integer
              started:
                description: Started date and time of the process
                example: 2020-02-29 00:24
                format: date
                type: string
              tty:
                description: TTY to which the process is
                example: "?"
                type: string
              user:
                description: User account who started the process
                example: apache
                type: string
              virtualMemory:
                description: Virtual memory allocated to the process (at inventory time)
                example: 4380
                type: integer
            type: object
          type: array
        processors:
          description: CPU information
          items:
            properties:
              arch:
                description: CPU architecture
                example: i386
                type: string
              core:
                description: Number of core for that CPU
                example: 1
                type: integer
              cpuid:
                description: Identifier of the CPU
                type: string
              description:
                description: System provided description of the CPU
                type: string
              externalClock:
                description: External clock used by the CPU
                type: string
              familyName:
                description: CPU family
                type: string
              manufacturer:
                description: CPU manufacturer
                example: Intel
                type: string
              model:
                description: CPU model
                example: 158
                type: integer
              name:
                description: CPU name
                example: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
                type: string
              quantity:
                description: Number of CPU with these features
                example: 1
                type: integer
              speed:
                description: Speed (frequency) of the CPU
                example: 2800
                type: integer
              stepping:
                description: Stepping or power management information
                example: 9
                type: integer
              thread:
                description: Number of thread by core for the CPU
                example: 1
                type: integer
            type: object
          type: array
        properties:
          description: Node properties (either set by user or filled by third party sources)
          items:
            properties:
              name:
                description: Property name
                example: datacenter
                type: string
              value:
                description: Property value (can be a string or JSON object)
                example: AMS2
                format: string or JSON
            required:
              - name
              - value
            type: object
          type: array
        ram:
          description: Size of RAM in MB
          type: integer
        slots:
          description: Physical extension slot information
          items:
            properties:
              description:
                description: System provided description of the slots
                type: string
              name:
                description: Slot name or identifier
                type: string
              quantity:
                description: Quantity of similar slots
                type: integer
              status:
                description: Slot status (used, powered, etc)
                type: string
            type: object
          type: array
        software:
          description: Software installed on the node (can have thousands items)
          items:
            properties:
              description:
                description: A description of the software
                example: A library for getting files from web servers
                type: string
              editor:
                description: Editor of the software
                example: CentOS
                type: string
              license:
                description: Information about the license
                properties:
                  description:
                    description: License description
                    type: string
                  expirationDate:
                    description: License expiration date
                    format: date
                    type: string
                  name:
                    description: License name
                    type: string
                  oem:
                    description: Is this an OEM license (and information)
                    type: string
                  productId:
                    description: License product identifier
                    type: string
                  productKey:
                    description: License key
                    type: string
                type: object
              name:
                description: Name of the software (as reported by the node)
                example: libcurl
                type: string
              releaseDate:
                description: Release date of the software
                format: date
                type: string
              version:
                description: Version of the software
                example: 7.29.0-54.el7_7.2
                type: string
            type: object
          type: array
        softwareUpdate:
          description: Software that can be updated on that machine
          items:
            properties:
              arch:
                description: CPU architecture of the update
                type: string
              description:
                description: details about the content of the update, if available
                type: string
              from:
                description: tool that discovered that update
                type: string
              ids:
                items:
                  description: Related identifiers, can be CVE number, vendor-specific advisory (RHSA, etc.)
                  type: string
                type: array
              kind:
                description: if available, kind of patch provided by that update, else none
                enum:
                  - none
                  - security
                  - defect
                  - enhancement
                  - other
                type: string
              name:
                description: name of software that can be updated
                type: string
              severity:
                description: if available, the severity of the update
                enum:
                  - critical
                  - high
                  - moderate
                  - low
                  - other
                type: string
              source:
                description: information about the source providing that update
                type: string
              version:
                description: available version for software
                type: string
            type: object
          type: array
        sound:
          description: Sound card information
          items:
            properties:
              description:
                description: System provided description of the sound card
                type: string
              name:
                description: Sound card name
                type: string
              quantity:
                description: Quantity of similar sound cards
                example: 1
                type: integer
            type: object
          type: array
        status:
          description: Status of the node
          enum:
            - pending
            - accepted
            - deleted
          example: accepted
          type: string
        storage:
          description: Storage (disks) information objects
          items:
            properties:
              description:
                description: System provided information about the storage
                type: string
              firmware:
                description: Storage firmware information
                example: "10"
                type: string
              manufacturer:
                description: Storage manufacturer
                type: string
              model:
                description: Storage model
                example: VBOXHARDDISK
                type: string
              name:
                description: Storage name
                example: sda
                type: string
              quantity:
                description: Quantity of similar storage
                example: 1
                type: integer
              serialNumber:
                description: Storage serial number
                example: 000a1954
                type: string
              size:
                description: Storage size in MB
                example: 85899
                type: integer
              type:
                description: Storage type
                example: disk
                type: string
            type: object
          type: array
        timezone:
          properties:
            name:
              description: Timezone name
              example: UTC
              type: string
            offset:
              description: Timezone offset to UTC
              example: "+0000"
              format: +/-difference
              type: string
          required:
            - name
            - value
          type: object
        videos:
          description: Video card information
          items:
            properties:
              chipset:
                description: information about video card chipset
                type: string
              description:
                description: System provided description for that video card
                type: string
              memory:
                description: Quantity of memory for that video card
                type: string
              name:
                description: Video card name
                type: string
              quantity:
                description: Quantity of similar video cards
                example: 1
                type: integer
              resolution:
                description: Resolution used by that video card at inventory time
                type: string
            type: object
          type: array
        virtualMachines:
          description: Hosted virtual machine information
          items:
            properties:
              description:
                description: System provided description of the hosted virtual machine
                type: string
              memory:
                description: Memory allocated to the hosted virtual machine
                type: string
              name:
                description: Name of the hosted virtual machine
                type: string
              owner:
                description: Owner of the hosted virtual machine
                type: string
              status:
                description: Status (up, starting, etc) of the hosted virtual machine
                type: string
              subsystem:
                description: Technology of the hosted virtual machine
                type: string
              type:
                description: Type of the hosted virtual machine
                type: string
              uuid:
                description: Unique identifier of the hosted virtual machine
                type: string
              vcpu:
                description: Number of virtual CPU allocated to the hosted virtual machine
                type: string
            type: object
          type: array
      required:
        - id
        - hostname
        - status
        - ipAddresses
        - managementTechnology
        - policyServerId
        - properties
      type: object
    node-inherited-properties:
      properties:
        id:
          description: Unique id of the node
          example: 9a1773c9-0889-40b6-be89-f6504443ac1b
          format: uuid (or "root")
          type: string
        properties:
          description: Node properties (either set by user or filled by third party sources)
          items:
            properties:
              hierarchy:
                description: A description of the inheritance hierarchy for that property, with most direct parent at head and oldest one at tail
                items:
                  properties:
                    id:
                      description: in the case of a group, its identifier
                      example: 9180b869-08a3-4173-9dd4-ab68f227e76c
                      type: string
                    kind:
                      description: The kind of object from which the property's value is inherited
                      enum:
                        - global
                        - group
                      example: global
                      type: string
                    name:
                      description: in the case of a group, its name
                      example: all centos7
                      type: string
                    value:
                      description: a string representation of the value. If it was a json value, it will be escaped.
                      example: '{"array":[1,2],"object":{"parent":"value"},"string":"parent"}'
                      type: string
                  required:
                    - kind
                    - value
                  type: object
                type: array
              name:
                description: Property name
                example: datacenter
                type: string
              origval:
                description: The original value (ie, before overriding and inheritance resolution) for that node
                example: AMS2
                format: string or JSON
              provider:
                description: Property provider (if the property is not a simple node property)
                enum:
                  - inherited
                  - overridden
                  - plugin name like datasources
                type: string
              value:
                description: Resolved (ie, with inheritance and overriding done) property value (can be a string or JSON object)
                example: AMS2
                format: string or JSON
            required:
              - name
              - value
            type: object
          type: array
      required:
        - id
        - properties
      type: object
    node-settings:
      properties:
        agentKey:
          $ref: "#/components/schemas/agent-key"
        policyMode:
          description: In which mode the node will apply its configuration policy. Use `default` to use the global mode.
          enum:
            - audit
            - enforce
            - default
          example: audit
          type: string
        properties:
          items:
            properties:
              name:
                description: Property name
                example: datacenter
                type: string
              value:
                description: Property value (can be a string or JSON object)
                example: AMS2
                format: string or JSON
            required:
              - name
              - value
            type: object
          type: array
        state:
          description: The node life cycle state. See [dedicated doc](https://docs.rudder.io/reference/current/usage/advanced_node_management.html#node-lifecycle) for more information.
          enum:
            - enabled
            - ignored
            - empty-policies
            - initializing
            - preparing-eol
          example: enabled
          type: string
      type: object
    os:
      properties:
        fullName:
          description: The long description name of the os
          example: Debian GNU/Linux 9 (stretch)
          type: string
        name:
          description: For Linux, a distribution, for Windows, the commercial name
          enum:
            - debian
            - kali
            - ubuntu
            - redhat
            - centos
            - fedora
            - suse
            - oracle
            - scientific
            - slackware
            - xp
            - vista
            - seven
            - "10"
            - "2000"
            - "2003"
            - 2008 r2
            - "2012"
            - 2012 r2
            - "2016"
          type: string
        servicePack:
          description: a service pack informationnal string
          type: string
        type:
          enum:
            - linux
            - windows
            - solaris
            - aix
            - freebsd
            - unknown
          type: string
        version:
          description: A string representation of the version
          example: "9.5"
          type: string
      required:
        - type
        - name
        - version
        - fullName
      type: object
    parameter:
      properties:
        description:
          description: Description of the parameter
          example: Default inform message put in footer of managed files by Rudder
          type: string
        id:
          description: Name of the parameter
          example: rudder_file_edit_footer
          type: string
        overridable:
          description: Is the global parameter overridable by node
          example: false
          type: boolean
        value:
          description: Value of the parameter
          example: "### End of file managed by Rudder ###"
          format: string or JSON
      required:
        - id
      type: object
    rule:
      properties:
        directives:
          description: Directives linked to the rule
          items:
            description: Directive id
            type: string
          type: array
        displayName:
          description: Rule name
          example: Security policy
          type: string
        enabled:
          description: Is the rule enabled
          example: true
          type: boolean
        id:
          description: Rule id
          example: 0c1713ae-cb9d-4f7b-abda-ca38c5d643ea
          format: uuid
          type: string
        longDescription:
          description: Rule documentation
          example: This rules should be applied to all Linux nodes required basic hardening
          type: string
        shortDescription:
          description: One line rule description
          example: Baseline applying CIS guidelines
          type: string
        system:
          description: If true it is an internal Rudder rule
          example: false
          type: boolean
        tags:
          items:
            example:
              customer: MyCompany
            properties:
              name:
                description: Value of the `name` key
                example: value
                type: string
            type: object
          type: array
        targets:
          $ref: "#/components/schemas/rule-targets"
      type: object
    rule-category:
      properties:
        description:
          description: Rules category description
          example: Baseline applying CIS guidelines
          type: string
        id:
          default: "{autogenerated}"
          description: Rule category id, only provide it when needed.
          example: 32d013f7-b6d8-46c8-99d3-016307fa66c0
          format: uuid
          type: string
        name:
          description: Name of the rule category
          example: Security policies
          type: string
        parent:
          description: The parent category of the rules
          example: b9f6d98a-28bc-4d80-90f7-d2f14269e215
          format: uuid
          type: string
      required:
        - parent
        - name
      type: object
    rule-category-update:
      properties:
        description:
          description: Rules category description
          example: Baseline applying CIS guidelines
          type: string
        name:
          description: Name of the rule category
          example: Security policies
          type: string
        parent:
          description: The parent category of the rules
          example: b9f6d98a-28bc-4d80-90f7-d2f14269e215
          format: uuid
          type: string
      required:
        - parent
        - name
      type: object
    rule-compliance-component:
      properties:
        compliance:
          description: Rule compliance level
          example: 100
          format: float
          type: number
        complianceDetails:
          properties:
            error:
              example: 0
              format: float
              type: number
            noReport:
              example: 0
              format: float
              type: number
            successAlreadyOK:
              example: 66.67
              format: float
              type: number
            successNotApplicable:
              example: 33.33
              format: float
              type: number
            successRepaired:
              example: 0
              format: float
              type: number
            unexpectedMissingComponent:
              example: 0
              format: float
              type: number
            unexpectedUnknownComponent:
              example: 0
              format: float
              type: number
          type: object
        components:
          items:
            properties:
              compliance:
                description: directive compliance level
                example: 100
                format: float
                type: number
              complianceDetails:
                properties:
                  error:
                    example: 0
                    format: float
                    type: number
                  noReport:
                    example: 0
                    format: float
                    type: number
                  successAlreadyOK:
                    example: 66.67
                    format: float
                    type: number
                  successNotApplicable:
                    example: 33.33
                    format: float
                    type: number
                  successRepaired:
                    example: 0
                    format: float
                    type: number
                  unexpectedMissingComponent:
                    example: 0
                    format: float
                    type: number
                  unexpectedUnknownComponent:
                    example: 0
                    format: float
                    type: number
                type: object
              name:
                description: Name of the component
                example: test directive
                type: string
              values:
                items:
                  properties:
                    reports:
                      items:
                        properties:
                          message:
                            example: The user tutu ( Without any defined full name ) is already present on the system
                            type: string
                          status:
                            example: successAlreadyOK
                            type: string
                        required:
                          - status
                          - message
                        type: object
                      type: array
                    value:
                      example: tutu
                      type: string
                  required:
                    - value
                    - reports
                  type: object
                type: array
            required:
              - name
              - compliance
              - complianceDetails
              - values
            type: object
          type: array
        id:
          description: id of the rule
          example: 835c068d-f01e-44c0-a0f4-7a436d46ad35
          format: uuid
          type: string
        name:
          description: Name of the rule
          example: Test users
          type: string
      required:
        - id
        - name
        - compliance
        - complianceDetails
        - components
      type: object
    rule-new:
      properties:
        category:
          description: The parent category id. If provided, the new rule will be in this parent category
          example: 38e0c6ea-917f-47b8-82e0-e6a1d3dd62ca
          format: uuid
          type: string
        directives:
          description: Directives linked to the rule
          items:
            description: Directive id
            type: string
          type: array
        displayName:
          description: Rule name
          example: Security policy
          type: string
        enabled:
          description: Is the rule enabled
          example: true
          type: boolean
        id:
          description: Rule id
          example: 0c1713ae-cb9d-4f7b-abda-ca38c5d643ea
          format: uuid
          type: string
        longDescription:
          description: Rule documentation
          example: This rules should be applied to all Linux nodes required basic hardening
          type: string
        shortDescription:
          description: One line rule description
          example: Baseline applying CIS guidelines
          type: string
        source:
          description: The id of the rule the clone will be based onto. If this parameter if provided, the new rule will be a clone of this source. Other value will override values from the source.
          example: b9f6d98a-28bc-4d80-90f7-d2f14269e215
          format: uuid
          type: string
        system:
          description: If true it is an internal Rudder rule
          example: false
          type: boolean
        tags:
          items:
            example:
              customer: MyCompany
            properties:
              name:
                description: Value of the `name` key
                example: value
                type: string
            type: object
          type: array
        targets:
          $ref: "#/components/schemas/rule-targets"
      type: object
    rule-target:
      description: Node and special groups targeted by that rule
      enum:
        - special:all
        - special:all_exceptPolicyServers
        - special:all_policyServers
        - policyServer:${policyServerId}
        - group:${nodeGroupId}
      example: policyServer:root
      type: string
    rule-targets:
      description: Node and special groups targeted by that rule
      items:
        example:
          exclude:
            or:
              - policyServer:root
              - group:cd377524-808b-4b42-8724-6ef308efeac7
          include:
            or:
              - special:all
        properties:
          exclude:
            description: list of groups to exclude from rule application
            properties:
              or:
                items:
                  $ref: "#/components/schemas/rule-target"
                type: array
            type: object
          include:
            description: list of groups to include in rule application
            properties:
              or:
                items:
                  $ref: "#/components/schemas/rule-target"
                type: array
            type: object
        required:
          - include
          - exclude
        type: object
      type: array
    rule-with-category:
      properties:
        category:
          description: The parent category id.
          example: 38e0c6ea-917f-47b8-82e0-e6a1d3dd62ca
          format: uuid
          type: string
        directives:
          description: Directives linked to the rule
          items:
            description: Directive id
            type: string
          type: array
        displayName:
          description: Rule name
          example: Security policy
          type: string
        enabled:
          description: Is the rule enabled
          example: true
          type: boolean
        id:
          description: Rule id
          example: 0c1713ae-cb9d-4f7b-abda-ca38c5d643ea
          format: uuid
          type: string
        longDescription:
          description: Rule documentation
          example: This rules should be applied to all Linux nodes required basic hardening
          type: string
        shortDescription:
          description: One line rule description
          example: Baseline applying CIS guidelines
          type: string
        system:
          description: If true it is an internal Rudder rule
          example: false
          type: boolean
        tags:
          items:
            example:
              customer: MyCompany
            properties:
              name:
                description: Value of the `name` key
                example: value
                type: string
            type: object
          type: array
        targets:
          $ref: "#/components/schemas/rule-targets"
      type: object
    secrets:
      properties:
        description:
          description: The description of the secret to identify it more easily
          example: Password of my super secret user account
          type: string
        name:
          description: The name of the secret used as a reference on the value
          example: secret-password
          type: string
        value:
          description: The value of the secret it will not be exposed in the interface
          example: nj-k;EO32!kFWewn2Nk,u
          type: string
      type: object
    technique-block:
      properties:
        calls:
          description: Method and blocks contained by this block
          example: []
          items:
            oneOf:
              - $ref: "#/components/schemas/technique-method-call"
              - $ref: "#/components/schemas/technique-block"
          type: array
        component:
          description: Component is used in reporting to identify this method call. You can see it as a name
          example: Install my app
          type: string
        condition:
          description: Condition to run this method.
          example: linux.package_present_vim_repaired
          type: string
        id:
          description: Method call id
          example: 6a8de98f-7829-4c1b-b4e7-b9387f27f279
          type: string
        reportingLogic:
          properties:
            type:
              description: Kind of reporting logic
              enum:
                - worst
                - focus
                - worst-case-weighted-one
                - worst-case-weighted-sum
              example: worst
              type: string
            value:
              description: reporting value used for some reporting logic (i.e. focus)
              example: id/name of a component
              type: string
          type: object
      type: object
    technique-category:
      properties:
        id:
          description: Category ID
          example: systemManagement
          type: string
        name:
          description: Category's name
          example: User Techniques
          type: string
        path:
          description: Category's path
          example: systemSettings/systemManagement
          type: string
        subcategories:
          description: List of sub categories
          example: []
          items:
            $ref: "#/components/schemas/technique-category"
          type: array
      required:
        - name
        - path
        - id
        - subcategories
      type: object
    technique-method-call:
      properties:
        component:
          description: Component is used in reporting to identify this method call. You can see it as a name
          example: Install apache2
          type: string
        condition:
          description: Condition to run this method.
          example: linux.package_present_vim_repaired
          type: string
        disableReporting:
          description: Should the reporting of this method be disabled
          example: true
          type: boolean
        id:
          description: Method call id
          example: 6a8de98f-7829-4c1b-b4e7-b9387f27f279
          type: string
        method:
          description: Id of the method called
          example: package_present
          type: string
        parameters:
          description: Parameters for this method call
          items:
            properties:
              name:
                description: Parameter name
                example: package
                type: string
              value:
                description: Parameter value
                example: apache2
                type: string
            type: object
          type: array
      type: object
    technique-parameter:
      properties:
        description:
          description: description of this parameter
          example: Name of a package to install
          type: string
        id:
          description: parameter id
          example: 6a8de98f-7829-4c1b-b4e7-b9387f27f279
          type: string
        mayBeEmpty:
          description: May the value given when creating a directive be empty
          example: true
          type: boolean
        name:
          description: Parameter name
          example: Package to install
          type: string
      type: object
    technique-resource:
      properties:
        name:
          description: resource name. this is the relative path to the resource
          example: conf/my/app/new
          type: string
        state:
          description: State of the resource file. it can be a value between new, modified, deleted, untouched
          example: modified
          type: string
      type: object
    techniques:
      items:
        $ref: "#/components/schemas/editor-technique"
      type: array
    techniques-resources:
      items:
        properties:
          name:
            description: Resource's name
            example: apply-policy.robot
            type: string
          state:
            description: State of the resource
            example: untouched
            type: string
        type: object
      type: array
    techniques-revisions:
      items:
        properties:
          author:
            description: Commit's author
            example: admin
            type: string
          date:
            description: Commit's date
            example: 2022-06-14T16:20:40+02:00
            type: string
          message:
            description: Commit's message
            example: Committing technique bar
            type: string
          revision:
            description: Revision ID
            example: 6faf7e9c47f2c3a41784598b5acf2883bd4e1e08
            type: string
        required:
          - revision
          - date
          - author
          - message
        type: object
      type: array
    techniques-versions:
      items:
        example:
          name: userManagement
          version:
            - "1.0"
            - "1.2"
            - "3.0"
        properties:
          name:
            description: Technique name
            type: string
          versions:
            description: Available versions for this technique
            items:
              description: Technique version
              type: string
            type: array
        type: object
      type: array
    timezone:
      description: Timezone information of the node.
      properties:
        name:
          description: The standard name of the timezone
          example: CEST
          type: string
        offset:
          description: Timezone offset compared to UTC, in +/-HHMM format
          example: 200
          type: string
      required:
        - name
        - offset
      type: object
    users:
      properties:
        isPreHahed:
          description: If you want to provide hashed password set this property to `true` otherwise we will hash the plain password and store the hash
          enum:
            - false
            - true
          type: boolean
        password:
          description: this password will be hashed for you if the `isPreHashed` is set on false
          example: passwdWillBeStoredHashed
          type: string
        role:
          description: Defined user's permissions
          items:
            example: user
            type: string
          type: array
        username:
          example: John Doe
          type: string
      type: object
    validated-user:
      description: list of users with their workflow settings
      properties:
        isValidated:
          description: whether the user's actions generate chanque-request or not
          type: boolean
        userExists:
          description: whether the user exists in file or not
          type: boolean
        username:
          example: John Do
          type: string
      required:
        - username
        - isValidated
        - userExists
      type: object
  securitySchemes:
    API-Tokens:
      description: |-
        Apart for the status API, authenticating is mandatory for every request, as sensitive information like inventories or configuration rules may get exposed. It is done using a dedicated API account, than can be created in the web interface on the 'API accounts' page located inside the Administration part.

        ![API Tokens settings](assets/APISettings.png "API tokens settings")

        API accounts are not linked to standard user accounts, and currently give full administrative privileges: they must be secured adequately. Once you have created an API account, you get a token that will be needed to authenticate every request. This token is the API equivalent of a password, and must be secured just like a password would be.

        On any call to the API, you will need to add a **X-API-Token** header to your request to authenticate:


            curl --request GET --header "X-API-Token: yourToken" https://rudder.example.com/rudder/api/latest/rules


        If you perform any action (creation, update, deletion) using the API, the event log generated will record the API account as the user.
      in: header
      name: X-API-Token
      type: apiKey
