Raw File
api-merged.json
{
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "schemes": [
    "http",
    "https"
  ],
  "swagger": "2.0",
  "info": {
    "description": "The Grafana backend exposes an HTTP API, the same API is used by the frontend to do\neverything from saving dashboards, creating users and updating data sources.",
    "title": "Grafana HTTP API.",
    "contact": {
      "name": "Grafana Labs",
      "url": "https://grafana.com",
      "email": "hello@grafana.com"
    },
    "version": "0.0.1"
  },
  "basePath": "/api",
  "paths": {
    "/access-control/assignments/search": {
      "post": {
        "description": "Returns the result of the search through access-control role assignments.\n\nYou need to have a permission with action `teams.roles:read` on scope `teams:*`\nand a permission with action `users.roles:read` on scope `users:*`.",
        "tags": [
          "enterprise"
        ],
        "summary": "Debug permissions.",
        "operationId": "searchResult",
        "responses": {
          "200": {
            "$ref": "#/responses/searchResultResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/roles": {
      "get": {
        "description": "Gets all existing roles. The response contains all global and organization local roles, for the organization which user is signed in.\n\nYou need to have a permission with action `roles:read` and scope `roles:*`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Get all roles.",
        "operationId": "listRoles",
        "parameters": [
          {
            "type": "boolean",
            "name": "delegatable",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/listRolesResponse"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Creates a new custom role and maps given permissions to that role. Note that roles with the same prefix as Fixed Roles can’t be created.\n\nYou need to have a permission with action `roles:write` and scope `permissions:type:delegate`. `permissions:type:delegate` scope ensures that users can only create custom roles with the same, or a subset of permissions which the user has.\nFor example, if a user does not have required permissions for creating users, they won’t be able to create a custom role which allows to do that. This is done to prevent escalation of privileges.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Create a new custom role.",
        "operationId": "createRole",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateRoleForm"
            }
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/createRoleResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/roles/{roleUID}": {
      "get": {
        "description": "Get a role for the given UID.\n\nYou need to have a permission with action `roles:read` and scope `roles:*`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Get a role.",
        "operationId": "getRole",
        "parameters": [
          {
            "type": "string",
            "name": "roleUID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getRoleResponse"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "description": "You need to have a permission with action `roles:write` and scope `permissions:type:delegate`. `permissions:type:delegate` scope ensures that users can only create custom roles with the same, or a subset of permissions which the user has.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Update a custom role.",
        "operationId": "updateRole",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateRoleCommand"
            }
          },
          {
            "type": "string",
            "name": "roleUID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getRoleResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Delete a role with the given UID, and it’s permissions. If the role is assigned to a built-in role, the deletion operation will fail, unless force query param is set to true, and in that case all assignments will also be deleted.\n\nYou need to have a permission with action `roles:delete` and scope `permissions:type:delegate`. `permissions:type:delegate` scope ensures that users can only delete a custom role with the same, or a subset of permissions which the user has. For example, if a user does not have required permissions for creating users, they won’t be able to delete a custom role which allows to do that.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Delete a custom role.",
        "operationId": "deleteRole",
        "parameters": [
          {
            "type": "boolean",
            "name": "force",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "global",
            "in": "query"
          },
          {
            "type": "string",
            "name": "roleUID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/roles/{roleUID}/assignments": {
      "get": {
        "description": "Get role assignments for the role with the given UID.\n\nYou need to have a permission with action `teams.roles:list` and scope `teams:id:*` and `users.roles:list` and scope `users:id:*`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Get role assignments.",
        "operationId": "getRoleAssignments",
        "parameters": [
          {
            "type": "string",
            "name": "roleUID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getRoleAssignmentsResponse"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "description": "Set role assignments for the role with the given UID.\n\nYou need to have a permission with action `teams.roles:add` and `teams.roles:remove` and scope `permissions:type:delegate`, and `users.roles:add` and `users.roles:remove` and scope `permissions:type:delegate`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Set role assignments.",
        "operationId": "setRoleAssignments",
        "parameters": [
          {
            "type": "string",
            "name": "roleUID",
            "in": "path",
            "required": true
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SetRoleAssignmentsCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/setRoleAssignmentsResponse"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/status": {
      "get": {
        "description": "Returns an indicator to check if fine-grained access control is enabled or not.\n\nYou need to have a permission with action `status:accesscontrol` and scope `services:accesscontrol`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Get status.",
        "operationId": "getAccessControlStatus",
        "responses": {
          "200": {
            "$ref": "#/responses/getAccessControlStatusResponse"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/teams/roles/search": {
      "post": {
        "description": "Lists the roles that have been directly assigned to the given teams.\n\nYou need to have a permission with action `teams.roles:read` and scope `teams:id:*`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "List roles assigned to multiple teams.",
        "operationId": "listTeamsRoles",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RolesSearchQuery"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/listTeamsRolesResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/teams/{teamId}/roles": {
      "get": {
        "description": "You need to have a permission with action `teams.roles:read` and scope `teams:id:\u003cteam ID\u003e`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Get team roles.",
        "operationId": "listTeamRoles",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "teamId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "description": "You need to have a permission with action `teams.roles:add` and `teams.roles:remove` and scope `permissions:type:delegate` for each.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Update team role.",
        "operationId": "setTeamRoles",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "teamId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "You need to have a permission with action `teams.roles:add` and scope `permissions:type:delegate`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Add team role.",
        "operationId": "addTeamRole",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddTeamRoleCommand"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "teamId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/teams/{teamId}/roles/{roleUID}": {
      "delete": {
        "description": "You need to have a permission with action `teams.roles:remove` and scope `permissions:type:delegate`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Remove team role.",
        "operationId": "removeTeamRole",
        "parameters": [
          {
            "type": "string",
            "name": "roleUID",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "teamId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/users/roles/search": {
      "post": {
        "description": "Lists the roles that have been directly assigned to the given users. The list does not include built-in roles (Viewer, Editor, Admin or Grafana Admin), and it does not include roles that have been inherited from a team.\n\nYou need to have a permission with action `users.roles:read` and scope `users:id:*`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "List roles assigned to multiple users.",
        "operationId": "listUsersRoles",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RolesSearchQuery"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/listUsersRolesResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/users/{userId}/roles": {
      "get": {
        "description": "Lists the roles that have been directly assigned to a given user. The list does not include built-in roles (Viewer, Editor, Admin or Grafana Admin), and it does not include roles that have been inherited from a team.\n\nYou need to have a permission with action `users.roles:read` and scope `users:id:\u003cuser ID\u003e`.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "List roles assigned to a user.",
        "operationId": "listUserRoles",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "userId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getAllRolesResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "description": "Update the user’s role assignments to match the provided set of UIDs. This will remove any assigned roles that aren’t in the request and add roles that are in the set but are not already assigned to the user.\nIf you want to add or remove a single role, consider using Add a user role assignment or Remove a user role assignment instead.\n\nYou need to have a permission with action `users.roles:add` and `users.roles:remove` and scope `permissions:type:delegate` for each. `permissions:type:delegate`  scope ensures that users can only assign or unassign roles which have same, or a subset of permissions which the user has. For example, if a user does not have required permissions for creating users, they won’t be able to assign or unassign a role which will allow to do that. This is done to prevent escalation of privileges.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Set user role assignments.",
        "operationId": "setUserRoles",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SetUserRolesCommand"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "userId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Assign a role to a specific user. For bulk updates consider Set user role assignments.\n\nYou need to have a permission with action `users.roles:add` and scope `permissions:type:delegate`. `permissions:type:delegate` scope ensures that users can only assign roles which have same, or a subset of permissions which the user has. For example, if a user does not have required permissions for creating users, they won’t be able to assign a role which will allow to do that. This is done to prevent escalation of privileges.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Add a user role assignment.",
        "operationId": "addUserRole",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddUserRoleCommand"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "userId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/users/{userId}/roles/{roleUID}": {
      "delete": {
        "description": "Revoke a role from a user. For bulk updates consider Set user role assignments.\n\nYou need to have a permission with action `users.roles:remove` and scope `permissions:type:delegate`. `permissions:type:delegate` scope ensures that users can only unassign roles which have same, or a subset of permissions which the user has. For example, if a user does not have required permissions for creating users, they won’t be able to unassign a role which will allow to do that. This is done to prevent escalation of privileges.",
        "tags": [
          "access_control",
          "enterprise"
        ],
        "summary": "Remove a user role assignment.",
        "operationId": "removeUserRole",
        "parameters": [
          {
            "type": "boolean",
            "description": "A flag indicating if the assignment is global or not. If set to false, the default org ID of the authenticated user will be used from the request to remove assignment.",
            "name": "global",
            "in": "query"
          },
          {
            "type": "string",
            "name": "roleUID",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "userId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/{resource}/description": {
      "get": {
        "tags": [
          "access_control"
        ],
        "summary": "Get a description of a resource's access control properties.",
        "operationId": "getResourceDescription",
        "parameters": [
          {
            "type": "string",
            "name": "resource",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/resourcePermissionsDescription"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/{resource}/{resourceID}": {
      "get": {
        "tags": [
          "access_control"
        ],
        "summary": "Get permissions for a resource.",
        "operationId": "getResourcePermissions",
        "parameters": [
          {
            "type": "string",
            "name": "resource",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "resourceID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getResourcePermissionsResponse"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Assigns permissions for a resource by a given type (`:resource`) and `:resourceID` to one or many\nassignment types. Allowed resources are `datasources`, `teams`, `dashboards`, `folders`, and `serviceaccounts`.\nRefer to the `/access-control/{resource}/description` endpoint for allowed Permissions.",
        "tags": [
          "access_control"
        ],
        "summary": "Set resource permissions.",
        "operationId": "setResourcePermissions",
        "parameters": [
          {
            "type": "string",
            "name": "resource",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "resourceID",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/setPermissionsCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/{resource}/{resourceID}/builtInRoles/{builtInRole}": {
      "post": {
        "description": "Assigns permissions for a resource by a given type (`:resource`) and `:resourceID` to a built-in role.\nAllowed resources are `datasources`, `teams`, `dashboards`, `folders`, and `serviceaccounts`.\nRefer to the `/access-control/{resource}/description` endpoint for allowed Permissions.",
        "tags": [
          "access_control"
        ],
        "summary": "Set resource permissions for a built-in role.",
        "operationId": "setResourcePermissionsForBuiltInRole",
        "parameters": [
          {
            "type": "string",
            "name": "resource",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "resourceID",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "builtInRole",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/setPermissionCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/{resource}/{resourceID}/teams/{teamID}": {
      "post": {
        "description": "Assigns permissions for a resource by a given type (`:resource`) and `:resourceID` to a team.\nAllowed resources are `datasources`, `teams`, `dashboards`, `folders`, and `serviceaccounts`.\nRefer to the `/access-control/{resource}/description` endpoint for allowed Permissions.",
        "tags": [
          "access_control"
        ],
        "summary": "Set resource permissions for a team.",
        "operationId": "setResourcePermissionsForTeam",
        "parameters": [
          {
            "type": "string",
            "name": "resource",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "resourceID",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "teamID",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/setPermissionCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/access-control/{resource}/{resourceID}/users/{userID}": {
      "post": {
        "description": "Assigns permissions for a resource by a given type (`:resource`) and `:resourceID` to a user or a service account.\nAllowed resources are `datasources`, `teams`, `dashboards`, `folders`, and `serviceaccounts`.\nRefer to the `/access-control/{resource}/description` endpoint for allowed Permissions.",
        "tags": [
          "access_control"
        ],
        "summary": "Set resource permissions for a user.",
        "operationId": "setResourcePermissionsForUser",
        "parameters": [
          {
            "type": "string",
            "name": "resource",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "resourceID",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "userID",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/setPermissionCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/ldap-sync-status": {
      "get": {
        "description": "You need to have a permission with action `ldap.status:read`.",
        "tags": [
          "ldap_debug",
          "enterprise"
        ],
        "summary": "Returns the current state of the LDAP background sync integration.",
        "operationId": "getSyncStatus",
        "responses": {
          "200": {
            "$ref": "#/responses/getSyncStatusResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/ldap/reload": {
      "post": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `ldap.config:reload`.",
        "tags": [
          "admin_ldap"
        ],
        "summary": "Reloads the LDAP configuration.",
        "operationId": "reloadLDAPCfg",
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/ldap/status": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `ldap.status:read`.",
        "tags": [
          "admin_ldap"
        ],
        "summary": "Attempts to connect to all the configured LDAP servers and returns information on whenever they're available or not.",
        "operationId": "getLDAPStatus",
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/ldap/sync/{user_id}": {
      "post": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `ldap.user:sync`.",
        "tags": [
          "admin_ldap"
        ],
        "summary": "Enables a single Grafana user to be synchronized against LDAP.",
        "operationId": "postSyncUserWithLDAP",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/ldap/{user_name}": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `ldap.user:read`.",
        "tags": [
          "admin_ldap"
        ],
        "summary": "Finds an user based on a username in LDAP. This helps illustrate how would the particular user be mapped in Grafana when synced.",
        "operationId": "getUserFromLDAP",
        "parameters": [
          {
            "type": "string",
            "name": "user_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/provisioning/access-control/reload": {
      "post": {
        "tags": [
          "access_control_provisioning",
          "enterprise"
        ],
        "summary": "You need to have a permission with action `provisioning:reload` with scope `provisioners:accesscontrol`.",
        "operationId": "adminProvisioningReloadAccessControl",
        "responses": {
          "202": {
            "$ref": "#/responses/acceptedResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          }
        }
      }
    },
    "/admin/provisioning/dashboards/reload": {
      "post": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "Reloads the provisioning config files for dashboards again. It won’t return until the new provisioned entities are already stored in the database. In case of dashboards, it will stop polling for changes in dashboard files and then restart it with new configurations after returning.\nIf you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `provisioning:reload` and scope `provisioners:dashboards`.",
        "tags": [
          "admin_provisioning"
        ],
        "summary": "Reload dashboard provisioning configurations.",
        "operationId": "adminProvisioningReloadDashboards",
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/provisioning/datasources/reload": {
      "post": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "Reloads the provisioning config files for datasources again. It won’t return until the new provisioned entities are already stored in the database. In case of dashboards, it will stop polling for changes in dashboard files and then restart it with new configurations after returning.\nIf you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `provisioning:reload` and scope `provisioners:datasources`.",
        "tags": [
          "admin_provisioning"
        ],
        "summary": "Reload datasource provisioning configurations.",
        "operationId": "adminProvisioningReloadDatasources",
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/provisioning/plugins/reload": {
      "post": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "Reloads the provisioning config files for plugins again. It won’t return until the new provisioned entities are already stored in the database. In case of dashboards, it will stop polling for changes in dashboard files and then restart it with new configurations after returning.\nIf you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `provisioning:reload` and scope `provisioners:plugin`.",
        "tags": [
          "admin_provisioning"
        ],
        "summary": "Reload plugin provisioning configurations.",
        "operationId": "adminProvisioningReloadPlugins",
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/settings": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `settings:read` and scopes: `settings:*`, `settings:auth.saml:` and `settings:auth.saml:enabled` (property level).",
        "tags": [
          "admin"
        ],
        "summary": "Fetch settings.",
        "operationId": "adminGetSettings",
        "responses": {
          "200": {
            "$ref": "#/responses/adminGetSettingsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          }
        }
      }
    },
    "/admin/stats": {
      "get": {
        "description": "Only works with Basic Authentication (username and password). See introduction for an explanation.\nIf you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `server:stats:read`.",
        "tags": [
          "admin"
        ],
        "summary": "Fetch Grafana Stats.",
        "operationId": "adminGetStats",
        "responses": {
          "200": {
            "$ref": "#/responses/adminGetStatsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users": {
      "post": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users:create`.\nNote that OrgId is an optional parameter that can be used to assign a new user to a different organization when `auto_assign_org` is set to `true`.",
        "tags": [
          "admin_users"
        ],
        "summary": "Create new user.",
        "operationId": "adminCreateUser",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AdminCreateUserForm"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/adminCreateUserResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "412": {
            "$ref": "#/responses/preconditionFailedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users/{user_id}": {
      "delete": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users:delete` and scope `global.users:*`.",
        "tags": [
          "admin_users"
        ],
        "summary": "Delete global User.",
        "operationId": "adminDeleteUser",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users/{user_id}/auth-tokens": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users.authtoken:list` and scope `global.users:*`.",
        "tags": [
          "admin_users"
        ],
        "summary": "Return a list of all auth tokens (devices) that the user currently have logged in from.",
        "operationId": "adminGetUserAuthTokens",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/adminGetUserAuthTokensResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users/{user_id}/disable": {
      "post": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users:disable` and scope `global.users:1` (userIDScope).",
        "tags": [
          "admin_users"
        ],
        "summary": "Disable user.",
        "operationId": "adminDisableUser",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users/{user_id}/enable": {
      "post": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users:enable` and scope `global.users:1` (userIDScope).",
        "tags": [
          "admin_users"
        ],
        "summary": "Enable user.",
        "operationId": "adminEnableUser",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users/{user_id}/logout": {
      "post": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users.logout` and scope `global.users:*`.",
        "tags": [
          "admin_users"
        ],
        "summary": "Logout user revokes all auth tokens (devices) for the user. User of issued auth tokens (devices) will no longer be logged in and will be required to authenticate again upon next activity.",
        "operationId": "adminLogoutUser",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users/{user_id}/password": {
      "put": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users.password:update` and scope `global.users:*`.",
        "tags": [
          "admin_users"
        ],
        "summary": "Set password for user.",
        "operationId": "adminUpdateUserPassword",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AdminUpdateUserPasswordForm"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users/{user_id}/permissions": {
      "put": {
        "description": "Only works with Basic Authentication (username and password). See introduction for an explanation.\nIf you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users.permissions:update` and scope `global.users:*`.",
        "tags": [
          "admin_users"
        ],
        "summary": "Set permissions for user.",
        "operationId": "adminUpdateUserPermissions",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AdminUpdateUserPermissionsForm"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users/{user_id}/quotas": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users.quotas:list` and scope `global.users:1` (userIDScope).",
        "tags": [
          "admin_users"
        ],
        "summary": "Fetch user quota.",
        "operationId": "getUserQuota",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getQuotaResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users/{user_id}/quotas/{quota_target}": {
      "put": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users.quotas:update` and scope `global.users:1` (userIDScope).",
        "tags": [
          "admin_users"
        ],
        "summary": "Update user quota.",
        "operationId": "updateUserQuota",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateQuotaCmd"
            }
          },
          {
            "type": "string",
            "name": "quota_target",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/admin/users/{user_id}/revoke-auth-token": {
      "post": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "Revokes the given auth token (device) for the user. User of issued auth token (device) will no longer be logged in and will be required to authenticate again upon next activity.\nIf you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `users.authtoken:update` and scope `global.users:*`.",
        "tags": [
          "admin_users"
        ],
        "summary": "Revoke auth token for user.",
        "operationId": "adminRevokeUserAuthToken",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RevokeAuthTokenCmd"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/annotations": {
      "get": {
        "description": "Starting in Grafana v6.4 regions annotations are now returned in one entity that now includes the timeEnd property.",
        "tags": [
          "annotations"
        ],
        "summary": "Find Annotations.",
        "operationId": "getAnnotations",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "description": "Find annotations created after specific epoch datetime in milliseconds.",
            "name": "from",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "Find annotations created before specific epoch datetime in milliseconds.",
            "name": "to",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "Limit response to annotations created by specific user.",
            "name": "userId",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "Find annotations for a specified alert.",
            "name": "alertId",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "Find annotations that are scoped to a specific dashboard",
            "name": "dashboardId",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Find annotations that are scoped to a specific dashboard",
            "name": "dashboardUID",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "Find annotations that are scoped to a specific panel",
            "name": "panelId",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "Max limit for results returned.",
            "name": "limit",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi",
            "description": "Use this to filter organization annotations. Organization annotations are annotations from an annotation data source that are not connected specifically to a dashboard or panel. You can filter by multiple tags.",
            "name": "tags",
            "in": "query"
          },
          {
            "enum": [
              "alert",
              "annotation"
            ],
            "type": "string",
            "description": "Return alerts or user created annotations",
            "name": "type",
            "in": "query"
          },
          {
            "type": "boolean",
            "description": "Match any or all tags",
            "name": "matchAny",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getAnnotationsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Creates an annotation in the Grafana database. The dashboardId and panelId fields are optional. If they are not specified then an organization annotation is created and can be queried in any dashboard that adds the Grafana annotations data source. When creating a region annotation include the timeEnd property.\nThe format for `time` and `timeEnd` should be epoch numbers in millisecond resolution.\nThe response for this HTTP request is slightly different in versions prior to v6.4. In prior versions you would also get an endId if you where creating a region. But in 6.4 regions are represented using a single event with time and timeEnd properties.",
        "tags": [
          "annotations"
        ],
        "summary": "Create Annotation.",
        "operationId": "postAnnotation",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PostAnnotationsCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/postAnnotationResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/annotations/graphite": {
      "post": {
        "description": "Creates an annotation by using Graphite-compatible event format. The `when` and `data` fields are optional. If `when` is not specified then the current time will be used as annotation’s timestamp. The `tags` field can also be in prior to Graphite `0.10.0` format (string with multiple tags being separated by a space).",
        "tags": [
          "annotations"
        ],
        "summary": "Create Annotation in Graphite format.",
        "operationId": "postGraphiteAnnotation",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PostGraphiteAnnotationsCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/postAnnotationResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/annotations/mass-delete": {
      "post": {
        "tags": [
          "annotations"
        ],
        "summary": "Delete multiple annotations.",
        "operationId": "massDeleteAnnotations",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MassDeleteAnnotationsCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/annotations/tags": {
      "get": {
        "description": "Find all the event tags created in the annotations.",
        "tags": [
          "annotations"
        ],
        "summary": "Find Annotations Tags.",
        "operationId": "getAnnotationTags",
        "parameters": [
          {
            "type": "string",
            "description": "Tag is a string that you can use to filter tags.",
            "name": "tag",
            "in": "query"
          },
          {
            "type": "string",
            "default": "100",
            "description": "Max limit for results returned.",
            "name": "limit",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getAnnotationTagsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/annotations/{annotation_id}": {
      "get": {
        "tags": [
          "annotations"
        ],
        "summary": "Get Annotation by ID.",
        "operationId": "getAnnotationByID",
        "parameters": [
          {
            "type": "string",
            "name": "annotation_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getAnnotationByIDResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "description": "Updates all properties of an annotation that matches the specified id. To only update certain property, consider using the Patch Annotation operation.",
        "tags": [
          "annotations"
        ],
        "summary": "Update Annotation.",
        "operationId": "updateAnnotation",
        "parameters": [
          {
            "type": "string",
            "name": "annotation_id",
            "in": "path",
            "required": true
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateAnnotationsCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Deletes the annotation that matches the specified ID.",
        "tags": [
          "annotations"
        ],
        "summary": "Delete Annotation By ID.",
        "operationId": "deleteAnnotationByID",
        "parameters": [
          {
            "type": "string",
            "name": "annotation_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "patch": {
        "description": "Updates one or more properties of an annotation that matches the specified ID.\nThis operation currently supports updating of the `text`, `tags`, `time` and `timeEnd` properties.\nThis is available in Grafana 6.0.0-beta2 and above.",
        "tags": [
          "annotations"
        ],
        "summary": "Patch Annotation.",
        "operationId": "patchAnnotation",
        "parameters": [
          {
            "type": "string",
            "name": "annotation_id",
            "in": "path",
            "required": true
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PatchAnnotationsCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/auth/keys": {
      "get": {
        "description": "Will return auth keys.\n\nDeprecated: true.\n\nDeprecated. Please use GET /api/serviceaccounts and GET /api/serviceaccounts/{id}/tokens instead\nsee https://grafana.com/docs/grafana/next/administration/api-keys/#migrate-api-keys-to-grafana-service-accounts-using-the-api.",
        "tags": [
          "api_keys"
        ],
        "summary": "Get auth keys.",
        "operationId": "getAPIkeys",
        "parameters": [
          {
            "type": "boolean",
            "default": false,
            "description": "Show expired keys",
            "name": "includeExpired",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getAPIkeyResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Will return details of the created API key.",
        "tags": [
          "api_keys"
        ],
        "summary": "Creates an API key.",
        "operationId": "addAPIkey",
        "deprecated": true,
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddAPIKeyCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/postAPIkeyResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/auth/keys/{id}": {
      "delete": {
        "description": "Deletes an API key.\nDeprecated. See: https://grafana.com/docs/grafana/next/administration/api-keys/#migrate-api-keys-to-grafana-service-accounts-using-the-api.",
        "tags": [
          "api_keys"
        ],
        "summary": "Delete API key.",
        "operationId": "deleteAPIkey",
        "deprecated": true,
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboard/snapshots": {
      "get": {
        "tags": [
          "snapshots"
        ],
        "summary": "List snapshots.",
        "operationId": "searchDashboardSnapshots",
        "parameters": [
          {
            "type": "string",
            "description": "Search Query",
            "name": "query",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "description": "Limit the number of returned results",
            "name": "limit",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/searchDashboardSnapshotsResponse"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/calculate-diff": {
      "post": {
        "produces": [
          "application/json",
          "text/html"
        ],
        "tags": [
          "dashboards"
        ],
        "summary": "Perform diff on two dashboards.",
        "operationId": "calculateDashboardDiff",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "base": {
                  "$ref": "#/definitions/CalculateDiffTarget"
                },
                "diffType": {
                  "description": "The type of diff to return\nDescription:\n`basic`\n`json`",
                  "type": "string",
                  "enum": [
                    "basic",
                    "json"
                  ]
                },
                "new": {
                  "$ref": "#/definitions/CalculateDiffTarget"
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/calculateDashboardDiffResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/db": {
      "post": {
        "description": "Creates a new dashboard or updates an existing dashboard.\nNote: This endpoint is not intended for creating folders, use `POST /api/folders` for that.",
        "tags": [
          "dashboards"
        ],
        "summary": "Create / Update dashboard",
        "operationId": "postDashboard",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SaveDashboardCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/postDashboardResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "412": {
            "$ref": "#/responses/preconditionFailedError"
          },
          "422": {
            "$ref": "#/responses/unprocessableEntityError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/home": {
      "get": {
        "tags": [
          "dashboards"
        ],
        "summary": "Get home dashboard.",
        "operationId": "getHomeDashboard",
        "responses": {
          "200": {
            "$ref": "#/responses/getHomeDashboardResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/id/{DashboardID}/permissions": {
      "get": {
        "description": "Please refer to [updated API](#/dashboard_permissions/getDashboardPermissionsListByUID) instead",
        "tags": [
          "dashboard_permissions"
        ],
        "summary": "Gets all existing permissions for the given dashboard.",
        "operationId": "getDashboardPermissionsListByID",
        "deprecated": true,
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "DashboardID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getDashboardPermissionsListResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Please refer to [updated API](#/dashboard_permissions/updateDashboardPermissionsByUID) instead\n\nThis operation will remove existing permissions if they’re not included in the request.",
        "tags": [
          "dashboard_permissions"
        ],
        "summary": "Updates permissions for a dashboard.",
        "operationId": "updateDashboardPermissionsByID",
        "deprecated": true,
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateDashboardACLCommand"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "DashboardID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/id/{DashboardID}/restore": {
      "post": {
        "description": "Please refer to [updated API](#/dashboard_versions/restoreDashboardVersionByUID) instead",
        "tags": [
          "dashboard_versions"
        ],
        "summary": "Restore a dashboard to a given dashboard version.",
        "operationId": "restoreDashboardVersionByID",
        "deprecated": true,
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RestoreDashboardVersionCommand"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "DashboardID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/postDashboardResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/id/{DashboardID}/versions": {
      "get": {
        "description": "Please refer to [updated API](#/dashboard_versions/getDashboardVersionsByUID) instead",
        "tags": [
          "dashboard_versions"
        ],
        "summary": "Gets all existing versions for the dashboard.",
        "operationId": "getDashboardVersionsByID",
        "deprecated": true,
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "DashboardID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/dashboardVersionsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/id/{DashboardID}/versions/{DashboardVersionID}": {
      "get": {
        "description": "Please refer to [updated API](#/dashboard_versions/getDashboardVersionByUID) instead",
        "tags": [
          "dashboard_versions"
        ],
        "summary": "Get a specific dashboard version.",
        "operationId": "getDashboardVersionByID",
        "deprecated": true,
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "DashboardID",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "DashboardVersionID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/dashboardVersionResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/import": {
      "post": {
        "tags": [
          "dashboards"
        ],
        "summary": "Import dashboard.",
        "operationId": "importDashboard",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ImportDashboardRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/importDashboardResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "412": {
            "$ref": "#/responses/preconditionFailedError"
          },
          "422": {
            "$ref": "#/responses/unprocessableEntityError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/public-dashboards": {
      "get": {
        "description": "Get list of public dashboards",
        "tags": [
          "dashboard_public"
        ],
        "operationId": "listPublicDashboards",
        "responses": {
          "200": {
            "$ref": "#/responses/listPublicDashboardsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedPublicError"
          },
          "403": {
            "$ref": "#/responses/forbiddenPublicError"
          },
          "500": {
            "$ref": "#/responses/internalServerPublicError"
          }
        }
      }
    },
    "/dashboards/tags": {
      "get": {
        "tags": [
          "dashboards"
        ],
        "summary": "Get all dashboards tags of an organisation.",
        "operationId": "getDashboardTags",
        "responses": {
          "200": {
            "$ref": "#/responses/getDashboardsTagsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/uid/{dashboardUid}/public-dashboards": {
      "get": {
        "description": "Get public dashboard by dashboardUid",
        "tags": [
          "dashboard_public"
        ],
        "operationId": "getPublicDashboard",
        "parameters": [
          {
            "type": "string",
            "name": "dashboardUid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getPublicDashboardResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestPublicError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedPublicError"
          },
          "403": {
            "$ref": "#/responses/forbiddenPublicError"
          },
          "404": {
            "$ref": "#/responses/notFoundPublicError"
          },
          "500": {
            "$ref": "#/responses/internalServerPublicError"
          }
        }
      },
      "post": {
        "description": "Create public dashboard for a dashboard",
        "produces": [
          "application/json"
        ],
        "tags": [
          "dashboard_public"
        ],
        "operationId": "createPublicDashboard",
        "parameters": [
          {
            "type": "string",
            "name": "dashboardUid",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PublicDashboardDTO"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createPublicDashboardResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestPublicError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedPublicError"
          },
          "403": {
            "$ref": "#/responses/forbiddenPublicError"
          },
          "500": {
            "$ref": "#/responses/internalServerPublicError"
          }
        }
      }
    },
    "/dashboards/uid/{dashboardUid}/public-dashboards/{uid}": {
      "delete": {
        "description": "Delete public dashboard for a dashboard",
        "tags": [
          "dashboard_public"
        ],
        "operationId": "deletePublicDashboard",
        "parameters": [
          {
            "type": "string",
            "name": "dashboardUid",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestPublicError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedPublicError"
          },
          "403": {
            "$ref": "#/responses/forbiddenPublicError"
          },
          "500": {
            "$ref": "#/responses/internalServerPublicError"
          }
        }
      },
      "patch": {
        "description": "Update public dashboard for a dashboard",
        "produces": [
          "application/json"
        ],
        "tags": [
          "dashboard_public"
        ],
        "operationId": "updatePublicDashboard",
        "parameters": [
          {
            "type": "string",
            "name": "dashboardUid",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PublicDashboardDTO"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/updatePublicDashboardResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestPublicError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedPublicError"
          },
          "403": {
            "$ref": "#/responses/forbiddenPublicError"
          },
          "500": {
            "$ref": "#/responses/internalServerPublicError"
          }
        }
      }
    },
    "/dashboards/uid/{uid}": {
      "get": {
        "description": "Will return the dashboard given the dashboard unique identifier (uid).",
        "tags": [
          "dashboards"
        ],
        "summary": "Get dashboard by uid.",
        "operationId": "getDashboardByUID",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/dashboardResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Will delete the dashboard given the specified unique identifier (uid).",
        "tags": [
          "dashboards"
        ],
        "summary": "Delete dashboard by uid.",
        "operationId": "deleteDashboardByUID",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/deleteDashboardResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/uid/{uid}/permissions": {
      "get": {
        "tags": [
          "dashboard_permissions"
        ],
        "summary": "Gets all existing permissions for the given dashboard.",
        "operationId": "getDashboardPermissionsListByUID",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getDashboardPermissionsListResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "This operation will remove existing permissions if they’re not included in the request.",
        "tags": [
          "dashboard_permissions"
        ],
        "summary": "Updates permissions for a dashboard.",
        "operationId": "updateDashboardPermissionsByUID",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateDashboardACLCommand"
            }
          },
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/uid/{uid}/restore": {
      "post": {
        "tags": [
          "dashboard_versions"
        ],
        "summary": "Restore a dashboard to a given dashboard version using UID.",
        "operationId": "restoreDashboardVersionByUID",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RestoreDashboardVersionCommand"
            }
          },
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/postDashboardResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/uid/{uid}/versions": {
      "get": {
        "tags": [
          "dashboard_versions"
        ],
        "summary": "Gets all existing versions for the dashboard using UID.",
        "operationId": "getDashboardVersionsByUID",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "default": 0,
            "description": "Maximum number of results to return",
            "name": "limit",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "default": 0,
            "description": "Version to start from when returning queries",
            "name": "start",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/dashboardVersionsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/dashboards/uid/{uid}/versions/{DashboardVersionID}": {
      "get": {
        "tags": [
          "dashboard_versions"
        ],
        "summary": "Get a specific dashboard version using UID.",
        "operationId": "getDashboardVersionByUID",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "DashboardVersionID",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/dashboardVersionResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources": {
      "get": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:read` and scope: `datasources:*`.",
        "tags": [
          "datasources"
        ],
        "summary": "Get all data sources.",
        "operationId": "getDataSources",
        "responses": {
          "200": {
            "$ref": "#/responses/getDataSourcesResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "By defining `password` and `basicAuthPassword` under secureJsonData property\nGrafana encrypts them securely as an encrypted blob in the database.\nThe response then lists the encrypted fields under secureJsonFields.\n\nIf you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:create`",
        "tags": [
          "datasources"
        ],
        "summary": "Create a data source.",
        "operationId": "addDataSource",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddDataSourceCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createOrUpdateDatasourceResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/correlations": {
      "get": {
        "tags": [
          "correlations"
        ],
        "summary": "Gets all correlations.",
        "operationId": "getCorrelations",
        "parameters": [
          {
            "maximum": 1000,
            "type": "integer",
            "format": "int64",
            "default": 100,
            "description": "Limit the maximum number of correlations to return per page",
            "name": "limit",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "default": 1,
            "description": "Page index for starting fetching correlations",
            "name": "page",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi",
            "description": "Source datasource UID filter to be applied to correlations",
            "name": "sourceUID",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getCorrelationsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/id/{name}": {
      "get": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:read` and scopes: `datasources:*`, `datasources:name:*` and `datasources:name:test_datasource` (single data source).",
        "tags": [
          "datasources"
        ],
        "summary": "Get data source Id by Name.",
        "operationId": "getDataSourceIdByName",
        "parameters": [
          {
            "type": "string",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getDataSourceIDResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/name/{name}": {
      "get": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:read` and scopes: `datasources:*`, `datasources:name:*` and `datasources:name:test_datasource` (single data source).",
        "tags": [
          "datasources"
        ],
        "summary": "Get a single data source by Name.",
        "operationId": "getDataSourceByName",
        "parameters": [
          {
            "type": "string",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getDataSourceResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:delete` and scopes: `datasources:*`, `datasources:name:*` and `datasources:name:test_datasource` (single data source).",
        "tags": [
          "datasources"
        ],
        "summary": "Delete an existing data source by name.",
        "operationId": "deleteDataSourceByName",
        "parameters": [
          {
            "type": "string",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/deleteDataSourceByNameResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/proxy/uid/{uid}/{datasource_proxy_route}": {
      "get": {
        "description": "Proxies all calls to the actual data source.",
        "tags": [
          "datasources"
        ],
        "summary": "Data source proxy GET calls.",
        "operationId": "datasourceProxyGETByUIDcalls",
        "parameters": [
          {
            "type": "string",
            "name": "datasource_proxy_route",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "(empty)"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Proxies all calls to the actual data source. The data source should support POST methods for the specific path and role as defined",
        "tags": [
          "datasources"
        ],
        "summary": "Data source proxy POST calls.",
        "operationId": "datasourceProxyPOSTByUIDcalls",
        "parameters": [
          {
            "name": "DatasourceProxyParam",
            "in": "body",
            "required": true,
            "schema": {}
          },
          {
            "type": "string",
            "name": "datasource_proxy_route",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "201": {
            "description": "(empty)"
          },
          "202": {
            "description": "(empty)"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Proxies all calls to the actual data source.",
        "tags": [
          "datasources"
        ],
        "summary": "Data source proxy DELETE calls.",
        "operationId": "datasourceProxyDELETEByUIDcalls",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "datasource_proxy_route",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "202": {
            "description": "(empty)"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/proxy/{id}/{datasource_proxy_route}": {
      "get": {
        "description": "Proxies all calls to the actual data source.\n\nPlease refer to [updated API](#/datasources/datasourceProxyGETByUIDcalls) instead",
        "tags": [
          "datasources"
        ],
        "summary": "Data source proxy GET calls.",
        "operationId": "datasourceProxyGETcalls",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "name": "datasource_proxy_route",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "(empty)"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Proxies all calls to the actual data source. The data source should support POST methods for the specific path and role as defined\n\nPlease refer to [updated API](#/datasources/datasourceProxyPOSTByUIDcalls) instead",
        "tags": [
          "datasources"
        ],
        "summary": "Data source proxy POST calls.",
        "operationId": "datasourceProxyPOSTcalls",
        "deprecated": true,
        "parameters": [
          {
            "name": "DatasourceProxyParam",
            "in": "body",
            "required": true,
            "schema": {}
          },
          {
            "type": "string",
            "name": "datasource_proxy_route",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "201": {
            "description": "(empty)"
          },
          "202": {
            "description": "(empty)"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Proxies all calls to the actual data source.\n\nPlease refer to [updated API](#/datasources/datasourceProxyDELETEByUIDcalls) instead",
        "tags": [
          "datasources"
        ],
        "summary": "Data source proxy DELETE calls.",
        "operationId": "datasourceProxyDELETEcalls",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "datasource_proxy_route",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "202": {
            "description": "(empty)"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/uid/{sourceUID}/correlations": {
      "get": {
        "tags": [
          "correlations"
        ],
        "summary": "Gets all correlations originating from the given data source.",
        "operationId": "getCorrelationsBySourceUID",
        "parameters": [
          {
            "type": "string",
            "name": "sourceUID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getCorrelationsBySourceUIDResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "tags": [
          "correlations"
        ],
        "summary": "Add correlation.",
        "operationId": "createCorrelation",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateCorrelationCommand"
            }
          },
          {
            "type": "string",
            "name": "sourceUID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createCorrelationResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/uid/{sourceUID}/correlations/{correlationUID}": {
      "get": {
        "tags": [
          "correlations"
        ],
        "summary": "Gets a correlation.",
        "operationId": "getCorrelation",
        "parameters": [
          {
            "type": "string",
            "name": "sourceUID",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "correlationUID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getCorrelationResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "patch": {
        "tags": [
          "correlations"
        ],
        "summary": "Updates a correlation.",
        "operationId": "updateCorrelation",
        "parameters": [
          {
            "type": "string",
            "name": "sourceUID",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "correlationUID",
            "in": "path",
            "required": true
          },
          {
            "name": "body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/UpdateCorrelationCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/updateCorrelationResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/uid/{uid}": {
      "get": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:read` and scopes: `datasources:*`, `datasources:uid:*` and `datasources:uid:kLtEtcRGk` (single data source).",
        "tags": [
          "datasources"
        ],
        "summary": "Get a single data source by UID.",
        "operationId": "getDataSourceByUID",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getDataSourceResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "description": "Similar to creating a data source, `password` and `basicAuthPassword` should be defined under\nsecureJsonData in order to be stored securely as an encrypted blob in the database. Then, the\nencrypted fields are listed under secureJsonFields section in the response.\n\nIf you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:write` and scopes: `datasources:*`, `datasources:uid:*` and `datasources:uid:1` (single data source).",
        "tags": [
          "datasources"
        ],
        "summary": "Update an existing data source.",
        "operationId": "updateDataSourceByUID",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateDataSourceCommand"
            }
          },
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createOrUpdateDatasourceResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:delete` and scopes: `datasources:*`, `datasources:uid:*` and `datasources:uid:kLtEtcRGk` (single data source).",
        "tags": [
          "datasources"
        ],
        "summary": "Delete an existing data source by UID.",
        "operationId": "deleteDataSourceByUID",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/uid/{uid}/correlations/{correlationUID}": {
      "delete": {
        "tags": [
          "correlations"
        ],
        "summary": "Delete a correlation.",
        "operationId": "deleteCorrelation",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "correlationUID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/deleteCorrelationResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/uid/{uid}/health": {
      "get": {
        "tags": [
          "datasources"
        ],
        "summary": "Sends a health check request to the plugin datasource identified by the UID.",
        "operationId": "checkDatasourceHealthWithUID",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/uid/{uid}/resources/{datasource_proxy_route}": {
      "get": {
        "tags": [
          "datasources"
        ],
        "summary": "Fetch data source resources.",
        "operationId": "callDatasourceResourceWithUID",
        "parameters": [
          {
            "type": "string",
            "name": "datasource_proxy_route",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/{id}": {
      "get": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:read` and scopes: `datasources:*`, `datasources:id:*` and `datasources:id:1` (single data source).\n\nPlease refer to [updated API](#/datasources/getDataSourceByUID) instead",
        "tags": [
          "datasources"
        ],
        "summary": "Get a single data source by Id.",
        "operationId": "getDataSourceByID",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getDataSourceResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "description": "Similar to creating a data source, `password` and `basicAuthPassword` should be defined under\nsecureJsonData in order to be stored securely as an encrypted blob in the database. Then, the\nencrypted fields are listed under secureJsonFields section in the response.\n\nIf you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:write` and scopes: `datasources:*`, `datasources:id:*` and `datasources:id:1` (single data source).\n\nPlease refer to [updated API](#/datasources/updateDataSourceByUID) instead",
        "tags": [
          "datasources"
        ],
        "summary": "Update an existing data source by its sequential ID.",
        "operationId": "updateDataSourceByID",
        "deprecated": true,
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateDataSourceCommand"
            }
          },
          {
            "type": "string",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createOrUpdateDatasourceResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:delete` and scopes: `datasources:*`, `datasources:id:*` and `datasources:id:1` (single data source).\n\nPlease refer to [updated API](#/datasources/deleteDataSourceByUID) instead",
        "tags": [
          "datasources"
        ],
        "summary": "Delete an existing data source by id.",
        "operationId": "deleteDataSourceByID",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/{id}/health": {
      "get": {
        "description": "Please refer to [updated API](#/datasources/checkDatasourceHealthWithUID) instead",
        "tags": [
          "datasources"
        ],
        "summary": "Sends a health check request to the plugin datasource identified by the ID.",
        "operationId": "checkDatasourceHealthByID",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/datasources/{id}/resources/{datasource_proxy_route}": {
      "get": {
        "description": "Please refer to [updated API](#/datasources/callDatasourceResourceWithUID) instead",
        "tags": [
          "datasources"
        ],
        "summary": "Fetch data source resources by Id.",
        "operationId": "callDatasourceResourceByID",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "name": "datasource_proxy_route",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/ds/query": {
      "post": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `datasources:query`.",
        "tags": [
          "ds"
        ],
        "summary": "DataSource query metrics with expressions.",
        "operationId": "queryMetricsWithExpressions",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MetricRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/queryMetricsWithExpressionsRespons"
          },
          "207": {
            "$ref": "#/responses/queryMetricsWithExpressionsRespons"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/folders": {
      "get": {
        "description": "It returns all folders that the authenticated user has permission to view.\nIf nested folders are enabled, it expects an additional query parameter with the parent folder UID\nand returns the immediate subfolders that the authenticated user has permission to view.\nIf the parameter is not supplied then it returns immediate subfolders under the root\nthat the authenticated user has permission to view.",
        "tags": [
          "folders"
        ],
        "summary": "Get all folders.",
        "operationId": "getFolders",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "description": "Limit the maximum number of folders to return",
            "name": "limit",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "default": 1,
            "description": "Page index for starting fetching folders",
            "name": "page",
            "in": "query"
          },
          {
            "type": "string",
            "description": "The parent folder UID",
            "name": "parentUid",
            "in": "query"
          },
          {
            "enum": [
              "Edit",
              "View"
            ],
            "type": "string",
            "default": "View",
            "description": "Set to `Edit` to return folders that the user can edit",
            "name": "permission",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getFoldersResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "If nested folders are enabled then it additionally expects the parent folder UID.",
        "tags": [
          "folders"
        ],
        "summary": "Create folder.",
        "operationId": "createFolder",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateFolderCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/folderResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/folders/id/{folder_id}": {
      "get": {
        "description": "Returns the folder identified by id. This is deprecated.\nPlease refer to [updated API](#/folders/getFolderByUID) instead",
        "tags": [
          "folders"
        ],
        "summary": "Get folder by id.",
        "operationId": "getFolderByID",
        "deprecated": true,
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "folder_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/folderResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/folders/{folder_uid}": {
      "get": {
        "tags": [
          "folders"
        ],
        "summary": "Get folder by uid.",
        "operationId": "getFolderByUID",
        "parameters": [
          {
            "type": "string",
            "name": "folder_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/folderResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "tags": [
          "folders"
        ],
        "summary": "Update folder.",
        "operationId": "updateFolder",
        "parameters": [
          {
            "type": "string",
            "name": "folder_uid",
            "in": "path",
            "required": true
          },
          {
            "description": "To change the unique identifier (uid), provide another one.\nTo overwrite an existing folder with newer version, set `overwrite` to `true`.\nProvide the current version to safelly update the folder: if the provided version differs from the stored one the request will fail, unless `overwrite` is `true`.",
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateFolderCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/folderResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Deletes an existing folder identified by UID along with all dashboards (and their alerts) stored in the folder. This operation cannot be reverted.\nIf nested folders are enabled then it also deletes all the subfolders.",
        "tags": [
          "folders"
        ],
        "summary": "Delete folder.",
        "operationId": "deleteFolder",
        "parameters": [
          {
            "type": "string",
            "name": "folder_uid",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "default": false,
            "description": "If `true` any Grafana 8 Alerts under this folder will be deleted.\nSet to `false` so that the request will fail if the folder contains any Grafana 8 Alerts.",
            "name": "forceDeleteRules",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/deleteFolderResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/folders/{folder_uid}/counts": {
      "get": {
        "tags": [
          "folders"
        ],
        "summary": "Gets the count of each descendant of a folder by kind. The folder is identified by UID.",
        "operationId": "getFolderDescendantCounts",
        "parameters": [
          {
            "type": "string",
            "name": "folder_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getFolderDescendantCountsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/folders/{folder_uid}/move": {
      "post": {
        "tags": [
          "folders"
        ],
        "summary": "Move folder.",
        "operationId": "moveFolder",
        "parameters": [
          {
            "type": "string",
            "name": "folder_uid",
            "in": "path",
            "required": true
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MoveFolderCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/folderResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/folders/{folder_uid}/permissions": {
      "get": {
        "tags": [
          "folder_permissions"
        ],
        "summary": "Gets all existing permissions for the folder with the given `uid`.",
        "operationId": "getFolderPermissionList",
        "parameters": [
          {
            "type": "string",
            "name": "folder_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getFolderPermissionListResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "tags": [
          "folder_permissions"
        ],
        "summary": "Updates permissions for a folder. This operation will remove existing permissions if they’re not included in the request.",
        "operationId": "updateFolderPermissions",
        "parameters": [
          {
            "type": "string",
            "name": "folder_uid",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateDashboardACLCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/library-elements": {
      "get": {
        "description": "Returns a list of all library elements the authenticated user has permission to view.\nUse the `perPage` query parameter to control the maximum number of library elements returned; the default limit is `100`.\nYou can also use the `page` query parameter to fetch library elements from any page other than the first one.",
        "tags": [
          "library_elements"
        ],
        "summary": "Get all library elements.",
        "operationId": "getLibraryElements",
        "parameters": [
          {
            "type": "string",
            "description": "Part of the name or description searched for.",
            "name": "searchString",
            "in": "query"
          },
          {
            "enum": [
              1,
              2
            ],
            "type": "integer",
            "format": "int64",
            "description": "Kind of element to search for.",
            "name": "kind",
            "in": "query"
          },
          {
            "enum": [
              "alpha-asc",
              "alpha-desc"
            ],
            "type": "string",
            "description": "Sort order of elements.",
            "name": "sortDirection",
            "in": "query"
          },
          {
            "type": "string",
            "description": "A comma separated list of types to filter the elements by",
            "name": "typeFilter",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Element UID to exclude from search results.",
            "name": "excludeUid",
            "in": "query"
          },
          {
            "type": "string",
            "description": "A comma separated list of folder ID(s) to filter the elements by.",
            "name": "folderFilter",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "default": 100,
            "description": "The number of results per page.",
            "name": "perPage",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "default": 1,
            "description": "The page for a set of records, given that only perPage records are returned at a time. Numbering starts at 1.",
            "name": "page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getLibraryElementsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Creates a new library element.",
        "tags": [
          "library_elements"
        ],
        "summary": "Create library element.",
        "operationId": "createLibraryElement",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateLibraryElementCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getLibraryElementResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/library-elements/name/{library_element_name}": {
      "get": {
        "description": "Returns a library element with the given name.",
        "tags": [
          "library_elements"
        ],
        "summary": "Get library element by name.",
        "operationId": "getLibraryElementByName",
        "parameters": [
          {
            "type": "string",
            "name": "library_element_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getLibraryElementArrayResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/library-elements/{library_element_uid}": {
      "get": {
        "description": "Returns a library element with the given UID.",
        "tags": [
          "library_elements"
        ],
        "summary": "Get library element by UID.",
        "operationId": "getLibraryElementByUID",
        "parameters": [
          {
            "type": "string",
            "name": "library_element_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getLibraryElementResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Deletes an existing library element as specified by the UID. This operation cannot be reverted.\nYou cannot delete a library element that is connected. This operation cannot be reverted.",
        "tags": [
          "library_elements"
        ],
        "summary": "Delete library element.",
        "operationId": "deleteLibraryElementByUID",
        "parameters": [
          {
            "type": "string",
            "name": "library_element_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "patch": {
        "description": "Updates an existing library element identified by uid.",
        "tags": [
          "library_elements"
        ],
        "summary": "Update library element.",
        "operationId": "updateLibraryElement",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PatchLibraryElementCommand"
            }
          },
          {
            "type": "string",
            "name": "library_element_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getLibraryElementResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "412": {
            "$ref": "#/responses/preconditionFailedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/library-elements/{library_element_uid}/connections/": {
      "get": {
        "description": "Returns a list of connections for a library element based on the UID specified.",
        "tags": [
          "library_elements"
        ],
        "summary": "Get library element connections.",
        "operationId": "getLibraryElementConnections",
        "parameters": [
          {
            "type": "string",
            "name": "library_element_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getLibraryElementConnectionsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/licensing/check": {
      "get": {
        "tags": [
          "licensing",
          "enterprise"
        ],
        "summary": "Check license availability.",
        "operationId": "getStatus",
        "responses": {
          "200": {
            "$ref": "#/responses/getStatusResponse"
          }
        }
      }
    },
    "/licensing/custom-permissions": {
      "get": {
        "description": "You need to have a permission with action `licensing.reports:read`.",
        "tags": [
          "licensing",
          "enterprise"
        ],
        "summary": "Get custom permissions report.",
        "operationId": "getCustomPermissionsReport",
        "deprecated": true,
        "responses": {
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/licensing/custom-permissions-csv": {
      "get": {
        "description": "You need to have a permission with action `licensing.reports:read`.",
        "produces": [
          "text/csv"
        ],
        "tags": [
          "licensing",
          "enterprise"
        ],
        "summary": "Get custom permissions report in CSV format.",
        "operationId": "getCustomPermissionsCSV",
        "deprecated": true,
        "responses": {
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/licensing/refresh-stats": {
      "get": {
        "description": "You need to have a permission with action `licensing:read`.",
        "tags": [
          "licensing",
          "enterprise"
        ],
        "summary": "Refresh license stats.",
        "operationId": "refreshLicenseStats",
        "responses": {
          "200": {
            "$ref": "#/responses/refreshLicenseStatsResponse"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/licensing/token": {
      "get": {
        "description": "You need to have a permission with action `licensing:read`.",
        "tags": [
          "licensing",
          "enterprise"
        ],
        "summary": "Get license token.",
        "operationId": "getLicenseToken",
        "responses": {
          "200": {
            "$ref": "#/responses/getLicenseTokenResponse"
          }
        }
      },
      "post": {
        "description": "You need to have a permission with action `licensing:update`.",
        "tags": [
          "licensing",
          "enterprise"
        ],
        "summary": "Create license token.",
        "operationId": "postLicenseToken",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DeleteTokenCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getLicenseTokenResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          }
        }
      },
      "delete": {
        "description": "Removes the license stored in the Grafana database. Available in Grafana Enterprise v7.4+.\n\nYou need to have a permission with action `licensing:delete`.",
        "tags": [
          "licensing",
          "enterprise"
        ],
        "summary": "Remove license from database.",
        "operationId": "deleteLicenseToken",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DeleteTokenCommand"
            }
          }
        ],
        "responses": {
          "202": {
            "$ref": "#/responses/acceptedResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "422": {
            "$ref": "#/responses/unprocessableEntityError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/licensing/token/renew": {
      "post": {
        "description": "Manually ask license issuer for a new token. Available in Grafana Enterprise v7.4+.\n\nYou need to have a permission with action `licensing:update`.",
        "tags": [
          "licensing",
          "enterprise"
        ],
        "summary": "Manually force license refresh.",
        "operationId": "postRenewLicenseToken",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/postRenewLicenseTokenResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          }
        }
      }
    },
    "/logout/saml": {
      "get": {
        "tags": [
          "saml",
          "enterprise"
        ],
        "summary": "GetLogout initiates single logout process.",
        "operationId": "getSAMLLogout",
        "responses": {
          "302": {
            "description": "(empty)"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/org": {
      "get": {
        "tags": [
          "org"
        ],
        "summary": "Get current Organization.",
        "operationId": "getCurrentOrg",
        "responses": {
          "200": {
            "$ref": "#/responses/getCurrentOrgResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "tags": [
          "org"
        ],
        "summary": "Update current Organization.",
        "operationId": "updateCurrentOrg",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateOrgForm"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/org/address": {
      "put": {
        "tags": [
          "org"
        ],
        "summary": "Update current Organization's address.",
        "operationId": "updateCurrentOrgAddress",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateOrgAddressForm"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/org/invites": {
      "get": {
        "tags": [
          "org_invites"
        ],
        "summary": "Get pending invites.",
        "operationId": "getPendingOrgInvites",
        "responses": {
          "200": {
            "$ref": "#/responses/getPendingOrgInvitesResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "tags": [
          "org_invites"
        ],
        "summary": "Add invite.",
        "operationId": "addOrgInvite",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddInviteForm"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "412": {
            "$ref": "#/responses/SMTPNotEnabledError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/org/invites/{invitation_code}/revoke": {
      "delete": {
        "tags": [
          "org_invites"
        ],
        "summary": "Revoke invite.",
        "operationId": "revokeInvite",
        "parameters": [
          {
            "type": "string",
            "name": "invitation_code",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/org/preferences": {
      "get": {
        "tags": [
          "org_preferences"
        ],
        "summary": "Get Current Org Prefs.",
        "operationId": "getOrgPreferences",
        "responses": {
          "200": {
            "$ref": "#/responses/getPreferencesResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "tags": [
          "org_preferences"
        ],
        "summary": "Update Current Org Prefs.",
        "operationId": "updateOrgPreferences",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdatePrefsCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "patch": {
        "tags": [
          "org_preferences"
        ],
        "summary": "Patch Current Org Prefs.",
        "operationId": "patchOrgPreferences",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PatchPrefsCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/org/quotas": {
      "get": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `orgs.quotas:read` and scope `org:id:1` (orgIDScope).",
        "tags": [
          "getCurrentOrg"
        ],
        "summary": "Fetch Organization quota.",
        "operationId": "getCurrentOrgQuota",
        "responses": {
          "200": {
            "$ref": "#/responses/getQuotaResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/org/users": {
      "get": {
        "description": "Returns all org users within the current organization. Accessible to users with org admin role.\nIf you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `org.users:read` with scope `users:*`.",
        "tags": [
          "org"
        ],
        "summary": "Get all users within the current organization.",
        "operationId": "getOrgUsersForCurrentOrg",
        "responses": {
          "200": {
            "$ref": "#/responses/getOrgUsersForCurrentOrgResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Adds a global user to the current organization.\n\nIf you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `org.users:add` with scope `users:*`.",
        "tags": [
          "org"
        ],
        "summary": "Add a new user to the current organization.",
        "operationId": "addOrgUserToCurrentOrg",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddOrgUserCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/org/users/lookup": {
      "get": {
        "description": "Returns all org users within the current organization, but with less detailed information.\nAccessible to users with org admin role, admin in any folder or admin of any team.\nMainly used by Grafana UI for providing list of users when adding team members and when editing folder/dashboard permissions.",
        "tags": [
          "org"
        ],
        "summary": "Get all users within the current organization (lookup)",
        "operationId": "getOrgUsersForCurrentOrgLookup",
        "parameters": [
          {
            "type": "string",
            "name": "query",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "limit",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getOrgUsersForCurrentOrgLookupResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/org/users/{user_id}": {
      "delete": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `org.users:remove` with scope `users:*`.",
        "tags": [
          "org"
        ],
        "summary": "Delete user in current organization.",
        "operationId": "removeOrgUserForCurrentOrg",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "patch": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `org.users.role:update` with scope `users:*`.",
        "tags": [
          "org"
        ],
        "summary": "Updates the given user.",
        "operationId": "updateOrgUserForCurrentOrg",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateOrgUserCommand"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/orgs": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "tags": [
          "orgs"
        ],
        "summary": "Search all Organizations.",
        "operationId": "searchOrgs",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "default": 1,
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "description": "Number of items per page\nThe totalCount field in the response can be used for pagination list E.g. if totalCount is equal to 100 teams and the perpage parameter is set to 10 then there are 10 pages of teams.",
            "name": "perpage",
            "in": "query"
          },
          {
            "type": "string",
            "name": "name",
            "in": "query"
          },
          {
            "type": "string",
            "description": "If set it will return results where the query value is contained in the name field. Query values with spaces need to be URL encoded.",
            "name": "query",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/searchOrgsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Only works if [users.allow_org_create](https://grafana.com/docs/grafana/latest/administration/configuration/#allow_org_create) is set.",
        "tags": [
          "orgs"
        ],
        "summary": "Create Organization.",
        "operationId": "createOrg",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateOrgCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createOrgResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/orgs/name/{org_name}": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "tags": [
          "orgs"
        ],
        "summary": "Get Organization by ID.",
        "operationId": "getOrgByName",
        "parameters": [
          {
            "type": "string",
            "name": "org_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getOrgByNameResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/orgs/{org_id}": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "tags": [
          "orgs"
        ],
        "summary": "Get Organization by ID.",
        "operationId": "getOrgByID",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getOrgByIDResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "security": [
          {
            "basic": []
          }
        ],
        "tags": [
          "orgs"
        ],
        "summary": "Update Organization.",
        "operationId": "updateOrg",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateOrgForm"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "security": [
          {
            "basic": []
          }
        ],
        "tags": [
          "orgs"
        ],
        "summary": "Delete Organization.",
        "operationId": "deleteOrgByID",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/orgs/{org_id}/address": {
      "put": {
        "tags": [
          "orgs"
        ],
        "summary": "Update Organization's address.",
        "operationId": "updateOrgAddress",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateOrgAddressForm"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/orgs/{org_id}/quotas": {
      "get": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `orgs.quotas:read` and scope `org:id:1` (orgIDScope).",
        "tags": [
          "orgs"
        ],
        "summary": "Fetch Organization quota.",
        "operationId": "getOrgQuota",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getQuotaResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/orgs/{org_id}/quotas/{quota_target}": {
      "put": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, you need to have a permission with action `orgs.quotas:write` and scope `org:id:1` (orgIDScope).",
        "tags": [
          "orgs"
        ],
        "summary": "Update user quota.",
        "operationId": "updateOrgQuota",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateQuotaCmd"
            }
          },
          {
            "type": "string",
            "name": "quota_target",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/orgs/{org_id}/users": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `org.users:read` with scope `users:*`.",
        "tags": [
          "orgs"
        ],
        "summary": "Get Users in Organization.",
        "operationId": "getOrgUsers",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getOrgUsersResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Adds a global user to the current organization.\n\nIf you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `org.users:add` with scope `users:*`.",
        "tags": [
          "orgs"
        ],
        "summary": "Add a new user to the current organization.",
        "operationId": "addOrgUser",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddOrgUserCommand"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/orgs/{org_id}/users/search": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `org.users:read` with scope `users:*`.",
        "tags": [
          "orgs"
        ],
        "summary": "Search Users in Organization.",
        "operationId": "searchOrgUsers",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/searchOrgUsersResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/orgs/{org_id}/users/{user_id}": {
      "delete": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `org.users:remove` with scope `users:*`.",
        "tags": [
          "orgs"
        ],
        "summary": "Delete user in current organization.",
        "operationId": "removeOrgUser",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "patch": {
        "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled\nyou need to have a permission with action: `org.users.role:update` with scope `users:*`.",
        "tags": [
          "orgs"
        ],
        "summary": "Update Users in Organization.",
        "operationId": "updateOrgUser",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateOrgUserCommand"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/playlists": {
      "get": {
        "tags": [
          "playlists"
        ],
        "summary": "Get playlists.",
        "operationId": "searchPlaylists",
        "parameters": [
          {
            "type": "string",
            "name": "query",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "in:limit",
            "name": "limit",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/searchPlaylistsResponse"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "tags": [
          "playlists"
        ],
        "summary": "Create playlist.",
        "operationId": "createPlaylist",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreatePlaylistCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createPlaylistResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/playlists/{uid}": {
      "get": {
        "tags": [
          "playlists"
        ],
        "summary": "Get playlist.",
        "operationId": "getPlaylist",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getPlaylistResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "tags": [
          "playlists"
        ],
        "summary": "Update playlist.",
        "operationId": "updatePlaylist",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdatePlaylistCommand"
            }
          },
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/updatePlaylistResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "tags": [
          "playlists"
        ],
        "summary": "Delete playlist.",
        "operationId": "deletePlaylist",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/playlists/{uid}/items": {
      "get": {
        "tags": [
          "playlists"
        ],
        "summary": "Get playlist items.",
        "operationId": "getPlaylistItems",
        "parameters": [
          {
            "type": "string",
            "name": "uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getPlaylistItemsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/public/dashboards/{accessToken}": {
      "get": {
        "description": "Get public dashboard for view",
        "tags": [
          "dashboard_public"
        ],
        "operationId": "viewPublicDashboard",
        "parameters": [
          {
            "type": "string",
            "name": "accessToken",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/viewPublicDashboardResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestPublicError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedPublicError"
          },
          "403": {
            "$ref": "#/responses/forbiddenPublicError"
          },
          "404": {
            "$ref": "#/responses/notFoundPublicError"
          },
          "500": {
            "$ref": "#/responses/internalServerPublicError"
          }
        }
      }
    },
    "/public/dashboards/{accessToken}/annotations": {
      "get": {
        "description": "Get annotations for a public dashboard",
        "tags": [
          "dashboard_public"
        ],
        "operationId": "getPublicAnnotations",
        "parameters": [
          {
            "type": "string",
            "name": "accessToken",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getPublicAnnotationsResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestPublicError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedPublicError"
          },
          "403": {
            "$ref": "#/responses/forbiddenPublicError"
          },
          "404": {
            "$ref": "#/responses/notFoundPublicError"
          },
          "500": {
            "$ref": "#/responses/internalServerPublicError"
          }
        }
      }
    },
    "/public/dashboards/{accessToken}/panels/{panelId}/query": {
      "post": {
        "description": "Get results for a given panel on a public dashboard",
        "tags": [
          "dashboard_public"
        ],
        "operationId": "queryPublicDashboard",
        "parameters": [
          {
            "type": "string",
            "name": "accessToken",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "panelId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/queryPublicDashboardResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestPublicError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedPublicError"
          },
          "403": {
            "$ref": "#/responses/forbiddenPublicError"
          },
          "404": {
            "$ref": "#/responses/notFoundPublicError"
          },
          "500": {
            "$ref": "#/responses/internalServerPublicError"
          }
        }
      }
    },
    "/query-history": {
      "get": {
        "description": "Returns a list of queries in the query history that matches the search criteria.\nQuery history search supports pagination. Use the `limit` parameter to control the maximum number of queries returned; the default limit is 100.\nYou can also use the `page` query parameter to fetch queries from any page other than the first one.",
        "tags": [
          "query_history"
        ],
        "summary": "Query history search.",
        "operationId": "searchQueries",
        "parameters": [
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi",
            "description": "List of data source UIDs to search for",
            "name": "datasourceUid",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Text inside query or comments that is searched for",
            "name": "searchString",
            "in": "query"
          },
          {
            "type": "boolean",
            "description": "Flag indicating if only starred queries should be returned",
            "name": "onlyStarred",
            "in": "query"
          },
          {
            "enum": [
              "time-desc",
              "time-asc"
            ],
            "type": "string",
            "default": "time-desc",
            "description": "Sort method",
            "name": "sort",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "Use this parameter to access hits beyond limit. Numbering starts at 1. limit param acts as page size.",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "Limit the number of returned results",
            "name": "limit",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "From range for the query history search",
            "name": "from",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "To range for the query history search",
            "name": "to",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getQueryHistorySearchResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Adds new query to query history.",
        "tags": [
          "query_history"
        ],
        "summary": "Add query to query history.",
        "operationId": "createQuery",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateQueryInQueryHistoryCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getQueryHistoryResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/query-history/star/{query_history_uid}": {
      "post": {
        "description": "Adds star to query in query history as specified by the UID.",
        "tags": [
          "query_history"
        ],
        "summary": "Add star to query in query history.",
        "operationId": "starQuery",
        "parameters": [
          {
            "type": "string",
            "name": "query_history_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getQueryHistoryResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Removes star from query in query history as specified by the UID.",
        "tags": [
          "query_history"
        ],
        "summary": "Remove star to query in query history.",
        "operationId": "unstarQuery",
        "parameters": [
          {
            "type": "string",
            "name": "query_history_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getQueryHistoryResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/query-history/{query_history_uid}": {
      "delete": {
        "description": "Deletes an existing query in query history as specified by the UID. This operation cannot be reverted.",
        "tags": [
          "query_history"
        ],
        "summary": "Delete query in query history.",
        "operationId": "deleteQuery",
        "parameters": [
          {
            "type": "string",
            "name": "query_history_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getQueryHistoryDeleteQueryResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "patch": {
        "description": "Updates comment for query in query history as specified by the UID.",
        "tags": [
          "query_history"
        ],
        "summary": "Update comment for query in query history.",
        "operationId": "patchQueryComment",
        "parameters": [
          {
            "type": "string",
            "name": "query_history_uid",
            "in": "path",
            "required": true
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PatchQueryCommentInQueryHistoryCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getQueryHistoryResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/recording-rules": {
      "get": {
        "tags": [
          "recording_rules",
          "enterprise"
        ],
        "summary": "Lists all rules in the database: active or deleted.",
        "operationId": "listRecordingRules",
        "responses": {
          "200": {
            "$ref": "#/responses/listRecordingRulesResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "tags": [
          "recording_rules",
          "enterprise"
        ],
        "summary": "Update the active status of a rule.",
        "operationId": "updateRecordingRule",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RecordingRuleJSON"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/recordingRuleResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "tags": [
          "recording_rules",
          "enterprise"
        ],
        "summary": "Create a recording rule that is then registered and started.",
        "operationId": "createRecordingRule",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RecordingRuleJSON"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/recordingRuleResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/recording-rules/test": {
      "post": {
        "tags": [
          "recording_rules",
          "enterprise"
        ],
        "summary": "Test a recording rule.",
        "operationId": "testCreateRecordingRule",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RecordingRuleJSON"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "422": {
            "$ref": "#/responses/unprocessableEntityError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/recording-rules/writer": {
      "get": {
        "tags": [
          "recording_rules",
          "enterprise"
        ],
        "summary": "Return the prometheus remote write target.",
        "operationId": "getRecordingRuleWriteTarget",
        "responses": {
          "200": {
            "$ref": "#/responses/recordingRuleWriteTargetResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "It returns a 422 if there is not an existing prometheus data source configured.",
        "tags": [
          "recording_rules",
          "enterprise"
        ],
        "summary": "Create a remote write target.",
        "operationId": "createRecordingRuleWriteTarget",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PrometheusRemoteWriteTargetJSON"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/recordingRuleWriteTargetResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "422": {
            "$ref": "#/responses/unprocessableEntityError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "tags": [
          "recording_rules",
          "enterprise"
        ],
        "summary": "Delete the remote write target.",
        "operationId": "deleteRecordingRuleWriteTarget",
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/recording-rules/{recordingRuleID}": {
      "delete": {
        "tags": [
          "recording_rules",
          "enterprise"
        ],
        "summary": "Delete removes the rule from the registry and stops it.",
        "operationId": "deleteRecordingRule",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "recordingRuleID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/reports": {
      "get": {
        "description": "Available to org admins only and with a valid or expired license.\n\nYou need to have a permission with action `reports:read` with scope `reports:*`.",
        "tags": [
          "reports",
          "enterprise"
        ],
        "summary": "List reports.",
        "operationId": "getReports",
        "responses": {
          "200": {
            "$ref": "#/responses/getReportsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Available to org admins only and with a valid license.\n\nYou need to have a permission with action `reports.admin:create`.",
        "tags": [
          "reports",
          "enterprise"
        ],
        "summary": "Create a report.",
        "operationId": "createReport",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateOrUpdateReportConfig"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createReportResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/reports/email": {
      "post": {
        "description": "Generate and send a report. This API waits for the report to be generated before returning. We recommend that you set the client’s timeout to at least 60 seconds. Available to org admins only and with a valid license.\n\nOnly available in Grafana Enterprise v7.0+.\nThis API endpoint is experimental and may be deprecated in a future release. On deprecation, a migration strategy will be provided and the endpoint will remain functional until the next major release of Grafana.\n\nYou need to have a permission with action `reports:send`.",
        "tags": [
          "reports",
          "enterprise"
        ],
        "summary": "Send a report.",
        "operationId": "sendReport",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReportEmail"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/reports/render/pdfs": {
      "get": {
        "description": "Available to all users and with a valid license.",
        "produces": [
          "application/pdf"
        ],
        "tags": [
          "reports",
          "enterprise"
        ],
        "summary": "Render report for multiple dashboards.",
        "operationId": "renderReportPDFs",
        "parameters": [
          {
            "type": "string",
            "name": "dashboardID",
            "in": "query"
          },
          {
            "type": "string",
            "name": "orientation",
            "in": "query"
          },
          {
            "type": "string",
            "name": "layout",
            "in": "query"
          },
          {
            "type": "string",
            "name": "title",
            "in": "query"
          },
          {
            "type": "string",
            "name": "scaleFactor",
            "in": "query"
          },
          {
            "type": "string",
            "name": "includeTables",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/contentResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/reports/settings": {
      "get": {
        "description": "Available to org admins only and with a valid or expired license.\n\nYou need to have a permission with action `reports.settings:read`x.",
        "tags": [
          "reports",
          "enterprise"
        ],
        "summary": "Get settings.",
        "operationId": "getReportSettings",
        "responses": {
          "200": {
            "$ref": "#/responses/getReportSettingsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Available to org admins only and with a valid or expired license.\n\nYou need to have a permission with action `reports.settings:write`xx.",
        "tags": [
          "reports",
          "enterprise"
        ],
        "summary": "Save settings.",
        "operationId": "saveReportSettings",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReportSettings"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/reports/test-email": {
      "post": {
        "description": "Available to org admins only and with a valid license.\n\nYou need to have a permission with action `reports:send`.",
        "tags": [
          "reports",
          "enterprise"
        ],
        "summary": "Send test report via email.",
        "operationId": "sendTestEmail",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateOrUpdateReportConfig"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/reports/{id}": {
      "get": {
        "description": "Available to org admins only and with a valid or expired license.\n\nYou need to have a permission with action `reports:read` with scope `reports:id:\u003creport ID\u003e`.",
        "tags": [
          "reports",
          "enterprise"
        ],
        "summary": "Get a report.",
        "operationId": "getReport",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getReportResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "description": "Available to org admins only and with a valid or expired license.\n\nYou need to have a permission with action `reports.admin:write` with scope `reports:id:\u003creport ID\u003e`.",
        "tags": [
          "reports",
          "enterprise"
        ],
        "summary": "Update a report.",
        "operationId": "updateReport",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateOrUpdateReportConfig"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Available to org admins only and with a valid or expired license.\n\nYou need to have a permission with action `reports.delete` with scope `reports:id:\u003creport ID\u003e`.",
        "tags": [
          "reports",
          "enterprise"
        ],
        "summary": "Delete a report.",
        "operationId": "deleteReport",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/saml/acs": {
      "post": {
        "tags": [
          "saml",
          "enterprise"
        ],
        "summary": "It performs Assertion Consumer Service (ACS).",
        "operationId": "postACS",
        "parameters": [
          {
            "type": "string",
            "name": "RelayState",
            "in": "query"
          }
        ],
        "responses": {
          "302": {
            "description": "(empty)"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/saml/metadata": {
      "get": {
        "produces": [
          "application/xml;application/samlmetadata+xml"
        ],
        "tags": [
          "saml",
          "enterprise"
        ],
        "summary": "It exposes the SP (Grafana's) metadata for the IdP's consumption.",
        "operationId": "getMetadata",
        "responses": {
          "200": {
            "$ref": "#/responses/contentResponse"
          }
        }
      }
    },
    "/saml/slo": {
      "get": {
        "description": "There might be two possible requests:\n1. Logout response (callback) when Grafana initiates single logout and IdP returns response to logout request.\n2. Logout request when another SP initiates single logout and IdP sends logout request to the Grafana,\nor in case of IdP-initiated logout.",
        "tags": [
          "saml",
          "enterprise"
        ],
        "summary": "It performs Single Logout (SLO) callback.",
        "operationId": "getSLO",
        "responses": {
          "302": {
            "description": "(empty)"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "There might be two possible requests:\n1. Logout response (callback) when Grafana initiates single logout and IdP returns response to logout request.\n2. Logout request when another SP initiates single logout and IdP sends logout request to the Grafana,\nor in case of IdP-initiated logout.",
        "tags": [
          "saml",
          "enterprise"
        ],
        "summary": "It performs Single Logout (SLO) callback.",
        "operationId": "postSLO",
        "parameters": [
          {
            "type": "string",
            "name": "SAMLRequest",
            "in": "query"
          },
          {
            "type": "string",
            "name": "SAMLResponse",
            "in": "query"
          }
        ],
        "responses": {
          "302": {
            "description": "(empty)"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/search": {
      "get": {
        "tags": [
          "search"
        ],
        "operationId": "search",
        "parameters": [
          {
            "type": "string",
            "description": "Search Query",
            "name": "query",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi",
            "description": "List of tags to search for",
            "name": "tag",
            "in": "query"
          },
          {
            "enum": [
              "dash-folder",
              "dash-db"
            ],
            "type": "string",
            "description": "Type to search for, dash-folder or dash-db",
            "name": "type",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "description": "List of dashboard id’s to search for\nThis is deprecated: users should use the `dashboardUIDs` query parameter instead",
            "name": "dashboardIds",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of dashboard uid’s to search for",
            "name": "dashboardUIDs",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "description": "List of folder id’s to search in for dashboards\nIf it's `0` then it will query for the top level folders\nThis is deprecated: users should use the `folderUIDs` query parameter instead",
            "name": "folderIds",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of folder UID’s to search in for dashboards\nIf it's an empty string then it will query for the top level folders",
            "name": "folderUIDs",
            "in": "query"
          },
          {
            "type": "boolean",
            "description": "Flag indicating if only starred Dashboards should be returned",
            "name": "starred",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "Limit the number of returned results (max 5000)",
            "name": "limit",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "Use this parameter to access hits beyond limit. Numbering starts at 1. limit param acts as page size. Only available in Grafana v6.2+.",
            "name": "page",
            "in": "query"
          },
          {
            "enum": [
              "Edit",
              "View"
            ],
            "type": "string",
            "default": "View",
            "description": "Set to `Edit` to return dashboards/folders that the user can edit",
            "name": "permission",
            "in": "query"
          },
          {
            "enum": [
              "alpha-asc",
              "alpha-desc"
            ],
            "type": "string",
            "default": "alpha-asc",
            "description": "Sort method; for listing all the possible sort methods use the search sorting endpoint.",
            "name": "sort",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/searchResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "422": {
            "$ref": "#/responses/unprocessableEntityError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "produces": [
          "application/json"
        ],
        "tags": [
          "devices"
        ],
        "summary": "Lists all devices within the last 30 days",
        "operationId": "SearchDevices",
        "responses": {
          "200": {
            "$ref": "#/responses/devicesSearchResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/search/sorting": {
      "get": {
        "tags": [
          "search"
        ],
        "summary": "List search sorting options.",
        "operationId": "listSortOptions",
        "responses": {
          "200": {
            "$ref": "#/responses/listSortOptionsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          }
        }
      }
    },
    "/serviceaccounts": {
      "post": {
        "description": "Required permissions (See note in the [introduction](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api) for an explanation):\naction: `serviceaccounts:write` scope: `serviceaccounts:*`\n\nRequires basic authentication and that the authenticated user is a Grafana Admin.",
        "tags": [
          "service_accounts"
        ],
        "summary": "Create service account",
        "operationId": "createServiceAccount",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/CreateServiceAccountForm"
            }
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/createServiceAccountResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/serviceaccounts/search": {
      "get": {
        "description": "Required permissions (See note in the [introduction](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api) for an explanation):\naction: `serviceaccounts:read` scope: `serviceaccounts:*`",
        "tags": [
          "service_accounts"
        ],
        "summary": "Search service accounts with paging",
        "operationId": "searchOrgServiceAccountsWithPaging",
        "parameters": [
          {
            "type": "boolean",
            "name": "Disabled",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "expiredTokens",
            "in": "query"
          },
          {
            "type": "string",
            "description": "It will return results where the query value is contained in one of the name.\nQuery values with spaces need to be URL encoded.",
            "name": "query",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "The default value is 1000.",
            "name": "perpage",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "description": "The default value is 1.",
            "name": "page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/searchOrgServiceAccountsWithPagingResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/serviceaccounts/{serviceAccountId}": {
      "get": {
        "description": "Required permissions (See note in the [introduction](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api) for an explanation):\naction: `serviceaccounts:read` scope: `serviceaccounts:id:1` (single service account)",
        "tags": [
          "service_accounts"
        ],
        "summary": "Get single serviceaccount by Id",
        "operationId": "retrieveServiceAccount",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "serviceAccountId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/retrieveServiceAccountResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Required permissions (See note in the [introduction](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api) for an explanation):\naction: `serviceaccounts:delete` scope: `serviceaccounts:id:1` (single service account)",
        "tags": [
          "service_accounts"
        ],
        "summary": "Delete service account",
        "operationId": "deleteServiceAccount",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "serviceAccountId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "patch": {
        "description": "Required permissions (See note in the [introduction](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api) for an explanation):\naction: `serviceaccounts:write` scope: `serviceaccounts:id:1` (single service account)",
        "tags": [
          "service_accounts"
        ],
        "summary": "Update service account",
        "operationId": "updateServiceAccount",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "serviceAccountId",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/UpdateServiceAccountForm"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/updateServiceAccountResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/serviceaccounts/{serviceAccountId}/tokens": {
      "get": {
        "description": "Required permissions (See note in the [introduction](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api) for an explanation):\naction: `serviceaccounts:read` scope: `global:serviceaccounts:id:1` (single service account)\n\nRequires basic authentication and that the authenticated user is a Grafana Admin.",
        "tags": [
          "service_accounts"
        ],
        "summary": "Get service account tokens",
        "operationId": "listTokens",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "serviceAccountId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/listTokensResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "description": "Required permissions (See note in the [introduction](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api) for an explanation):\naction: `serviceaccounts:write` scope: `serviceaccounts:id:1` (single service account)",
        "tags": [
          "service_accounts"
        ],
        "summary": "CreateNewToken adds a token to a service account",
        "operationId": "createToken",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "serviceAccountId",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/AddServiceAccountTokenCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createTokenResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/serviceaccounts/{serviceAccountId}/tokens/{tokenId}": {
      "delete": {
        "description": "Required permissions (See note in the [introduction](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api) for an explanation):\naction: `serviceaccounts:write` scope: `serviceaccounts:id:1` (single service account)\n\nRequires basic authentication and that the authenticated user is a Grafana Admin.",
        "tags": [
          "service_accounts"
        ],
        "summary": "DeleteToken deletes service account tokens",
        "operationId": "deleteToken",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "tokenId",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "serviceAccountId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/signing-keys/keys": {
      "get": {
        "description": "Required permissions\nNone",
        "tags": [
          "signing_keys"
        ],
        "summary": "Get JSON Web Key Set (JWKS) with all the keys that can be used to verify tokens (public keys)",
        "operationId": "retrieveJWKS",
        "responses": {
          "200": {
            "$ref": "#/responses/jwksResponse"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/snapshot/shared-options": {
      "get": {
        "tags": [
          "snapshots"
        ],
        "summary": "Get snapshot sharing settings.",
        "operationId": "getSharingOptions",
        "responses": {
          "200": {
            "$ref": "#/responses/getSharingOptionsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          }
        }
      }
    },
    "/snapshots": {
      "post": {
        "description": "Snapshot public mode should be enabled or authentication is required.",
        "tags": [
          "snapshots"
        ],
        "summary": "When creating a snapshot using the API, you have to provide the full dashboard payload including the snapshot data. This endpoint is designed for the Grafana UI.",
        "operationId": "createDashboardSnapshot",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateDashboardSnapshotCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createDashboardSnapshotResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/snapshots-delete/{deleteKey}": {
      "get": {
        "description": "Snapshot public mode should be enabled or authentication is required.",
        "tags": [
          "snapshots"
        ],
        "summary": "Delete Snapshot by deleteKey.",
        "operationId": "deleteDashboardSnapshotByDeleteKey",
        "parameters": [
          {
            "type": "string",
            "name": "deleteKey",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/snapshots/{key}": {
      "get": {
        "tags": [
          "snapshots"
        ],
        "summary": "Get Snapshot by Key.",
        "operationId": "getDashboardSnapshot",
        "parameters": [
          {
            "type": "string",
            "name": "key",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getDashboardSnapshotResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "tags": [
          "snapshots"
        ],
        "summary": "Delete Snapshot by Key.",
        "operationId": "deleteDashboardSnapshot",
        "parameters": [
          {
            "type": "string",
            "name": "key",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/stats": {
      "get": {
        "produces": [
          "application/json"
        ],
        "tags": [
          "devices"
        ],
        "summary": "Lists all devices within the last 30 days",
        "operationId": "listDevices",
        "responses": {
          "200": {
            "$ref": "#/responses/devicesResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/teams": {
      "post": {
        "tags": [
          "teams"
        ],
        "summary": "Add Team.",
        "operationId": "createTeam",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateTeamCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/createTeamResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/teams/search": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "Team Search With Paging.",
        "operationId": "searchTeams",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "default": 1,
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "description": "Number of items per page\nThe totalCount field in the response can be used for pagination list E.g. if totalCount is equal to 100 teams and the perpage parameter is set to 10 then there are 10 pages of teams.",
            "name": "perpage",
            "in": "query"
          },
          {
            "type": "string",
            "name": "name",
            "in": "query"
          },
          {
            "type": "string",
            "description": "If set it will return results where the query value is contained in the name field. Query values with spaces need to be URL encoded.",
            "name": "query",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/searchTeamsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/teams/{teamId}/groups": {
      "get": {
        "tags": [
          "sync_team_groups",
          "enterprise"
        ],
        "summary": "Get External Groups.",
        "operationId": "getTeamGroupsApi",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "teamId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getTeamGroupsApiResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "tags": [
          "sync_team_groups",
          "enterprise"
        ],
        "summary": "Add External Group.",
        "operationId": "addTeamGroupApi",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TeamGroupMapping"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "teamId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "tags": [
          "sync_team_groups",
          "enterprise"
        ],
        "summary": "Remove External Group.",
        "operationId": "removeTeamGroupApiQuery",
        "parameters": [
          {
            "type": "string",
            "name": "groupId",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "teamId",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/teams/{team_id}": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "Get Team By ID.",
        "operationId": "getTeamByID",
        "parameters": [
          {
            "type": "string",
            "name": "team_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getTeamByIDResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "tags": [
          "teams"
        ],
        "summary": "Update Team.",
        "operationId": "updateTeam",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateTeamCommand"
            }
          },
          {
            "type": "string",
            "name": "team_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "tags": [
          "teams"
        ],
        "summary": "Delete Team By ID.",
        "operationId": "deleteTeamByID",
        "parameters": [
          {
            "type": "string",
            "name": "team_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/teams/{team_id}/members": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "Get Team Members.",
        "operationId": "getTeamMembers",
        "parameters": [
          {
            "type": "string",
            "name": "team_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getTeamMembersResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "post": {
        "tags": [
          "teams"
        ],
        "summary": "Add Team Member.",
        "operationId": "addTeamMember",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddTeamMemberCommand"
            }
          },
          {
            "type": "string",
            "name": "team_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/teams/{team_id}/members/{user_id}": {
      "put": {
        "tags": [
          "teams"
        ],
        "summary": "Update Team Member.",
        "operationId": "updateTeamMember",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateTeamMemberCommand"
            }
          },
          {
            "type": "string",
            "name": "team_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "tags": [
          "teams"
        ],
        "summary": "Remove Member From Team.",
        "operationId": "removeTeamMember",
        "parameters": [
          {
            "type": "string",
            "name": "team_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/teams/{team_id}/preferences": {
      "get": {
        "tags": [
          "teams"
        ],
        "summary": "Get Team Preferences.",
        "operationId": "getTeamPreferences",
        "parameters": [
          {
            "type": "string",
            "name": "team_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getPreferencesResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "tags": [
          "teams"
        ],
        "summary": "Update Team Preferences.",
        "operationId": "updateTeamPreferences",
        "parameters": [
          {
            "type": "string",
            "name": "team_id",
            "in": "path",
            "required": true
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdatePrefsCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user": {
      "get": {
        "description": "Get (current authenticated user)",
        "tags": [
          "signed_in_user"
        ],
        "operationId": "getSignedInUser",
        "responses": {
          "200": {
            "$ref": "#/responses/userResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "tags": [
          "signed_in_user"
        ],
        "summary": "Update signed in User.",
        "operationId": "updateSignedInUser",
        "parameters": [
          {
            "description": "To change the email, name, login, theme, provide another one.",
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUserCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/auth-tokens": {
      "get": {
        "description": "Return a list of all auth tokens (devices) that the actual user currently have logged in from.",
        "tags": [
          "signed_in_user"
        ],
        "summary": "Auth tokens of the actual User.",
        "operationId": "getUserAuthTokens",
        "responses": {
          "200": {
            "$ref": "#/responses/getUserAuthTokensResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/email/update": {
      "get": {
        "description": "Update the email of user given a verification code.",
        "tags": [
          "user"
        ],
        "summary": "Update user email.",
        "operationId": "updateUserEmail",
        "responses": {
          "302": {
            "$ref": "#/responses/okResponse"
          }
        }
      }
    },
    "/user/helpflags/clear": {
      "get": {
        "tags": [
          "signed_in_user"
        ],
        "summary": "Clear user help flag.",
        "operationId": "clearHelpFlags",
        "responses": {
          "200": {
            "$ref": "#/responses/helpFlagResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/helpflags/{flag_id}": {
      "put": {
        "tags": [
          "signed_in_user"
        ],
        "summary": "Set user help flag.",
        "operationId": "setHelpFlag",
        "parameters": [
          {
            "type": "string",
            "name": "flag_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/helpFlagResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/orgs": {
      "get": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "Return a list of all organizations of the current user.",
        "tags": [
          "signed_in_user"
        ],
        "summary": "Organizations of the actual User.",
        "operationId": "getSignedInUserOrgList",
        "responses": {
          "200": {
            "$ref": "#/responses/getSignedInUserOrgListResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/password": {
      "put": {
        "security": [
          {
            "basic": []
          }
        ],
        "description": "Changes the password for the user.",
        "tags": [
          "signed_in_user"
        ],
        "summary": "Change Password.",
        "operationId": "changeUserPassword",
        "parameters": [
          {
            "description": "To change the email, name, login, theme, provide another one.",
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangeUserPasswordCommand"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/preferences": {
      "get": {
        "tags": [
          "user_preferences"
        ],
        "summary": "Get user preferences.",
        "operationId": "getUserPreferences",
        "responses": {
          "200": {
            "$ref": "#/responses/getPreferencesResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "description": "Omitting a key (`theme`, `homeDashboardId`, `timezone`) will cause the current value to be replaced with the system default value.",
        "tags": [
          "user_preferences"
        ],
        "summary": "Update user preferences.",
        "operationId": "updateUserPreferences",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdatePrefsCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "patch": {
        "tags": [
          "user_preferences"
        ],
        "summary": "Patch user preferences.",
        "operationId": "patchUserPreferences",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PatchPrefsCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/quotas": {
      "get": {
        "tags": [
          "signed_in_user"
        ],
        "summary": "Fetch user quota.",
        "operationId": "getUserQuotas",
        "responses": {
          "200": {
            "$ref": "#/responses/getQuotaResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/revoke-auth-token": {
      "post": {
        "description": "Revokes the given auth token (device) for the actual user. User of issued auth token (device) will no longer be logged in and will be required to authenticate again upon next activity.",
        "tags": [
          "signed_in_user"
        ],
        "summary": "Revoke an auth token of the actual User.",
        "operationId": "revokeUserAuthToken",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RevokeAuthTokenCmd"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/stars/dashboard/uid/{dashboard_uid}": {
      "post": {
        "description": "Stars the given Dashboard for the actual user.",
        "tags": [
          "signed_in_user"
        ],
        "summary": "Star a dashboard.",
        "operationId": "starDashboardByUID",
        "parameters": [
          {
            "type": "string",
            "name": "dashboard_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Deletes the starring of the given Dashboard for the actual user.",
        "tags": [
          "signed_in_user"
        ],
        "summary": "Unstar a dashboard.",
        "operationId": "unstarDashboardByUID",
        "parameters": [
          {
            "type": "string",
            "name": "dashboard_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/stars/dashboard/{dashboard_id}": {
      "post": {
        "description": "Stars the given Dashboard for the actual user.",
        "tags": [
          "signed_in_user"
        ],
        "summary": "Star a dashboard.",
        "operationId": "starDashboard",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "name": "dashboard_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Deletes the starring of the given Dashboard for the actual user.",
        "tags": [
          "signed_in_user"
        ],
        "summary": "Unstar a dashboard.",
        "operationId": "unstarDashboard",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "name": "dashboard_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/teams": {
      "get": {
        "description": "Return a list of all teams that the current user is member of.",
        "tags": [
          "signed_in_user"
        ],
        "summary": "Teams that the actual User is member of.",
        "operationId": "getSignedInUserTeamList",
        "responses": {
          "200": {
            "$ref": "#/responses/getSignedInUserTeamListResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/user/using/{org_id}": {
      "post": {
        "description": "Switch user context to the given organization.",
        "tags": [
          "signed_in_user"
        ],
        "summary": "Switch user context for signed in user.",
        "operationId": "userSetUsingOrg",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/users": {
      "get": {
        "description": "Returns all users that the authenticated user has permission to view, admin permission required.",
        "tags": [
          "users"
        ],
        "summary": "Get users.",
        "operationId": "searchUsers",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "description": "Limit the maximum number of users to return per page",
            "name": "perpage",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "default": 1,
            "description": "Page index for starting fetching users",
            "name": "page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/searchUsersResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/users/lookup": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get user by login or email.",
        "operationId": "getUserByLoginOrEmail",
        "parameters": [
          {
            "type": "string",
            "description": "loginOrEmail of the user",
            "name": "loginOrEmail",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/userResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/users/search": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get users with paging.",
        "operationId": "searchUsersWithPaging",
        "responses": {
          "200": {
            "$ref": "#/responses/searchUsersWithPagingResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/users/{user_id}": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Get user by id.",
        "operationId": "getUserByID",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/userResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "put": {
        "description": "Update the user identified by id.",
        "tags": [
          "users"
        ],
        "summary": "Update user.",
        "operationId": "updateUser",
        "parameters": [
          {
            "description": "To change the email, name, login, theme, provide another one.",
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUserCommand"
            }
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/okResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "409": {
            "$ref": "#/responses/conflictError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/users/{user_id}/orgs": {
      "get": {
        "description": "Get organizations for user identified by id.",
        "tags": [
          "users"
        ],
        "summary": "Get organizations for user.",
        "operationId": "getUserOrgList",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getUserOrgListResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/users/{user_id}/teams": {
      "get": {
        "description": "Get teams for user identified by id.",
        "tags": [
          "users"
        ],
        "summary": "Get teams for user.",
        "operationId": "getUserTeams",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getUserTeamsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    },
    "/v1/provisioning/alert-rules": {
      "get": {
        "tags": [
          "provisioning"
        ],
        "summary": "Get all the alert rules.",
        "operationId": "RouteGetAlertRules",
        "responses": {
          "200": {
            "description": "ProvisionedAlertRules",
            "schema": {
              "$ref": "#/definitions/ProvisionedAlertRules"
            }
          }
        }
      },
      "post": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Create a new alert rule.",
        "operationId": "RoutePostAlertRule",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/ProvisionedAlertRule"
            }
          },
          {
            "type": "string",
            "name": "X-Disable-Provenance",
            "in": "header"
          }
        ],
        "responses": {
          "201": {
            "description": "ProvisionedAlertRule",
            "schema": {
              "$ref": "#/definitions/ProvisionedAlertRule"
            }
          },
          "400": {
            "description": "ValidationError",
            "schema": {
              "$ref": "#/definitions/ValidationError"
            }
          }
        }
      }
    },
    "/v1/provisioning/alert-rules/export": {
      "get": {
        "produces": [
          "application/json",
          "application/yaml",
          "application/terraform+hcl",
          "text/yaml",
          "text/hcl"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Export all alert rules in provisioning file format.",
        "operationId": "RouteGetAlertRulesExport",
        "parameters": [
          {
            "type": "boolean",
            "default": false,
            "description": "Whether to initiate a download of the file or not.",
            "name": "download",
            "in": "query"
          },
          {
            "enum": [
              "yaml",
              "json",
              "hcl"
            ],
            "type": "string",
            "default": "yaml",
            "description": "Format of the downloaded file. Supported yaml, json or hcl. Accept header can also be used, but the query parameter will take precedence.",
            "name": "format",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "UIDs of folders from which to export rules",
            "name": "folderUid",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Name of group of rules to export. Must be specified only together with a single folder UID",
            "name": "group",
            "in": "query"
          },
          {
            "type": "string",
            "description": "UID of alert rule to export. If specified, parameters folderUid and group must be empty.",
            "name": "ruleUid",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "AlertingFileExport",
            "schema": {
              "$ref": "#/definitions/AlertingFileExport"
            }
          },
          "404": {
            "description": " Not found."
          }
        }
      }
    },
    "/v1/provisioning/alert-rules/{UID}": {
      "get": {
        "tags": [
          "provisioning"
        ],
        "summary": "Get a specific alert rule by UID.",
        "operationId": "RouteGetAlertRule",
        "parameters": [
          {
            "type": "string",
            "description": "Alert rule UID",
            "name": "UID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "ProvisionedAlertRule",
            "schema": {
              "$ref": "#/definitions/ProvisionedAlertRule"
            }
          },
          "404": {
            "description": " Not found."
          }
        }
      },
      "put": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Update an existing alert rule.",
        "operationId": "RoutePutAlertRule",
        "parameters": [
          {
            "type": "string",
            "description": "Alert rule UID",
            "name": "UID",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/ProvisionedAlertRule"
            }
          },
          {
            "type": "string",
            "name": "X-Disable-Provenance",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "ProvisionedAlertRule",
            "schema": {
              "$ref": "#/definitions/ProvisionedAlertRule"
            }
          },
          "400": {
            "description": "ValidationError",
            "schema": {
              "$ref": "#/definitions/ValidationError"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "provisioning"
        ],
        "summary": "Delete a specific alert rule by UID.",
        "operationId": "RouteDeleteAlertRule",
        "parameters": [
          {
            "type": "string",
            "description": "Alert rule UID",
            "name": "UID",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "X-Disable-Provenance",
            "in": "header"
          }
        ],
        "responses": {
          "204": {
            "description": " The alert rule was deleted successfully."
          }
        }
      }
    },
    "/v1/provisioning/alert-rules/{UID}/export": {
      "get": {
        "produces": [
          "application/json",
          "application/yaml",
          "application/terraform+hcl",
          "text/yaml",
          "text/hcl"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Export an alert rule in provisioning file format.",
        "operationId": "RouteGetAlertRuleExport",
        "parameters": [
          {
            "type": "boolean",
            "default": false,
            "description": "Whether to initiate a download of the file or not.",
            "name": "download",
            "in": "query"
          },
          {
            "enum": [
              "yaml",
              "json",
              "hcl"
            ],
            "type": "string",
            "default": "yaml",
            "description": "Format of the downloaded file. Supported yaml, json or hcl. Accept header can also be used, but the query parameter will take precedence.",
            "name": "format",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Alert rule UID",
            "name": "UID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "AlertingFileExport",
            "schema": {
              "$ref": "#/definitions/AlertingFileExport"
            }
          },
          "404": {
            "description": " Not found."
          }
        }
      }
    },
    "/v1/provisioning/contact-points": {
      "get": {
        "tags": [
          "provisioning"
        ],
        "summary": "Get all the contact points.",
        "operationId": "RouteGetContactpoints",
        "parameters": [
          {
            "type": "string",
            "description": "Filter by name",
            "name": "name",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "ContactPoints",
            "schema": {
              "$ref": "#/definitions/ContactPoints"
            }
          }
        }
      },
      "post": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Create a contact point.",
        "operationId": "RoutePostContactpoints",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/EmbeddedContactPoint"
            }
          },
          {
            "type": "string",
            "name": "X-Disable-Provenance",
            "in": "header"
          }
        ],
        "responses": {
          "202": {
            "description": "EmbeddedContactPoint",
            "schema": {
              "$ref": "#/definitions/EmbeddedContactPoint"
            }
          },
          "400": {
            "description": "ValidationError",
            "schema": {
              "$ref": "#/definitions/ValidationError"
            }
          }
        }
      }
    },
    "/v1/provisioning/contact-points/export": {
      "get": {
        "produces": [
          "application/json",
          "application/yaml",
          "application/terraform+hcl",
          "text/yaml",
          "text/hcl"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Export all contact points in provisioning file format.",
        "operationId": "RouteGetContactpointsExport",
        "parameters": [
          {
            "type": "boolean",
            "default": false,
            "description": "Whether to initiate a download of the file or not.",
            "name": "download",
            "in": "query"
          },
          {
            "enum": [
              "yaml",
              "json",
              "hcl"
            ],
            "type": "string",
            "default": "yaml",
            "description": "Format of the downloaded file. Supported yaml, json or hcl. Accept header can also be used, but the query parameter will take precedence.",
            "name": "format",
            "in": "query"
          },
          {
            "type": "boolean",
            "default": false,
            "description": "Whether any contained secure settings should be decrypted or left redacted. Redacted settings will contain RedactedValue instead. Currently, only org admin can view decrypted secure settings.",
            "name": "decrypt",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Filter by name",
            "name": "name",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "AlertingFileExport",
            "schema": {
              "$ref": "#/definitions/AlertingFileExport"
            }
          },
          "403": {
            "description": "PermissionDenied",
            "schema": {
              "$ref": "#/definitions/PermissionDenied"
            }
          }
        }
      }
    },
    "/v1/provisioning/contact-points/{UID}": {
      "put": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Update an existing contact point.",
        "operationId": "RoutePutContactpoint",
        "parameters": [
          {
            "type": "string",
            "description": "UID is the contact point unique identifier",
            "name": "UID",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/EmbeddedContactPoint"
            }
          },
          {
            "type": "string",
            "name": "X-Disable-Provenance",
            "in": "header"
          }
        ],
        "responses": {
          "202": {
            "description": "Ack",
            "schema": {
              "$ref": "#/definitions/Ack"
            }
          },
          "400": {
            "description": "ValidationError",
            "schema": {
              "$ref": "#/definitions/ValidationError"
            }
          }
        }
      },
      "delete": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Delete a contact point.",
        "operationId": "RouteDeleteContactpoints",
        "parameters": [
          {
            "type": "string",
            "description": "UID is the contact point unique identifier",
            "name": "UID",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "202": {
            "description": " The contact point was deleted successfully."
          }
        }
      }
    },
    "/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}": {
      "get": {
        "tags": [
          "provisioning"
        ],
        "summary": "Get a rule group.",
        "operationId": "RouteGetAlertRuleGroup",
        "parameters": [
          {
            "type": "string",
            "name": "FolderUID",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "Group",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "AlertRuleGroup",
            "schema": {
              "$ref": "#/definitions/AlertRuleGroup"
            }
          },
          "404": {
            "description": " Not found."
          }
        }
      },
      "put": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Create or update alert rule group.",
        "operationId": "RoutePutAlertRuleGroup",
        "parameters": [
          {
            "type": "string",
            "name": "X-Disable-Provenance",
            "in": "header"
          },
          {
            "type": "string",
            "name": "FolderUID",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "Group",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/AlertRuleGroup"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "AlertRuleGroup",
            "schema": {
              "$ref": "#/definitions/AlertRuleGroup"
            }
          },
          "400": {
            "description": "ValidationError",
            "schema": {
              "$ref": "#/definitions/ValidationError"
            }
          }
        }
      },
      "delete": {
        "description": "Delete rule group",
        "tags": [
          "provisioning"
        ],
        "operationId": "RouteDeleteAlertRuleGroup",
        "parameters": [
          {
            "type": "string",
            "name": "FolderUID",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "Group",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": " The alert rule group was deleted successfully."
          },
          "403": {
            "description": "ForbiddenError",
            "schema": {
              "$ref": "#/definitions/ForbiddenError"
            }
          },
          "404": {
            "description": "NotFound",
            "schema": {
              "$ref": "#/definitions/NotFound"
            }
          }
        }
      }
    },
    "/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}/export": {
      "get": {
        "produces": [
          "application/json",
          "application/yaml",
          "application/terraform+hcl",
          "text/yaml",
          "text/hcl"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Export an alert rule group in provisioning file format.",
        "operationId": "RouteGetAlertRuleGroupExport",
        "parameters": [
          {
            "type": "boolean",
            "default": false,
            "description": "Whether to initiate a download of the file or not.",
            "name": "download",
            "in": "query"
          },
          {
            "enum": [
              "yaml",
              "json",
              "hcl"
            ],
            "type": "string",
            "default": "yaml",
            "description": "Format of the downloaded file. Supported yaml, json or hcl. Accept header can also be used, but the query parameter will take precedence.",
            "name": "format",
            "in": "query"
          },
          {
            "type": "string",
            "name": "FolderUID",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "Group",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "AlertingFileExport",
            "schema": {
              "$ref": "#/definitions/AlertingFileExport"
            }
          },
          "404": {
            "description": " Not found."
          }
        }
      }
    },
    "/v1/provisioning/mute-timings": {
      "get": {
        "tags": [
          "provisioning"
        ],
        "summary": "Get all the mute timings.",
        "operationId": "RouteGetMuteTimings",
        "responses": {
          "200": {
            "description": "MuteTimings",
            "schema": {
              "$ref": "#/definitions/MuteTimings"
            }
          }
        }
      },
      "post": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Create a new mute timing.",
        "operationId": "RoutePostMuteTiming",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/MuteTimeInterval"
            }
          },
          {
            "type": "string",
            "name": "X-Disable-Provenance",
            "in": "header"
          }
        ],
        "responses": {
          "201": {
            "description": "MuteTimeInterval",
            "schema": {
              "$ref": "#/definitions/MuteTimeInterval"
            }
          },
          "400": {
            "description": "ValidationError",
            "schema": {
              "$ref": "#/definitions/ValidationError"
            }
          }
        }
      }
    },
    "/v1/provisioning/mute-timings/export": {
      "get": {
        "produces": [
          "application/json",
          "application/yaml",
          "application/terraform+hcl",
          "text/yaml",
          "text/hcl"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Export all mute timings in provisioning format.",
        "operationId": "RouteExportMuteTimings",
        "parameters": [
          {
            "type": "boolean",
            "default": false,
            "description": "Whether to initiate a download of the file or not.",
            "name": "download",
            "in": "query"
          },
          {
            "enum": [
              "yaml",
              "json",
              "hcl"
            ],
            "type": "string",
            "default": "yaml",
            "description": "Format of the downloaded file. Supported yaml, json or hcl. Accept header can also be used, but the query parameter will take precedence.",
            "name": "format",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "AlertingFileExport",
            "schema": {
              "$ref": "#/definitions/AlertingFileExport"
            }
          },
          "403": {
            "description": "PermissionDenied",
            "schema": {
              "$ref": "#/definitions/PermissionDenied"
            }
          }
        }
      }
    },
    "/v1/provisioning/mute-timings/{name}": {
      "get": {
        "tags": [
          "provisioning"
        ],
        "summary": "Get a mute timing.",
        "operationId": "RouteGetMuteTiming",
        "parameters": [
          {
            "type": "string",
            "description": "Mute timing name",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "MuteTimeInterval",
            "schema": {
              "$ref": "#/definitions/MuteTimeInterval"
            }
          },
          "404": {
            "description": " Not found."
          }
        }
      },
      "put": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Replace an existing mute timing.",
        "operationId": "RoutePutMuteTiming",
        "parameters": [
          {
            "type": "string",
            "description": "Mute timing name",
            "name": "name",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/MuteTimeInterval"
            }
          },
          {
            "type": "string",
            "name": "X-Disable-Provenance",
            "in": "header"
          }
        ],
        "responses": {
          "202": {
            "description": "MuteTimeInterval",
            "schema": {
              "$ref": "#/definitions/MuteTimeInterval"
            }
          },
          "400": {
            "description": "ValidationError",
            "schema": {
              "$ref": "#/definitions/ValidationError"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "provisioning"
        ],
        "summary": "Delete a mute timing.",
        "operationId": "RouteDeleteMuteTiming",
        "parameters": [
          {
            "type": "string",
            "description": "Mute timing name",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": " The mute timing was deleted successfully."
          },
          "409": {
            "description": "GenericPublicError",
            "schema": {
              "$ref": "#/definitions/GenericPublicError"
            }
          }
        }
      }
    },
    "/v1/provisioning/mute-timings/{name}/export": {
      "get": {
        "produces": [
          "application/json",
          "application/yaml",
          "application/terraform+hcl",
          "text/yaml",
          "text/hcl"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Export a mute timing in provisioning format.",
        "operationId": "RouteExportMuteTiming",
        "parameters": [
          {
            "type": "boolean",
            "default": false,
            "description": "Whether to initiate a download of the file or not.",
            "name": "download",
            "in": "query"
          },
          {
            "enum": [
              "yaml",
              "json",
              "hcl"
            ],
            "type": "string",
            "default": "yaml",
            "description": "Format of the downloaded file. Supported yaml, json or hcl. Accept header can also be used, but the query parameter will take precedence.",
            "name": "format",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Mute timing name",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "AlertingFileExport",
            "schema": {
              "$ref": "#/definitions/AlertingFileExport"
            }
          },
          "403": {
            "description": "PermissionDenied",
            "schema": {
              "$ref": "#/definitions/PermissionDenied"
            }
          }
        }
      }
    },
    "/v1/provisioning/policies": {
      "get": {
        "tags": [
          "provisioning"
        ],
        "summary": "Get the notification policy tree.",
        "operationId": "RouteGetPolicyTree",
        "responses": {
          "200": {
            "description": "Route",
            "schema": {
              "$ref": "#/definitions/Route"
            }
          }
        }
      },
      "put": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Sets the notification policy tree.",
        "operationId": "RoutePutPolicyTree",
        "parameters": [
          {
            "description": "The new notification routing tree to use",
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/Route"
            }
          },
          {
            "type": "string",
            "name": "X-Disable-Provenance",
            "in": "header"
          }
        ],
        "responses": {
          "202": {
            "description": "Ack",
            "schema": {
              "$ref": "#/definitions/Ack"
            }
          },
          "400": {
            "description": "ValidationError",
            "schema": {
              "$ref": "#/definitions/ValidationError"
            }
          }
        }
      },
      "delete": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Clears the notification policy tree.",
        "operationId": "RouteResetPolicyTree",
        "responses": {
          "202": {
            "description": "Ack",
            "schema": {
              "$ref": "#/definitions/Ack"
            }
          }
        }
      }
    },
    "/v1/provisioning/policies/export": {
      "get": {
        "produces": [
          "application/json",
          "application/yaml",
          "application/terraform+hcl",
          "text/yaml",
          "text/hcl"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Export the notification policy tree in provisioning file format.",
        "operationId": "RouteGetPolicyTreeExport",
        "responses": {
          "200": {
            "description": "AlertingFileExport",
            "schema": {
              "$ref": "#/definitions/AlertingFileExport"
            }
          },
          "404": {
            "description": "NotFound",
            "schema": {
              "$ref": "#/definitions/NotFound"
            }
          }
        }
      }
    },
    "/v1/provisioning/templates": {
      "get": {
        "tags": [
          "provisioning"
        ],
        "summary": "Get all notification templates.",
        "operationId": "RouteGetTemplates",
        "responses": {
          "200": {
            "description": "NotificationTemplates",
            "schema": {
              "$ref": "#/definitions/NotificationTemplates"
            }
          },
          "404": {
            "description": " Not found."
          }
        }
      }
    },
    "/v1/provisioning/templates/{name}": {
      "get": {
        "tags": [
          "provisioning"
        ],
        "summary": "Get a notification template.",
        "operationId": "RouteGetTemplate",
        "parameters": [
          {
            "type": "string",
            "description": "Template Name",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "NotificationTemplate",
            "schema": {
              "$ref": "#/definitions/NotificationTemplate"
            }
          },
          "404": {
            "description": " Not found."
          }
        }
      },
      "put": {
        "consumes": [
          "application/json"
        ],
        "tags": [
          "provisioning"
        ],
        "summary": "Updates an existing notification template.",
        "operationId": "RoutePutTemplate",
        "parameters": [
          {
            "type": "string",
            "description": "Template Name",
            "name": "name",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/NotificationTemplateContent"
            }
          },
          {
            "type": "string",
            "name": "X-Disable-Provenance",
            "in": "header"
          }
        ],
        "responses": {
          "202": {
            "description": "NotificationTemplate",
            "schema": {
              "$ref": "#/definitions/NotificationTemplate"
            }
          },
          "400": {
            "description": "ValidationError",
            "schema": {
              "$ref": "#/definitions/ValidationError"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "provisioning"
        ],
        "summary": "Delete a template.",
        "operationId": "RouteDeleteTemplate",
        "parameters": [
          {
            "type": "string",
            "description": "Template Name",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": " The template was deleted successfully."
          }
        }
      }
    },
    "/v1/sso-settings": {
      "get": {
        "description": "You need to have a permission with action `settings:read` with scope `settings:auth.\u003cprovider\u003e:*`.",
        "tags": [
          "sso_settings"
        ],
        "summary": "List all SSO Settings entries",
        "operationId": "listAllProvidersSettings",
        "responses": {
          "200": {
            "$ref": "#/responses/listSSOSettingsResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          }
        }
      }
    },
    "/v1/sso-settings/{key}": {
      "get": {
        "description": "You need to have a permission with action `settings:read` with scope `settings:auth.\u003cprovider\u003e:*`.",
        "tags": [
          "sso_settings"
        ],
        "summary": "Get an SSO Settings entry by Key",
        "operationId": "getProviderSettings",
        "parameters": [
          {
            "type": "string",
            "name": "key",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getSSOSettingsResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          }
        }
      },
      "put": {
        "description": "Inserts or updates the SSO Settings for a provider.\n\nYou need to have a permission with action `settings:write` and scope `settings:auth.\u003cprovider\u003e:*`.",
        "tags": [
          "sso_settings"
        ],
        "summary": "Update SSO Settings",
        "operationId": "updateProviderSettings",
        "parameters": [
          {
            "type": "string",
            "name": "key",
            "in": "path",
            "required": true
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "provider": {
                  "type": "string"
                },
                "settings": {
                  "type": "object",
                  "additionalProperties": {}
                }
              }
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      },
      "delete": {
        "description": "Removes the SSO Settings for a provider.\n\nYou need to have a permission with action `settings:write` and scope `settings:auth.\u003cprovider\u003e:*`.",
        "tags": [
          "sso_settings"
        ],
        "summary": "Remove SSO Settings",
        "operationId": "removeProviderSettings",
        "parameters": [
          {
            "type": "string",
            "name": "key",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/responses/okResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorisedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "500": {
            "$ref": "#/responses/internalServerError"
          }
        }
      }
    }
  },
  "definitions": {
    "Ack": {
      "type": "object"
    },
    "ActiveSyncStatusDTO": {
      "description": "ActiveSyncStatusDTO holds the information for LDAP background Sync",
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "nextSync": {
          "type": "string",
          "format": "date-time"
        },
        "prevSync": {
          "$ref": "#/definitions/SyncResult"
        },
        "schedule": {
          "type": "string"
        }
      }
    },
    "ActiveUserStats": {
      "type": "object",
      "properties": {
        "active_admins_and_editors": {
          "type": "integer",
          "format": "int64"
        },
        "active_anonymous_devices": {
          "type": "integer",
          "format": "int64"
        },
        "active_users": {
          "type": "integer",
          "format": "int64"
        },
        "active_viewers": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "AddAPIKeyCommand": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ]
        },
        "secondsToLive": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "AddDataSourceCommand": {
      "description": "Also acts as api DTO",
      "type": "object",
      "properties": {
        "access": {
          "$ref": "#/definitions/DsAccess"
        },
        "basicAuth": {
          "type": "boolean"
        },
        "basicAuthUser": {
          "type": "string"
        },
        "database": {
          "type": "string"
        },
        "isDefault": {
          "type": "boolean"
        },
        "jsonData": {
          "$ref": "#/definitions/Json"
        },
        "name": {
          "type": "string"
        },
        "secureJsonData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "type": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "user": {
          "type": "string"
        },
        "withCredentials": {
          "type": "boolean"
        }
      }
    },
    "AddInviteForm": {
      "type": "object",
      "properties": {
        "loginOrEmail": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ]
        },
        "sendEmail": {
          "type": "boolean"
        }
      }
    },
    "AddOrgUserCommand": {
      "type": "object",
      "properties": {
        "loginOrEmail": {
          "type": "string"
        },
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ]
        }
      }
    },
    "AddServiceAccountTokenCommand": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "secondsToLive": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "AddTeamMemberCommand": {
      "type": "object",
      "properties": {
        "userId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "AddTeamRoleCommand": {
      "type": "object",
      "properties": {
        "roleUid": {
          "type": "string"
        }
      }
    },
    "AddUserRoleCommand": {
      "type": "object",
      "properties": {
        "global": {
          "type": "boolean"
        },
        "roleUid": {
          "type": "string"
        }
      }
    },
    "Address": {
      "type": "object",
      "properties": {
        "address1": {
          "type": "string"
        },
        "address2": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "zipCode": {
          "type": "string"
        }
      }
    },
    "AdminCreateUserForm": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "login": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "password": {
          "$ref": "#/definitions/Password"
        }
      }
    },
    "AdminCreateUserResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "AdminStats": {
      "type": "object",
      "properties": {
        "activeAdmins": {
          "type": "integer",
          "format": "int64"
        },
        "activeDevices": {
          "type": "integer",
          "format": "int64"
        },
        "activeEditors": {
          "type": "integer",
          "format": "int64"
        },
        "activeSessions": {
          "type": "integer",
          "format": "int64"
        },
        "activeUsers": {
          "type": "integer",
          "format": "int64"
        },
        "activeViewers": {
          "type": "integer",
          "format": "int64"
        },
        "admins": {
          "type": "integer",
          "format": "int64"
        },
        "alerts": {
          "type": "integer",
          "format": "int64"
        },
        "dailyActiveAdmins": {
          "type": "integer",
          "format": "int64"
        },
        "dailyActiveEditors": {
          "type": "integer",
          "format": "int64"
        },
        "dailyActiveSessions": {
          "type": "integer",
          "format": "int64"
        },
        "dailyActiveUsers": {
          "type": "integer",
          "format": "int64"
        },
        "dailyActiveViewers": {
          "type": "integer",
          "format": "int64"
        },
        "dashboards": {
          "type": "integer",
          "format": "int64"
        },
        "datasources": {
          "type": "integer",
          "format": "int64"
        },
        "editors": {
          "type": "integer",
          "format": "int64"
        },
        "monthlyActiveUsers": {
          "type": "integer",
          "format": "int64"
        },
        "orgs": {
          "type": "integer",
          "format": "int64"
        },
        "playlists": {
          "type": "integer",
          "format": "int64"
        },
        "snapshots": {
          "type": "integer",
          "format": "int64"
        },
        "stars": {
          "type": "integer",
          "format": "int64"
        },
        "tags": {
          "type": "integer",
          "format": "int64"
        },
        "users": {
          "type": "integer",
          "format": "int64"
        },
        "viewers": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "AdminUpdateUserPasswordForm": {
      "type": "object",
      "properties": {
        "password": {
          "$ref": "#/definitions/Password"
        }
      }
    },
    "AdminUpdateUserPermissionsForm": {
      "type": "object",
      "properties": {
        "isGrafanaAdmin": {
          "type": "boolean"
        }
      }
    },
    "Alert": {
      "type": "object",
      "title": "Alert has info for an alert.",
      "required": [
        "labels",
        "annotations",
        "state",
        "value"
      ],
      "properties": {
        "activeAt": {
          "type": "string",
          "format": "date-time"
        },
        "annotations": {
          "$ref": "#/definitions/overrideLabels"
        },
        "labels": {
          "$ref": "#/definitions/overrideLabels"
        },
        "state": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "AlertDiscovery": {
      "type": "object",
      "title": "AlertDiscovery has info for all active alerts.",
      "required": [
        "alerts"
      ],
      "properties": {
        "alerts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Alert"
          }
        }
      }
    },
    "AlertInstancesResponse": {
      "type": "object",
      "properties": {
        "instances": {
          "description": "Instances is an array of arrow encoded dataframes\neach frame has a single row, and a column for each instance (alert identified by unique labels) with a boolean value (firing/not firing)",
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "uint8"
            }
          }
        }
      }
    },
    "AlertManager": {
      "type": "object",
      "title": "AlertManager models a configured Alert Manager.",
      "properties": {
        "url": {
          "type": "string"
        }
      }
    },
    "AlertManagerNotReady": {
      "type": "object"
    },
    "AlertManagersResult": {
      "type": "object",
      "title": "AlertManagersResult contains the result from querying the alertmanagers endpoint.",
      "properties": {
        "activeAlertManagers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertManager"
          }
        },
        "droppedAlertManagers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertManager"
          }
        }
      }
    },
    "AlertQuery": {
      "type": "object",
      "title": "AlertQuery represents a single query associated with an alert definition.",
      "properties": {
        "datasourceUid": {
          "description": "Grafana data source unique identifier; it should be '__expr__' for a Server Side Expression operation.",
          "type": "string"
        },
        "model": {
          "description": "JSON is the raw JSON query and includes the above properties as well as custom properties.",
          "type": "object"
        },
        "queryType": {
          "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries.",
          "type": "string"
        },
        "refId": {
          "description": "RefID is the unique identifier of the query, set by the frontend call.",
          "type": "string"
        },
        "relativeTimeRange": {
          "$ref": "#/definitions/RelativeTimeRange"
        }
      }
    },
    "AlertQueryExport": {
      "type": "object",
      "title": "AlertQueryExport is the provisioned export of models.AlertQuery.",
      "properties": {
        "datasourceUid": {
          "type": "string"
        },
        "model": {
          "type": "object",
          "additionalProperties": {}
        },
        "queryType": {
          "type": "string"
        },
        "refId": {
          "type": "string"
        },
        "relativeTimeRange": {
          "$ref": "#/definitions/RelativeTimeRangeExport"
        }
      }
    },
    "AlertResponse": {
      "type": "object",
      "required": [
        "status"
      ],
      "properties": {
        "data": {
          "$ref": "#/definitions/AlertDiscovery"
        },
        "error": {
          "type": "string"
        },
        "errorType": {
          "$ref": "#/definitions/ErrorType"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "AlertRuleExport": {
      "type": "object",
      "title": "AlertRuleExport is the provisioned file export of models.AlertRule.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "condition": {
          "type": "string"
        },
        "dasboardUid": {
          "type": "string"
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertQueryExport"
          }
        },
        "execErrState": {
          "type": "string",
          "enum": [
            "OK",
            "Alerting",
            "Error"
          ]
        },
        "for": {
          "$ref": "#/definitions/Duration"
        },
        "isPaused": {
          "type": "boolean"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "noDataState": {
          "type": "string",
          "enum": [
            "Alerting",
            "NoData",
            "OK"
          ]
        },
        "notification_settings": {
          "$ref": "#/definitions/AlertRuleNotificationSettingsExport"
        },
        "panelId": {
          "type": "integer",
          "format": "int64"
        },
        "title": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "AlertRuleGroup": {
      "type": "object",
      "properties": {
        "folderUid": {
          "type": "string"
        },
        "interval": {
          "type": "integer",
          "format": "int64"
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ProvisionedAlertRule"
          }
        },
        "title": {
          "type": "string"
        }
      }
    },
    "AlertRuleGroupExport": {
      "type": "object",
      "title": "AlertRuleGroupExport is the provisioned file export of AlertRuleGroupV1.",
      "properties": {
        "folder": {
          "type": "string"
        },
        "interval": {
          "$ref": "#/definitions/Duration"
        },
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertRuleExport"
          }
        }
      }
    },
    "AlertRuleGroupMetadata": {
      "type": "object",
      "properties": {
        "interval": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "AlertRuleNotificationSettings": {
      "type": "object",
      "required": [
        "receiver"
      ],
      "properties": {
        "group_by": {
          "description": "Override the labels by which incoming alerts are grouped together. For example, multiple alerts coming in for\ncluster=A and alertname=LatencyHigh would be batched into a single group. To aggregate by all possible labels\nuse the special value '...' as the sole label name.\nThis effectively disables aggregation entirely, passing through all alerts as-is. This is unlikely to be what\nyou want, unless you have a very low alert volume or your upstream notification system performs its own grouping.\nMust include 'alertname' and 'grafana_folder' if not using '...'.",
          "type": "array",
          "default": [
            "alertname",
            "grafana_folder"
          ],
          "items": {
            "type": "string"
          },
          "example": [
            "alertname",
            "grafana_folder",
            "cluster"
          ]
        },
        "group_interval": {
          "description": "Override how long to wait before sending a notification about new alerts that are added to a group of alerts for\nwhich an initial notification has already been sent. (Usually ~5m or more.)",
          "type": "string",
          "example": "5m"
        },
        "group_wait": {
          "description": "Override how long to initially wait to send a notification for a group of alerts. Allows to wait for an\ninhibiting alert to arrive or collect more initial alerts for the same group. (Usually ~0s to few minutes.)",
          "type": "string",
          "example": "30s"
        },
        "mute_time_intervals": {
          "description": "Override the times when notifications should be muted. These must match the name of a mute time interval defined\nin the alertmanager configuration mute_time_intervals section. When muted it will not send any notifications, but\notherwise acts normally.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "example": [
            "maintenance"
          ]
        },
        "receiver": {
          "description": "Name of the receiver to send notifications to.",
          "type": "string",
          "example": "grafana-default-email"
        },
        "repeat_interval": {
          "description": "Override how long to wait before sending a notification again if it has already been sent successfully for an\nalert. (Usually ~3h or more).\nNote that this parameter is implicitly bound by Alertmanager's `--data.retention` configuration flag.\nNotifications will be resent after either repeat_interval or the data retention period have passed, whichever\noccurs first. `repeat_interval` should not be less than `group_interval`.",
          "type": "string",
          "example": "4h"
        }
      }
    },
    "AlertRuleNotificationSettingsExport": {
      "type": "object",
      "title": "AlertRuleNotificationSettingsExport is the provisioned export of models.NotificationSettings.",
      "properties": {
        "group_by": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group_interval": {
          "type": "string"
        },
        "group_wait": {
          "type": "string"
        },
        "mute_time_intervals": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "receiver": {
          "type": "string"
        },
        "repeat_interval": {
          "type": "string"
        }
      }
    },
    "AlertingFileExport": {
      "type": "object",
      "title": "AlertingFileExport is the full provisioned file export.",
      "properties": {
        "apiVersion": {
          "type": "integer",
          "format": "int64"
        },
        "contactPoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ContactPointExport"
          }
        },
        "groups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertRuleGroupExport"
          }
        },
        "muteTimes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MuteTimeIntervalExport"
          }
        },
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/NotificationPolicyExport"
          }
        }
      }
    },
    "AlertingRule": {
      "description": "adapted from cortex",
      "type": "object",
      "required": [
        "name",
        "query",
        "health",
        "type",
        "state",
        "annotations",
        "activeAt"
      ],
      "properties": {
        "activeAt": {
          "type": "string",
          "format": "date-time"
        },
        "alerts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Alert"
          }
        },
        "annotations": {
          "$ref": "#/definitions/overrideLabels"
        },
        "duration": {
          "type": "number",
          "format": "double"
        },
        "evaluationTime": {
          "type": "number",
          "format": "double"
        },
        "health": {
          "type": "string"
        },
        "labels": {
          "$ref": "#/definitions/overrideLabels"
        },
        "lastError": {
          "type": "string"
        },
        "lastEvaluation": {
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "type": "string"
        },
        "query": {
          "type": "string"
        },
        "state": {
          "description": "State can be \"pending\", \"firing\", \"inactive\".",
          "type": "string"
        },
        "totals": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int64"
          }
        },
        "totalsFiltered": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int64"
          }
        },
        "type": {
          "$ref": "#/definitions/RuleType"
        }
      }
    },
    "AlertingStatus": {
      "type": "object",
      "properties": {
        "alertmanagersChoice": {
          "type": "string",
          "enum": [
            "all",
            "internal",
            "external"
          ]
        },
        "numExternalAlertmanagers": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "Annotation": {
      "type": "object",
      "properties": {
        "alertId": {
          "type": "integer",
          "format": "int64"
        },
        "alertName": {
          "type": "string"
        },
        "avatarUrl": {
          "type": "string"
        },
        "created": {
          "type": "integer",
          "format": "int64"
        },
        "dashboardId": {
          "type": "integer",
          "format": "int64"
        },
        "dashboardUID": {
          "type": "string"
        },
        "data": {
          "$ref": "#/definitions/Json"
        },
        "email": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "login": {
          "type": "string"
        },
        "newState": {
          "type": "string"
        },
        "panelId": {
          "type": "integer",
          "format": "int64"
        },
        "prevState": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "text": {
          "type": "string"
        },
        "time": {
          "type": "integer",
          "format": "int64"
        },
        "timeEnd": {
          "type": "integer",
          "format": "int64"
        },
        "updated": {
          "type": "integer",
          "format": "int64"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "AnnotationActions": {
      "type": "object",
      "properties": {
        "canAdd": {
          "type": "boolean"
        },
        "canDelete": {
          "type": "boolean"
        },
        "canEdit": {
          "type": "boolean"
        }
      }
    },
    "AnnotationEvent": {
      "type": "object",
      "properties": {
        "color": {
          "type": "string"
        },
        "dashboardId": {
          "type": "integer",
          "format": "int64"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "isRegion": {
          "type": "boolean"
        },
        "panelId": {
          "type": "integer",
          "format": "int64"
        },
        "source": {
          "$ref": "#/definitions/AnnotationQuery"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "text": {
          "type": "string"
        },
        "time": {
          "type": "integer",
          "format": "int64"
        },
        "timeEnd": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "AnnotationPanelFilter": {
      "type": "object",
      "title": "AnnotationPanelFilter defines model for AnnotationPanelFilter.",
      "properties": {
        "exclude": {
          "description": "Should the specified panels be included or excluded",
          "type": "boolean"
        },
        "ids": {
          "description": "Panel IDs that should be included or excluded",
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "AnnotationPermission": {
      "type": "object",
      "properties": {
        "dashboard": {
          "$ref": "#/definitions/AnnotationActions"
        },
        "organization": {
          "$ref": "#/definitions/AnnotationActions"
        }
      }
    },
    "AnnotationQuery": {
      "description": "TODO docs\nFROM: AnnotationQuery in grafana-data/src/types/annotations.ts",
      "type": "object",
      "properties": {
        "builtIn": {
          "description": "Set to 1 for the standard annotation query all dashboards have by default.",
          "type": "number",
          "format": "float"
        },
        "datasource": {
          "$ref": "#/definitions/DataSourceRef"
        },
        "enable": {
          "description": "When enabled the annotation query is issued with every dashboard refresh",
          "type": "boolean"
        },
        "filter": {
          "$ref": "#/definitions/AnnotationPanelFilter"
        },
        "hide": {
          "description": "Annotation queries can be toggled on or off at the top of the dashboard.\nWhen hide is true, the toggle is not shown in the dashboard.",
          "type": "boolean"
        },
        "iconColor": {
          "description": "Color to use for the annotation event markers",
          "type": "string"
        },
        "name": {
          "description": "Name of annotation.",
          "type": "string"
        },
        "target": {
          "$ref": "#/definitions/AnnotationTarget"
        },
        "type": {
          "description": "TODO -- this should not exist here, it is based on the --grafana-- datasource",
          "type": "string"
        }
      }
    },
    "AnnotationTarget": {
      "description": "TODO: this should be a regular DataQuery that depends on the selected dashboard\nthese match the properties of the \"grafana\" datasouce that is default in most dashboards",
      "type": "object",
      "properties": {
        "limit": {
          "description": "Only required/valid for the grafana datasource...\nbut code+tests is already depending on it so hard to change",
          "type": "integer",
          "format": "int64"
        },
        "matchAny": {
          "description": "Only required/valid for the grafana datasource...\nbut code+tests is already depending on it so hard to change",
          "type": "boolean"
        },
        "tags": {
          "description": "Only required/valid for the grafana datasource...\nbut code+tests is already depending on it so hard to change",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "type": {
          "description": "Only required/valid for the grafana datasource...\nbut code+tests is already depending on it so hard to change",
          "type": "string"
        }
      }
    },
    "ApiKeyDTO": {
      "type": "object",
      "properties": {
        "accessControl": {
          "$ref": "#/definitions/Metadata"
        },
        "expiration": {
          "type": "string",
          "format": "date-time"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "lastUsedAt": {
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "type": "string"
        },
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ]
        }
      }
    },
    "ApiRuleNode": {
      "type": "object",
      "properties": {
        "alert": {
          "type": "string"
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "expr": {
          "type": "string"
        },
        "for": {
          "type": "string"
        },
        "keep_firing_for": {
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "record": {
          "type": "string"
        }
      }
    },
    "Assignments": {
      "type": "object",
      "properties": {
        "builtInRoles": {
          "type": "boolean"
        },
        "serviceAccounts": {
          "type": "boolean"
        },
        "teams": {
          "type": "boolean"
        },
        "users": {
          "type": "boolean"
        }
      }
    },
    "AttributeTypeAndValue": {
      "description": "AttributeTypeAndValue mirrors the ASN.1 structure of the same name in\nRFC 5280, Section 4.1.2.4.",
      "type": "object",
      "properties": {
        "Type": {
          "$ref": "#/definitions/ObjectIdentifier"
        },
        "Value": {}
      }
    },
    "Authorization": {
      "type": "object",
      "title": "Authorization contains HTTP authorization credentials.",
      "properties": {
        "credentials": {
          "$ref": "#/definitions/Secret"
        },
        "credentials_file": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "BacktestConfig": {
      "type": "object",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "condition": {
          "type": "string"
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertQuery"
          }
        },
        "for": {
          "$ref": "#/definitions/Duration"
        },
        "from": {
          "type": "string",
          "format": "date-time"
        },
        "interval": {
          "$ref": "#/definitions/Duration"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "no_data_state": {
          "type": "string",
          "enum": [
            "Alerting",
            "NoData",
            "OK"
          ]
        },
        "title": {
          "type": "string"
        },
        "to": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "BacktestResult": {
      "$ref": "#/definitions/Frame"
    },
    "BasicAuth": {
      "type": "object",
      "title": "BasicAuth contains basic HTTP authentication credentials.",
      "properties": {
        "password": {
          "$ref": "#/definitions/Secret"
        },
        "password_file": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "username_file": {
          "type": "string"
        }
      }
    },
    "CalculateDiffTarget": {
      "type": "object",
      "properties": {
        "dashboardId": {
          "type": "integer",
          "format": "int64"
        },
        "unsavedDashboard": {
          "$ref": "#/definitions/Json"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "Certificate": {
      "type": "object",
      "title": "A Certificate represents an X.509 certificate.",
      "properties": {
        "AuthorityKeyId": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        },
        "BasicConstraintsValid": {
          "description": "BasicConstraintsValid indicates whether IsCA, MaxPathLen,\nand MaxPathLenZero are valid.",
          "type": "boolean"
        },
        "CRLDistributionPoints": {
          "description": "CRL Distribution Points",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "DNSNames": {
          "description": "Subject Alternate Name values. (Note that these values may not be valid\nif invalid values were contained within a parsed certificate. For\nexample, an element of DNSNames may not be a valid DNS domain name.)",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "EmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ExcludedDNSDomains": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ExcludedEmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ExcludedIPRanges": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPNet"
          }
        },
        "ExcludedURIDomains": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ExtKeyUsage": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExtKeyUsage"
          }
        },
        "Extensions": {
          "description": "Extensions contains raw X.509 extensions. When parsing certificates,\nthis can be used to extract non-critical extensions that are not\nparsed by this package. When marshaling certificates, the Extensions\nfield is ignored, see ExtraExtensions.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Extension"
          }
        },
        "ExtraExtensions": {
          "description": "ExtraExtensions contains extensions to be copied, raw, into any\nmarshaled certificates. Values override any extensions that would\notherwise be produced based on the other fields. The ExtraExtensions\nfield is not populated when parsing certificates, see Extensions.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Extension"
          }
        },
        "IPAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "IsCA": {
          "type": "boolean"
        },
        "Issuer": {
          "$ref": "#/definitions/Name"
        },
        "IssuingCertificateURL": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "KeyUsage": {
          "$ref": "#/definitions/KeyUsage"
        },
        "MaxPathLen": {
          "description": "MaxPathLen and MaxPathLenZero indicate the presence and\nvalue of the BasicConstraints' \"pathLenConstraint\".\n\nWhen parsing a certificate, a positive non-zero MaxPathLen\nmeans that the field was specified, -1 means it was unset,\nand MaxPathLenZero being true mean that the field was\nexplicitly set to zero. The case of MaxPathLen==0 with MaxPathLenZero==false\nshould be treated equivalent to -1 (unset).\n\nWhen generating a certificate, an unset pathLenConstraint\ncan be requested with either MaxPathLen == -1 or using the\nzero value for both MaxPathLen and MaxPathLenZero.",
          "type": "integer",
          "format": "int64"
        },
        "MaxPathLenZero": {
          "description": "MaxPathLenZero indicates that BasicConstraintsValid==true\nand MaxPathLen==0 should be interpreted as an actual\nmaximum path length of zero. Otherwise, that combination is\ninterpreted as MaxPathLen not being set.",
          "type": "boolean"
        },
        "NotBefore": {
          "type": "string",
          "format": "date-time"
        },
        "OCSPServer": {
          "description": "RFC 5280, 4.2.2.1 (Authority Information Access)",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "PermittedDNSDomains": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "PermittedDNSDomainsCritical": {
          "description": "Name constraints",
          "type": "boolean"
        },
        "PermittedEmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "PermittedIPRanges": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPNet"
          }
        },
        "PermittedURIDomains": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "Policies": {
          "description": "Policies contains all policy identifiers included in the certificate.\nIn Go 1.22, encoding/gob cannot handle and ignores this field.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OID"
          }
        },
        "PolicyIdentifiers": {
          "description": "PolicyIdentifiers contains asn1.ObjectIdentifiers, the components\nof which are limited to int32. If a certificate contains a policy which\ncannot be represented by asn1.ObjectIdentifier, it will not be included in\nPolicyIdentifiers, but will be present in Policies, which contains all parsed\npolicy OIDs.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ObjectIdentifier"
          }
        },
        "PublicKey": {},
        "PublicKeyAlgorithm": {
          "$ref": "#/definitions/PublicKeyAlgorithm"
        },
        "Raw": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        },
        "RawIssuer": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        },
        "RawSubject": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        },
        "RawSubjectPublicKeyInfo": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        },
        "RawTBSCertificate": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        },
        "SerialNumber": {
          "type": "string"
        },
        "Signature": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        },
        "SignatureAlgorithm": {
          "$ref": "#/definitions/SignatureAlgorithm"
        },
        "Subject": {
          "$ref": "#/definitions/Name"
        },
        "SubjectKeyId": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        },
        "URIs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/URL"
          }
        },
        "UnhandledCriticalExtensions": {
          "description": "UnhandledCriticalExtensions contains a list of extension IDs that\nwere not (fully) processed when parsing. Verify will fail if this\nslice is non-empty, unless verification is delegated to an OS\nlibrary which understands all the critical extensions.\n\nUsers can access these extensions using Extensions and can remove\nelements from this slice if they believe that they have been\nhandled.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ObjectIdentifier"
          }
        },
        "UnknownExtKeyUsage": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ObjectIdentifier"
          }
        },
        "Version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "ChangeUserPasswordCommand": {
      "type": "object",
      "properties": {
        "newPassword": {
          "$ref": "#/definitions/Password"
        },
        "oldPassword": {
          "$ref": "#/definitions/Password"
        }
      }
    },
    "ConfFloat64": {
      "description": "ConfFloat64 is a float64. It Marshals float64 values of NaN of Inf\nto null.",
      "type": "number",
      "format": "double"
    },
    "Config": {
      "type": "object",
      "title": "Config is the top-level configuration for Alertmanager's config files.",
      "properties": {
        "global": {
          "$ref": "#/definitions/GlobalConfig"
        },
        "inhibit_rules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InhibitRule"
          }
        },
        "mute_time_intervals": {
          "description": "MuteTimeIntervals is deprecated and will be removed before Alertmanager 1.0.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/MuteTimeInterval"
          }
        },
        "route": {
          "$ref": "#/definitions/Route"
        },
        "templates": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "time_intervals": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TimeInterval"
          }
        }
      }
    },
    "ContactPointExport": {
      "type": "object",
      "title": "ContactPointExport is the provisioned file export of alerting.ContactPointV1.",
      "properties": {
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "receivers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReceiverExport"
          }
        }
      }
    },
    "ContactPoints": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/EmbeddedContactPoint"
      }
    },
    "CookiePreferences": {
      "type": "object",
      "title": "CookiePreferences defines model for CookiePreferences.",
      "properties": {
        "analytics": {
          "type": "object",
          "additionalProperties": {}
        },
        "functional": {
          "type": "object",
          "additionalProperties": {}
        },
        "performance": {
          "type": "object",
          "additionalProperties": {}
        }
      }
    },
    "CookieType": {
      "type": "string"
    },
    "Correlation": {
      "description": "Correlation is the model for correlations definitions",
      "type": "object",
      "properties": {
        "config": {
          "$ref": "#/definitions/CorrelationConfig"
        },
        "description": {
          "description": "Description of the correlation",
          "type": "string",
          "example": "Logs to Traces"
        },
        "label": {
          "description": "Label identifying the correlation",
          "type": "string",
          "example": "My Label"
        },
        "orgId": {
          "description": "OrgID of the data source the correlation originates from",
          "type": "integer",
          "format": "int64",
          "example": 1
        },
        "provisioned": {
          "description": "Provisioned True if the correlation was created during provisioning",
          "type": "boolean"
        },
        "sourceUID": {
          "description": "UID of the data source the correlation originates from",
          "type": "string",
          "example": "d0oxYRg4z"
        },
        "targetUID": {
          "description": "UID of the data source the correlation points to",
          "type": "string",
          "example": "PE1C5CBDA0504A6A3"
        },
        "uid": {
          "description": "Unique identifier of the correlation",
          "type": "string",
          "example": "50xhMlg9k"
        }
      }
    },
    "CorrelationConfig": {
      "type": "object",
      "required": [
        "field",
        "type",
        "target"
      ],
      "properties": {
        "field": {
          "description": "Field used to attach the correlation link",
          "type": "string",
          "example": "message"
        },
        "target": {
          "description": "Target data query",
          "type": "object",
          "additionalProperties": {},
          "example": {
            "prop1": "value1",
            "prop2": "value"
          }
        },
        "transformations": {
          "$ref": "#/definitions/Transformations"
        },
        "type": {
          "$ref": "#/definitions/CorrelationConfigType"
        }
      }
    },
    "CorrelationConfigType": {
      "type": "string"
    },
    "CorrelationConfigUpdateDTO": {
      "type": "object",
      "properties": {
        "field": {
          "description": "Field used to attach the correlation link",
          "type": "string",
          "example": "message"
        },
        "target": {
          "description": "Target data query",
          "type": "object",
          "additionalProperties": {},
          "example": {
            "prop1": "value1",
            "prop2": "value"
          }
        },
        "transformations": {
          "description": "Source data transformations",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Transformation"
          },
          "example": [
            {
              "type": "logfmt"
            },
            {
              "expression": "(Superman|Batman)",
              "type": "regex",
              "variable": "name"
            }
          ]
        },
        "type": {
          "$ref": "#/definitions/CorrelationConfigType"
        }
      }
    },
    "CounterResetHint": {
      "description": "or alternatively that we are dealing with a gauge histogram, where counter resets do not apply.",
      "type": "integer",
      "format": "uint8",
      "title": "CounterResetHint contains the known information about a counter reset,"
    },
    "CreateCorrelationCommand": {
      "description": "CreateCorrelationCommand is the command for creating a correlation",
      "type": "object",
      "properties": {
        "config": {
          "$ref": "#/definitions/CorrelationConfig"
        },
        "description": {
          "description": "Optional description of the correlation",
          "type": "string",
          "example": "Logs to Traces"
        },
        "label": {
          "description": "Optional label identifying the correlation",
          "type": "string",
          "example": "My label"
        },
        "provisioned": {
          "description": "True if correlation was created with provisioning. This makes it read-only.",
          "type": "boolean"
        },
        "targetUID": {
          "description": "Target data source UID to which the correlation is created. required if config.type = query",
          "type": "string",
          "example": "PE1C5CBDA0504A6A3"
        }
      }
    },
    "CreateCorrelationResponseBody": {
      "description": "CreateCorrelationResponse is the response struct for CreateCorrelationCommand",
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "example": "Correlation created"
        },
        "result": {
          "$ref": "#/definitions/Correlation"
        }
      }
    },
    "CreateDashboardSnapshotCommand": {
      "type": "object",
      "required": [
        "dashboard"
      ],
      "properties": {
        "apiVersion": {
          "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n+optional",
          "type": "string"
        },
        "dashboard": {
          "$ref": "#/definitions/Unstructured"
        },
        "deleteKey": {
          "description": "Unique key used to delete the snapshot. It is different from the `key` so that only the creator can delete the snapshot. Required if `external` is `true`.",
          "type": "string"
        },
        "expires": {
          "description": "When the snapshot should expire in seconds in seconds. Default is never to expire.",
          "type": "integer",
          "format": "int64",
          "default": 0
        },
        "external": {
          "description": "these are passed when storing an external snapshot ref\nSave the snapshot on an external server rather than locally.",
          "type": "boolean",
          "default": false
        },
        "key": {
          "description": "Define the unique key. Required if `external` is `true`.",
          "type": "string"
        },
        "kind": {
          "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional",
          "type": "string"
        },
        "name": {
          "description": "Snapshot name",
          "type": "string"
        }
      }
    },
    "CreateFolderCommand": {
      "description": "CreateFolderCommand captures the information required by the folder service\nto create a folder.",
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "parentUid": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "CreateLibraryElementCommand": {
      "description": "CreateLibraryElementCommand is the command for adding a LibraryElement",
      "type": "object",
      "properties": {
        "folderId": {
          "description": "ID of the folder where the library element is stored.\n\nDeprecated: use FolderUID instead",
          "type": "integer",
          "format": "int64"
        },
        "folderUid": {
          "description": "UID of the folder where the library element is stored.",
          "type": "string"
        },
        "kind": {
          "description": "Kind of element to create, Use 1 for library panels or 2 for c.\nDescription:\n1 - library panels\n2 - library variables",
          "type": "integer",
          "format": "int64",
          "enum": [
            1,
            2
          ]
        },
        "model": {
          "description": "The JSON model for the library element.",
          "type": "object"
        },
        "name": {
          "description": "Name of the library element.",
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "CreateOrUpdateReportConfig": {
      "type": "object",
      "properties": {
        "dashboards": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReportDashboard"
          }
        },
        "enableCsv": {
          "type": "boolean"
        },
        "enableDashboardUrl": {
          "type": "boolean"
        },
        "formats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Type"
          }
        },
        "message": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "options": {
          "$ref": "#/definitions/ReportOptions"
        },
        "recipients": {
          "type": "string"
        },
        "replyTo": {
          "type": "string"
        },
        "scaleFactor": {
          "type": "integer",
          "format": "int64"
        },
        "schedule": {
          "$ref": "#/definitions/ReportSchedule"
        },
        "state": {
          "$ref": "#/definitions/State"
        }
      }
    },
    "CreateOrgCommand": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        }
      }
    },
    "CreatePlaylistCommand": {
      "type": "object",
      "properties": {
        "interval": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PlaylistItem"
          }
        },
        "name": {
          "type": "string"
        }
      }
    },
    "CreateQueryInQueryHistoryCommand": {
      "description": "CreateQueryInQueryHistoryCommand is the command for adding query history",
      "type": "object",
      "required": [
        "queries"
      ],
      "properties": {
        "datasourceUid": {
          "description": "UID of the data source for which are queries stored.",
          "type": "string",
          "example": "PE1C5CBDA0504A6A3"
        },
        "queries": {
          "$ref": "#/definitions/Json"
        }
      }
    },
    "CreateRoleForm": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "displayName": {
          "type": "string"
        },
        "global": {
          "type": "boolean"
        },
        "group": {
          "type": "string"
        },
        "hidden": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "permissions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Permission"
          }
        },
        "uid": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "CreateServiceAccountForm": {
      "type": "object",
      "properties": {
        "isDisabled": {
          "type": "boolean",
          "example": false
        },
        "name": {
          "type": "string",
          "example": "grafana"
        },
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ],
          "example": "Admin"
        }
      }
    },
    "CreateTeamCommand": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "DashboardACLInfoDTO": {
      "type": "object",
      "properties": {
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "dashboardId": {
          "type": "integer",
          "format": "int64"
        },
        "folderId": {
          "description": "Deprecated: use FolderUID instead",
          "type": "integer",
          "format": "int64"
        },
        "folderUid": {
          "type": "string"
        },
        "inherited": {
          "type": "boolean"
        },
        "isFolder": {
          "type": "boolean"
        },
        "permission": {
          "$ref": "#/definitions/PermissionType"
        },
        "permissionName": {
          "type": "string"
        },
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ]
        },
        "slug": {
          "type": "string"
        },
        "team": {
          "type": "string"
        },
        "teamAvatarUrl": {
          "type": "string"
        },
        "teamEmail": {
          "type": "string"
        },
        "teamId": {
          "type": "integer",
          "format": "int64"
        },
        "title": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "updated": {
          "type": "string",
          "format": "date-time"
        },
        "url": {
          "type": "string"
        },
        "userAvatarUrl": {
          "type": "string"
        },
        "userEmail": {
          "type": "string"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        },
        "userLogin": {
          "type": "string"
        }
      }
    },
    "DashboardACLUpdateItem": {
      "type": "object",
      "properties": {
        "permission": {
          "$ref": "#/definitions/PermissionType"
        },
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ]
        },
        "teamId": {
          "type": "integer",
          "format": "int64"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "DashboardCreateCommand": {
      "description": "These are the values expected to be sent from an end user\n+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object",
      "type": "object",
      "required": [
        "dashboard"
      ],
      "properties": {
        "apiVersion": {
          "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n+optional",
          "type": "string"
        },
        "dashboard": {
          "$ref": "#/definitions/Unstructured"
        },
        "expires": {
          "description": "When the snapshot should expire in seconds in seconds. Default is never to expire.",
          "type": "integer",
          "format": "int64",
          "default": 0
        },
        "external": {
          "description": "these are passed when storing an external snapshot ref\nSave the snapshot on an external server rather than locally.",
          "type": "boolean",
          "default": false
        },
        "kind": {
          "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional",
          "type": "string"
        },
        "name": {
          "description": "Snapshot name",
          "type": "string"
        }
      }
    },
    "DashboardFullWithMeta": {
      "type": "object",
      "properties": {
        "dashboard": {
          "$ref": "#/definitions/Json"
        },
        "meta": {
          "$ref": "#/definitions/DashboardMeta"
        }
      }
    },
    "DashboardMeta": {
      "type": "object",
      "properties": {
        "annotationsPermissions": {
          "$ref": "#/definitions/AnnotationPermission"
        },
        "canAdmin": {
          "type": "boolean"
        },
        "canDelete": {
          "type": "boolean"
        },
        "canEdit": {
          "type": "boolean"
        },
        "canSave": {
          "type": "boolean"
        },
        "canStar": {
          "type": "boolean"
        },
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "createdBy": {
          "type": "string"
        },
        "expires": {
          "type": "string",
          "format": "date-time"
        },
        "folderId": {
          "description": "Deprecated: use FolderUID instead",
          "type": "integer",
          "format": "int64"
        },
        "folderTitle": {
          "type": "string"
        },
        "folderUid": {
          "type": "string"
        },
        "folderUrl": {
          "type": "string"
        },
        "hasAcl": {
          "type": "boolean"
        },
        "isFolder": {
          "type": "boolean"
        },
        "isSnapshot": {
          "type": "boolean"
        },
        "isStarred": {
          "type": "boolean"
        },
        "provisioned": {
          "type": "boolean"
        },
        "provisionedExternalId": {
          "type": "string"
        },
        "publicDashboardEnabled": {
          "type": "boolean"
        },
        "publicDashboardUid": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "updated": {
          "type": "string",
          "format": "date-time"
        },
        "updatedBy": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "DashboardRedirect": {
      "type": "object",
      "properties": {
        "redirectUri": {
          "type": "string"
        }
      }
    },
    "DashboardSnapshotDTO": {
      "description": "DashboardSnapshotDTO without dashboard map",
      "type": "object",
      "properties": {
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "expires": {
          "type": "string",
          "format": "date-time"
        },
        "external": {
          "type": "boolean"
        },
        "externalUrl": {
          "type": "string"
        },
        "key": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "updated": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "DashboardTagCloudItem": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "term": {
          "type": "string"
        }
      }
    },
    "DashboardVersionMeta": {
      "description": "DashboardVersionMeta extends the DashboardVersionDTO with the names\nassociated with the UserIds, overriding the field with the same name from\nthe DashboardVersionDTO model.",
      "type": "object",
      "properties": {
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "createdBy": {
          "type": "string"
        },
        "dashboardId": {
          "type": "integer",
          "format": "int64"
        },
        "data": {
          "$ref": "#/definitions/Json"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "message": {
          "type": "string"
        },
        "parentVersion": {
          "type": "integer",
          "format": "int64"
        },
        "restoredFrom": {
          "type": "integer",
          "format": "int64"
        },
        "uid": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "DataLink": {
      "description": "DataLink define what",
      "type": "object",
      "properties": {
        "internal": {
          "$ref": "#/definitions/InternalDataLink"
        },
        "targetBlank": {
          "type": "boolean"
        },
        "title": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "DataResponse": {
      "description": "A map of RefIDs (unique query identifiers) to this type makes up the Responses property of a QueryDataResponse.\nThe Error property is used to allow for partial success responses from the containing QueryDataResponse.",
      "type": "object",
      "title": "DataResponse contains the results from a DataQuery.",
      "properties": {
        "Error": {
          "description": "Error is a property to be set if the corresponding DataQuery has an error.",
          "type": "string"
        },
        "ErrorSource": {
          "$ref": "#/definitions/ErrorSource"
        },
        "Frames": {
          "$ref": "#/definitions/Frames"
        },
        "Status": {
          "$ref": "#/definitions/Status"
        }
      }
    },
    "DataSource": {
      "type": "object",
      "properties": {
        "access": {
          "$ref": "#/definitions/DsAccess"
        },
        "accessControl": {
          "$ref": "#/definitions/Metadata"
        },
        "basicAuth": {
          "type": "boolean"
        },
        "basicAuthUser": {
          "type": "string"
        },
        "database": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "isDefault": {
          "type": "boolean"
        },
        "jsonData": {
          "$ref": "#/definitions/Json"
        },
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "readOnly": {
          "type": "boolean"
        },
        "secureJsonFields": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        },
        "type": {
          "type": "string"
        },
        "typeLogoUrl": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "user": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        },
        "withCredentials": {
          "type": "boolean"
        }
      }
    },
    "DataSourceList": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/DataSourceListItemDTO"
      }
    },
    "DataSourceListItemDTO": {
      "type": "object",
      "properties": {
        "access": {
          "$ref": "#/definitions/DsAccess"
        },
        "basicAuth": {
          "type": "boolean"
        },
        "database": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "isDefault": {
          "type": "boolean"
        },
        "jsonData": {
          "$ref": "#/definitions/Json"
        },
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "readOnly": {
          "type": "boolean"
        },
        "type": {
          "type": "string"
        },
        "typeLogoUrl": {
          "type": "string"
        },
        "typeName": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "user": {
          "type": "string"
        }
      }
    },
    "DataSourceRef": {
      "description": "Ref to a DataSource instance",
      "type": "object",
      "properties": {
        "type": {
          "description": "The plugin type-id",
          "type": "string"
        },
        "uid": {
          "description": "Specific datasource instance",
          "type": "string"
        }
      }
    },
    "DataTopic": {
      "description": "nolint:revive",
      "type": "string",
      "title": "DataTopic is used to identify which topic the frame should be assigned to."
    },
    "DeleteCorrelationResponseBody": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "example": "Correlation deleted"
        }
      }
    },
    "DeleteTokenCommand": {
      "type": "object",
      "properties": {
        "instance": {
          "type": "string"
        }
      }
    },
    "DescendantCounts": {
      "type": "object",
      "additionalProperties": {
        "type": "integer",
        "format": "int64"
      }
    },
    "Description": {
      "type": "object",
      "properties": {
        "assignments": {
          "$ref": "#/definitions/Assignments"
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "DeviceSearchHitDTO": {
      "type": "object",
      "properties": {
        "clientIp": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "deviceId": {
          "type": "string"
        },
        "lastSeenAt": {
          "type": "string",
          "format": "date-time"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "userAgent": {
          "type": "string"
        }
      }
    },
    "DiscordConfig": {
      "type": "object",
      "title": "DiscordConfig configures notifications via Discord.",
      "properties": {
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "message": {
          "type": "string"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "title": {
          "type": "string"
        },
        "webhook_url": {
          "$ref": "#/definitions/SecretURL"
        },
        "webhook_url_file": {
          "type": "string"
        }
      }
    },
    "DiscoveryBase": {
      "type": "object",
      "required": [
        "status"
      ],
      "properties": {
        "error": {
          "type": "string"
        },
        "errorType": {
          "$ref": "#/definitions/ErrorType"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "DsAccess": {
      "type": "string"
    },
    "DsPermissionType": {
      "description": "Datasource permission\nDescription:\n`0` - No Access\n`1` - Query\n`2` - Edit\nEnum: 0,1,2",
      "type": "integer",
      "format": "int64"
    },
    "Duration": {
      "description": "A Duration represents the elapsed time between two instants\nas an int64 nanosecond count. The representation limits the\nlargest representable duration to approximately 290 years.",
      "type": "integer",
      "format": "int64"
    },
    "EmailConfig": {
      "type": "object",
      "title": "EmailConfig configures notifications via mail.",
      "properties": {
        "auth_identity": {
          "type": "string"
        },
        "auth_password": {
          "$ref": "#/definitions/Secret"
        },
        "auth_password_file": {
          "type": "string"
        },
        "auth_secret": {
          "$ref": "#/definitions/Secret"
        },
        "auth_username": {
          "type": "string"
        },
        "from": {
          "type": "string"
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "hello": {
          "type": "string"
        },
        "html": {
          "type": "string"
        },
        "require_tls": {
          "type": "boolean"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "smarthost": {
          "$ref": "#/definitions/HostPort"
        },
        "text": {
          "type": "string"
        },
        "tls_config": {
          "$ref": "#/definitions/TLSConfig"
        },
        "to": {
          "description": "Email address to notify.",
          "type": "string"
        }
      }
    },
    "EmailDTO": {
      "type": "object",
      "properties": {
        "recipient": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "EmbeddedContactPoint": {
      "description": "EmbeddedContactPoint is the contact point type that is used\nby grafanas embedded alertmanager implementation.",
      "type": "object",
      "required": [
        "type",
        "settings"
      ],
      "properties": {
        "disableResolveMessage": {
          "type": "boolean",
          "example": false
        },
        "name": {
          "description": "Name is used as grouping key in the UI. Contact points with the\nsame name will be grouped in the UI.",
          "type": "string",
          "example": "webhook_1"
        },
        "provenance": {
          "type": "string",
          "readOnly": true
        },
        "settings": {
          "$ref": "#/definitions/Json"
        },
        "type": {
          "type": "string",
          "enum": [
            "alertmanager",
            " dingding",
            " discord",
            " email",
            " googlechat",
            " kafka",
            " line",
            " opsgenie",
            " pagerduty",
            " pushover",
            " sensugo",
            " slack",
            " teams",
            " telegram",
            " threema",
            " victorops",
            " webhook",
            " wecom"
          ],
          "example": "webhook"
        },
        "uid": {
          "description": "UID is the unique identifier of the contact point. The UID can be\nset by the user.",
          "type": "string",
          "maxLength": 40,
          "minLength": 1,
          "pattern": "^[a-zA-Z0-9\\-\\_]+$",
          "example": "my_external_reference"
        }
      }
    },
    "EnumFieldConfig": {
      "description": "Enum field config\nVector values are used as lookup keys into the enum fields",
      "type": "object",
      "properties": {
        "color": {
          "description": "Color is the color value for a given index (empty is undefined)",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "description": {
          "description": "Description of the enum state",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "icon": {
          "description": "Icon supports setting an icon for a given index value",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "text": {
          "description": "Value is the string display value for a given index",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ErrorResponseBody": {
      "type": "object",
      "required": [
        "message"
      ],
      "properties": {
        "error": {
          "description": "Error An optional detailed description of the actual error. Only included if running in developer mode.",
          "type": "string"
        },
        "message": {
          "description": "a human readable version of the error",
          "type": "string"
        },
        "status": {
          "description": "Status An optional status to denote the cause of the error.\n\nFor example, a 412 Precondition Failed error may include additional information of why that error happened.",
          "type": "string"
        }
      }
    },
    "ErrorSource": {
      "description": "ErrorSource type defines the source of the error",
      "type": "string"
    },
    "ErrorType": {
      "type": "string",
      "title": "ErrorType models the different API error types."
    },
    "EvalAlertConditionCommand": {
      "description": "EvalAlertConditionCommand is the command for evaluating a condition",
      "type": "object",
      "properties": {
        "condition": {
          "type": "string"
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertQuery"
          }
        },
        "now": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "EvalQueriesPayload": {
      "type": "object",
      "properties": {
        "condition": {
          "type": "string"
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertQuery"
          }
        },
        "now": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "EvalQueriesResponse": {},
    "ExplorePanelsState": {
      "description": "This is an object constructed with the keys as the values of the enum VisType and the value being a bag of properties"
    },
    "ExtKeyUsage": {
      "description": "Each of the ExtKeyUsage* constants define a unique action.",
      "type": "integer",
      "format": "int64",
      "title": "ExtKeyUsage represents an extended set of actions that are valid for a given key."
    },
    "ExtendedReceiver": {
      "type": "object",
      "properties": {
        "email_configs": {
          "$ref": "#/definitions/EmailConfig"
        },
        "grafana_managed_receiver": {
          "$ref": "#/definitions/PostableGrafanaReceiver"
        },
        "opsgenie_configs": {
          "$ref": "#/definitions/OpsGenieConfig"
        },
        "pagerduty_configs": {
          "$ref": "#/definitions/PagerdutyConfig"
        },
        "pushover_configs": {
          "$ref": "#/definitions/PushoverConfig"
        },
        "slack_configs": {
          "$ref": "#/definitions/SlackConfig"
        },
        "victorops_configs": {
          "$ref": "#/definitions/VictorOpsConfig"
        },
        "webhook_configs": {
          "$ref": "#/definitions/WebhookConfig"
        },
        "wechat_configs": {
          "$ref": "#/definitions/WechatConfig"
        }
      }
    },
    "Extension": {
      "description": "Extension represents the ASN.1 structure of the same name. See RFC\n5280, section 4.2.",
      "type": "object",
      "properties": {
        "Critical": {
          "type": "boolean"
        },
        "Id": {
          "$ref": "#/definitions/ObjectIdentifier"
        },
        "Value": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        }
      }
    },
    "FailedUser": {
      "description": "FailedUser holds the information of an user that failed",
      "type": "object",
      "properties": {
        "Error": {
          "type": "string"
        },
        "Login": {
          "type": "string"
        }
      }
    },
    "Failure": {
      "$ref": "#/definitions/ResponseDetails"
    },
    "Field": {
      "description": "A Field is essentially a slice of various types with extra properties and methods.\nSee NewField() for supported types.\n\nThe slice data in the Field is a not exported, so methods on the Field are used to to manipulate its data.",
      "type": "object",
      "title": "Field represents a typed column of data within a Frame.",
      "properties": {
        "config": {
          "$ref": "#/definitions/FieldConfig"
        },
        "labels": {
          "$ref": "#/definitions/FrameLabels"
        },
        "name": {
          "description": "Name is default identifier of the field. The name does not have to be unique, but the combination\nof name and Labels should be unique for proper behavior in all situations.",
          "type": "string"
        }
      }
    },
    "FieldConfig": {
      "type": "object",
      "title": "FieldConfig represents the display properties for a Field.",
      "properties": {
        "color": {
          "description": "Map values to a display color\nNOTE: this interface is under development in the frontend... so simple map for now",
          "type": "object",
          "additionalProperties": {}
        },
        "custom": {
          "description": "Panel Specific Values",
          "type": "object",
          "additionalProperties": {}
        },
        "decimals": {
          "type": "integer",
          "format": "uint16"
        },
        "description": {
          "description": "Description is human readable field metadata",
          "type": "string"
        },
        "displayName": {
          "description": "DisplayName overrides Grafana default naming, should not be used from a data source",
          "type": "string"
        },
        "displayNameFromDS": {
          "description": "DisplayNameFromDS overrides Grafana default naming strategy.",
          "type": "string"
        },
        "filterable": {
          "description": "Filterable indicates if the Field's data can be filtered by additional calls.",
          "type": "boolean"
        },
        "interval": {
          "description": "Interval indicates the expected regular step between values in the series.\nWhen an interval exists, consumers can identify \"missing\" values when the expected value is not present.\nThe grafana timeseries visualization will render disconnected values when missing values are found it the time field.\nThe interval uses the same units as the values.  For time.Time, this is defined in milliseconds.",
          "type": "number",
          "format": "double"
        },
        "links": {
          "description": "The behavior when clicking on a result",
          "type": "array",
          "items": {
            "$ref": "#/definitions/DataLink"
          }
        },
        "mappings": {
          "$ref": "#/definitions/ValueMappings"
        },
        "max": {
          "$ref": "#/definitions/ConfFloat64"
        },
        "min": {
          "$ref": "#/definitions/ConfFloat64"
        },
        "noValue": {
          "description": "Alternative to empty string",
          "type": "string"
        },
        "path": {
          "description": "Path is an explicit path to the field in the datasource. When the frame meta includes a path,\nthis will default to `${frame.meta.path}/${field.name}\n\nWhen defined, this value can be used as an identifier within the datasource scope, and\nmay be used as an identifier to update values in a subsequent request",
          "type": "string"
        },
        "thresholds": {
          "$ref": "#/definitions/ThresholdsConfig"
        },
        "type": {
          "$ref": "#/definitions/FieldTypeConfig"
        },
        "unit": {
          "description": "Numeric Options",
          "type": "string"
        },
        "writeable": {
          "description": "Writeable indicates that the datasource knows how to update this value",
          "type": "boolean"
        }
      }
    },
    "FieldTypeConfig": {
      "description": "FieldTypeConfig has type specific configs, only one should be active at a time",
      "type": "object",
      "properties": {
        "enum": {
          "$ref": "#/definitions/EnumFieldConfig"
        }
      }
    },
    "FindTagsResult": {
      "type": "object",
      "title": "FindTagsResult is the result of a tags search.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TagsDTO"
          }
        }
      }
    },
    "FloatHistogram": {
      "description": "A FloatHistogram is needed by PromQL to handle operations that might result\nin fractional counts. Since the counts in a histogram are unlikely to be too\nlarge to be represented precisely by a float64, a FloatHistogram can also be\nused to represent a histogram with integer counts and thus serves as a more\ngeneralized representation.",
      "type": "object",
      "title": "FloatHistogram is similar to Histogram but uses float64 for all\ncounts. Additionally, bucket counts are absolute and not deltas.",
      "properties": {
        "Count": {
          "description": "Total number of observations. Must be zero or positive.",
          "type": "number",
          "format": "double"
        },
        "CounterResetHint": {
          "$ref": "#/definitions/CounterResetHint"
        },
        "PositiveBuckets": {
          "description": "Observation counts in buckets. Each represents an absolute count and\nmust be zero or positive.",
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          }
        },
        "PositiveSpans": {
          "description": "Spans for positive and negative buckets (see Span below).",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Span"
          }
        },
        "Schema": {
          "description": "Currently valid schema numbers are -4 \u003c= n \u003c= 8.  They are all for\nbase-2 bucket schemas, where 1 is a bucket boundary in each case, and\nthen each power of two is divided into 2^n logarithmic buckets.  Or\nin other words, each bucket boundary is the previous boundary times\n2^(2^-n).",
          "type": "integer",
          "format": "int32"
        },
        "Sum": {
          "description": "Sum of observations. This is also used as the stale marker.",
          "type": "number",
          "format": "double"
        },
        "ZeroCount": {
          "description": "Observations falling into the zero bucket. Must be zero or positive.",
          "type": "number",
          "format": "double"
        },
        "ZeroThreshold": {
          "description": "Width of the zero bucket.",
          "type": "number",
          "format": "double"
        }
      }
    },
    "Folder": {
      "type": "object",
      "properties": {
        "accessControl": {
          "$ref": "#/definitions/Metadata"
        },
        "canAdmin": {
          "type": "boolean"
        },
        "canDelete": {
          "type": "boolean"
        },
        "canEdit": {
          "type": "boolean"
        },
        "canSave": {
          "type": "boolean"
        },
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "createdBy": {
          "type": "string"
        },
        "hasAcl": {
          "type": "boolean"
        },
        "id": {
          "description": "Deprecated: use UID instead",
          "type": "integer",
          "format": "int64"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "parentUid": {
          "description": "only used if nested folders are enabled",
          "type": "string"
        },
        "parents": {
          "description": "the parent folders starting from the root going down",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Folder"
          }
        },
        "title": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "updated": {
          "type": "string",
          "format": "date-time"
        },
        "updatedBy": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "FolderSearchHit": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "parentUid": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "ForbiddenError": {
      "type": "object",
      "properties": {
        "body": {
          "$ref": "#/definitions/PublicError"
        }
      }
    },
    "Frame": {
      "description": "Each Field is well typed by its FieldType and supports optional Labels.\n\nA Frame is a general data container for Grafana. A Frame can be table data\nor time series data depending on its content and field types.",
      "type": "object",
      "title": "Frame is a columnar data structure where each column is a Field.",
      "properties": {
        "Fields": {
          "description": "Fields are the columns of a frame.\nAll Fields must be of the same the length when marshalling the Frame for transmission.\nThere should be no `nil` entries in the Fields slice (making them pointers was a mistake).",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Field"
          }
        },
        "Meta": {
          "$ref": "#/definitions/FrameMeta"
        },
        "Name": {
          "description": "Name is used in some Grafana visualizations.",
          "type": "string"
        },
        "RefID": {
          "description": "RefID is a property that can be set to match a Frame to its originating query.",
          "type": "string"
        }
      }
    },
    "FrameLabels": {
      "description": "Labels are used to add metadata to an object.  The JSON will always be sorted keys",
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "FrameMeta": {
      "description": "https://github.com/grafana/grafana/blob/master/packages/grafana-data/src/types/data.ts#L11\nNOTE -- in javascript this can accept any `[key: string]: any;` however\nthis interface only exposes the values we want to be exposed",
      "type": "object",
      "title": "FrameMeta matches:",
      "properties": {
        "channel": {
          "description": "Channel is the path to a stream in grafana live that has real-time updates for this data.",
          "type": "string"
        },
        "custom": {
          "description": "Custom datasource specific values."
        },
        "dataTopic": {
          "$ref": "#/definitions/DataTopic"
        },
        "executedQueryString": {
          "description": "ExecutedQueryString is the raw query sent to the underlying system. All macros and templating\nhave been applied.  When metadata contains this value, it will be shown in the query inspector.",
          "type": "string"
        },
        "notices": {
          "description": "Notices provide additional information about the data in the Frame that\nGrafana can display to the user in the user interface.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Notice"
          }
        },
        "path": {
          "description": "Path is a browsable path on the datasource.",
          "type": "string"
        },
        "pathSeparator": {
          "description": "PathSeparator defines the separator pattern to decode a hierarchy. The default separator is '/'.",
          "type": "string"
        },
        "preferredVisualisationPluginId": {
          "description": "PreferredVisualizationPluginId sets the panel plugin id to use to render the data when using Explore. If\nthe plugin cannot be found will fall back to PreferredVisualization.",
          "type": "string"
        },
        "preferredVisualisationType": {
          "$ref": "#/definitions/VisType"
        },
        "stats": {
          "description": "Stats is an array of query result statistics.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/QueryStat"
          }
        },
        "type": {
          "$ref": "#/definitions/FrameType"
        },
        "typeVersion": {
          "$ref": "#/definitions/FrameTypeVersion"
        },
        "uniqueRowIdFields": {
          "description": "Array of field indices which values create a unique id for each row. Ideally this should be globally unique ID\nbut that isn't guarantied. Should help with keeping track and deduplicating rows in visualizations, especially\nwith streaming data with frequent updates.",
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          },
          "example": "TraceID in Tempo, table name + primary key in SQL"
        }
      }
    },
    "FrameType": {
      "description": "A FrameType string, when present in a frame's metadata, asserts that the\nframe's structure conforms to the FrameType's specification.\nThis property is currently optional, so FrameType may be FrameTypeUnknown even if the properties of\nthe Frame correspond to a defined FrameType.\n+enum",
      "type": "string"
    },
    "FrameTypeVersion": {
      "type": "array",
      "title": "FrameType is a 2 number version (Major / Minor).",
      "items": {
        "type": "integer",
        "format": "uint64"
      }
    },
    "Frames": {
      "description": "It is the main data container within a backend.DataResponse.\nThere should be no `nil` entries in the Frames slice (making them pointers was a mistake).",
      "type": "array",
      "title": "Frames is a slice of Frame pointers.",
      "items": {
        "$ref": "#/definitions/Frame"
      }
    },
    "GenericPublicError": {
      "type": "object",
      "properties": {
        "body": {
          "$ref": "#/definitions/PublicError"
        }
      }
    },
    "GetAnnotationTagsResponse": {
      "type": "object",
      "title": "GetAnnotationTagsResponse is a response struct for FindTagsResult.",
      "properties": {
        "result": {
          "$ref": "#/definitions/FindTagsResult"
        }
      }
    },
    "GetHomeDashboardResponse": {
      "title": "Get home dashboard response.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "dashboard": {
              "$ref": "#/definitions/Json"
            },
            "meta": {
              "$ref": "#/definitions/DashboardMeta"
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "redirectUri": {
              "type": "string"
            }
          }
        }
      ]
    },
    "GettableAlertmanagers": {
      "type": "object",
      "properties": {
        "data": {
          "$ref": "#/definitions/AlertManagersResult"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "GettableApiAlertingConfig": {
      "type": "object",
      "properties": {
        "global": {
          "$ref": "#/definitions/GlobalConfig"
        },
        "inhibit_rules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InhibitRule"
          }
        },
        "muteTimeProvenances": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/Provenance"
          }
        },
        "mute_time_intervals": {
          "description": "MuteTimeIntervals is deprecated and will be removed before Alertmanager 1.0.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/MuteTimeInterval"
          }
        },
        "receivers": {
          "description": "Override with our superset receiver type",
          "type": "array",
          "items": {
            "$ref": "#/definitions/GettableApiReceiver"
          }
        },
        "route": {
          "$ref": "#/definitions/Route"
        },
        "templates": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "time_intervals": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TimeInterval"
          }
        }
      }
    },
    "GettableApiReceiver": {
      "type": "object",
      "properties": {
        "discord_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DiscordConfig"
          }
        },
        "email_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmailConfig"
          }
        },
        "grafana_managed_receiver_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GettableGrafanaReceiver"
          }
        },
        "msteams_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MSTeamsConfig"
          }
        },
        "name": {
          "description": "A unique identifier for this receiver.",
          "type": "string"
        },
        "opsgenie_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OpsGenieConfig"
          }
        },
        "pagerduty_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PagerdutyConfig"
          }
        },
        "pushover_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PushoverConfig"
          }
        },
        "slack_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SlackConfig"
          }
        },
        "sns_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SNSConfig"
          }
        },
        "telegram_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TelegramConfig"
          }
        },
        "victorops_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/VictorOpsConfig"
          }
        },
        "webex_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebexConfig"
          }
        },
        "webhook_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebhookConfig"
          }
        },
        "wechat_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WechatConfig"
          }
        }
      }
    },
    "GettableExtendedRuleNode": {
      "type": "object",
      "properties": {
        "alert": {
          "type": "string"
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "expr": {
          "type": "string"
        },
        "for": {
          "type": "string"
        },
        "grafana_alert": {
          "$ref": "#/definitions/GettableGrafanaRule"
        },
        "keep_firing_for": {
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "record": {
          "type": "string"
        }
      }
    },
    "GettableGrafanaReceiver": {
      "type": "object",
      "properties": {
        "disableResolveMessage": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "provenance": {
          "$ref": "#/definitions/Provenance"
        },
        "secureFields": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        },
        "settings": {
          "$ref": "#/definitions/RawMessage"
        },
        "type": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "GettableGrafanaReceivers": {
      "type": "object",
      "properties": {
        "grafana_managed_receiver_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GettableGrafanaReceiver"
          }
        }
      }
    },
    "GettableGrafanaRule": {
      "type": "object",
      "properties": {
        "condition": {
          "type": "string"
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertQuery"
          }
        },
        "exec_err_state": {
          "type": "string",
          "enum": [
            "OK",
            "Alerting",
            "Error"
          ]
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "intervalSeconds": {
          "type": "integer",
          "format": "int64"
        },
        "is_paused": {
          "type": "boolean"
        },
        "namespace_uid": {
          "type": "string"
        },
        "no_data_state": {
          "type": "string",
          "enum": [
            "Alerting",
            "NoData",
            "OK"
          ]
        },
        "notification_settings": {
          "$ref": "#/definitions/AlertRuleNotificationSettings"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "provenance": {
          "$ref": "#/definitions/Provenance"
        },
        "rule_group": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "updated": {
          "type": "string",
          "format": "date-time"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "GettableHistoricUserConfig": {
      "type": "object",
      "properties": {
        "alertmanager_config": {
          "$ref": "#/definitions/GettableApiAlertingConfig"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "last_applied": {
          "type": "string",
          "format": "date-time"
        },
        "template_file_provenances": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/Provenance"
          }
        },
        "template_files": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "GettableNGalertConfig": {
      "type": "object",
      "properties": {
        "alertmanagersChoice": {
          "type": "string",
          "enum": [
            "all",
            "internal",
            "external"
          ]
        }
      }
    },
    "GettableRuleGroupConfig": {
      "type": "object",
      "properties": {
        "interval": {
          "$ref": "#/definitions/Duration"
        },
        "name": {
          "type": "string"
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GettableExtendedRuleNode"
          }
        },
        "source_tenants": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "GettableStatus": {
      "type": "object",
      "required": [
        "cluster",
        "config",
        "uptime",
        "versionInfo"
      ],
      "properties": {
        "cluster": {
          "$ref": "#/definitions/clusterStatus"
        },
        "config": {
          "$ref": "#/definitions/PostableApiAlertingConfig"
        },
        "uptime": {
          "description": "uptime",
          "type": "string",
          "format": "date-time"
        },
        "versionInfo": {
          "$ref": "#/definitions/versionInfo"
        }
      }
    },
    "GettableTimeIntervals": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "provenance": {
          "$ref": "#/definitions/Provenance"
        },
        "time_intervals": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TimeIntervalItem"
          }
        }
      }
    },
    "GettableUserConfig": {
      "type": "object",
      "properties": {
        "alertmanager_config": {
          "$ref": "#/definitions/GettableApiAlertingConfig"
        },
        "template_file_provenances": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/Provenance"
          }
        },
        "template_files": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "GlobalConfig": {
      "description": "GlobalConfig defines configuration parameters that are valid globally\nunless overwritten.",
      "type": "object",
      "properties": {
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "opsgenie_api_key": {
          "$ref": "#/definitions/Secret"
        },
        "opsgenie_api_key_file": {
          "type": "string"
        },
        "opsgenie_api_url": {
          "$ref": "#/definitions/URL"
        },
        "pagerduty_url": {
          "$ref": "#/definitions/URL"
        },
        "resolve_timeout": {
          "$ref": "#/definitions/Duration"
        },
        "slack_api_url": {
          "$ref": "#/definitions/SecretURL"
        },
        "slack_api_url_file": {
          "type": "string"
        },
        "smtp_auth_identity": {
          "type": "string"
        },
        "smtp_auth_password": {
          "$ref": "#/definitions/Secret"
        },
        "smtp_auth_password_file": {
          "type": "string"
        },
        "smtp_auth_secret": {
          "$ref": "#/definitions/Secret"
        },
        "smtp_auth_username": {
          "type": "string"
        },
        "smtp_from": {
          "type": "string"
        },
        "smtp_hello": {
          "type": "string"
        },
        "smtp_require_tls": {
          "type": "boolean"
        },
        "smtp_smarthost": {
          "$ref": "#/definitions/HostPort"
        },
        "telegram_api_url": {
          "$ref": "#/definitions/URL"
        },
        "victorops_api_key": {
          "$ref": "#/definitions/Secret"
        },
        "victorops_api_key_file": {
          "type": "string"
        },
        "victorops_api_url": {
          "$ref": "#/definitions/URL"
        },
        "webex_api_url": {
          "$ref": "#/definitions/URL"
        },
        "wechat_api_corp_id": {
          "type": "string"
        },
        "wechat_api_secret": {
          "$ref": "#/definitions/Secret"
        },
        "wechat_api_url": {
          "$ref": "#/definitions/URL"
        }
      }
    },
    "HTTPClientConfig": {
      "type": "object",
      "title": "HTTPClientConfig configures an HTTP client.",
      "properties": {
        "authorization": {
          "$ref": "#/definitions/Authorization"
        },
        "basic_auth": {
          "$ref": "#/definitions/BasicAuth"
        },
        "bearer_token": {
          "$ref": "#/definitions/Secret"
        },
        "bearer_token_file": {
          "description": "The bearer token file for the targets. Deprecated in favour of\nAuthorization.CredentialsFile.",
          "type": "string"
        },
        "enable_http2": {
          "description": "EnableHTTP2 specifies whether the client should configure HTTP2.\nThe omitempty flag is not set, because it would be hidden from the\nmarshalled configuration when set to false.",
          "type": "boolean"
        },
        "follow_redirects": {
          "description": "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\nThe omitempty flag is not set, because it would be hidden from the\nmarshalled configuration when set to false.",
          "type": "boolean"
        },
        "no_proxy": {
          "description": "NoProxy contains addresses that should not use a proxy.",
          "type": "string"
        },
        "oauth2": {
          "$ref": "#/definitions/OAuth2"
        },
        "proxy_connect_header": {
          "$ref": "#/definitions/Header"
        },
        "proxy_from_environment": {
          "description": "ProxyFromEnvironment makes use of net/http ProxyFromEnvironment function\nto determine proxies.",
          "type": "boolean"
        },
        "proxy_url": {
          "$ref": "#/definitions/URL"
        },
        "tls_config": {
          "$ref": "#/definitions/TLSConfig"
        }
      }
    },
    "Header": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/Secret"
        }
      }
    },
    "Hit": {
      "type": "object",
      "properties": {
        "folderId": {
          "description": "Deprecated: use FolderUID instead",
          "type": "integer",
          "format": "int64"
        },
        "folderTitle": {
          "type": "string"
        },
        "folderUid": {
          "type": "string"
        },
        "folderUrl": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "isStarred": {
          "type": "boolean"
        },
        "slug": {
          "type": "string"
        },
        "sortMeta": {
          "type": "integer",
          "format": "int64"
        },
        "sortMetaName": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "title": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/HitType"
        },
        "uid": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "HitList": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Hit"
      }
    },
    "HitType": {
      "type": "string"
    },
    "HostPort": {
      "type": "object",
      "title": "HostPort represents a \"host:port\" network address.",
      "properties": {
        "Host": {
          "type": "string"
        },
        "Port": {
          "type": "string"
        }
      }
    },
    "IPMask": {
      "description": "See type [IPNet] and func [ParseCIDR] for details.",
      "type": "array",
      "title": "An IPMask is a bitmask that can be used to manipulate\nIP addresses for IP addressing and routing.",
      "items": {
        "type": "integer",
        "format": "uint8"
      }
    },
    "IPNet": {
      "type": "object",
      "title": "An IPNet represents an IP network.",
      "properties": {
        "IP": {
          "type": "string"
        },
        "Mask": {
          "$ref": "#/definitions/IPMask"
        }
      }
    },
    "ImportDashboardInput": {
      "type": "object",
      "title": "ImportDashboardInput definition of input parameters when importing a dashboard.",
      "properties": {
        "name": {
          "type": "string"
        },
        "pluginId": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "ImportDashboardRequest": {
      "type": "object",
      "title": "ImportDashboardRequest request object for importing a dashboard.",
      "properties": {
        "dashboard": {
          "$ref": "#/definitions/Json"
        },
        "folderId": {
          "description": "Deprecated: use FolderUID instead",
          "type": "integer",
          "format": "int64"
        },
        "folderUid": {
          "type": "string"
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ImportDashboardInput"
          }
        },
        "overwrite": {
          "type": "boolean"
        },
        "path": {
          "type": "string"
        },
        "pluginId": {
          "type": "string"
        }
      }
    },
    "ImportDashboardResponse": {
      "type": "object",
      "title": "ImportDashboardResponse response object returned when importing a dashboard.",
      "properties": {
        "dashboardId": {
          "type": "integer",
          "format": "int64"
        },
        "description": {
          "type": "string"
        },
        "folderId": {
          "description": "Deprecated: use FolderUID instead",
          "type": "integer",
          "format": "int64"
        },
        "folderUid": {
          "type": "string"
        },
        "imported": {
          "type": "boolean"
        },
        "importedRevision": {
          "type": "integer",
          "format": "int64"
        },
        "importedUri": {
          "type": "string"
        },
        "importedUrl": {
          "type": "string"
        },
        "path": {
          "type": "string"
        },
        "pluginId": {
          "type": "string"
        },
        "removed": {
          "type": "boolean"
        },
        "revision": {
          "type": "integer",
          "format": "int64"
        },
        "slug": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "InhibitRule": {
      "description": "InhibitRule defines an inhibition rule that mutes alerts that match the\ntarget labels if an alert matching the source labels exists.\nBoth alerts have to have a set of labels being equal.",
      "type": "object",
      "properties": {
        "equal": {
          "$ref": "#/definitions/LabelNames"
        },
        "source_match": {
          "description": "SourceMatch defines a set of labels that have to equal the given\nvalue for source alerts. Deprecated. Remove before v1.0 release.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "source_match_re": {
          "$ref": "#/definitions/MatchRegexps"
        },
        "source_matchers": {
          "$ref": "#/definitions/Matchers"
        },
        "target_match": {
          "description": "TargetMatch defines a set of labels that have to equal the given\nvalue for target alerts. Deprecated. Remove before v1.0 release.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "target_match_re": {
          "$ref": "#/definitions/MatchRegexps"
        },
        "target_matchers": {
          "$ref": "#/definitions/Matchers"
        }
      }
    },
    "InspectType": {
      "type": "integer",
      "format": "int64",
      "title": "InspectType is a type for the Inspect property of a Notice."
    },
    "InternalDataLink": {
      "description": "InternalDataLink definition to allow Explore links to be constructed in the backend",
      "type": "object",
      "properties": {
        "datasourceName": {
          "type": "string"
        },
        "datasourceUid": {
          "type": "string"
        },
        "panelsState": {
          "$ref": "#/definitions/ExplorePanelsState"
        },
        "query": {},
        "timeRange": {
          "$ref": "#/definitions/TimeRange"
        },
        "transformations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LinkTransformationConfig"
          }
        }
      }
    },
    "JSONWebKey": {
      "description": "JSONWebKey represents a public or private key in JWK format. It can be\nmarshaled into JSON and unmarshaled from JSON.",
      "type": "object",
      "properties": {
        "Algorithm": {
          "description": "Key algorithm, parsed from `alg` header.",
          "type": "string"
        },
        "CertificateThumbprintSHA1": {
          "description": "X.509 certificate thumbprint (SHA-1), parsed from `x5t` header.",
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        },
        "CertificateThumbprintSHA256": {
          "description": "X.509 certificate thumbprint (SHA-256), parsed from `x5t#S256` header.",
          "type": "array",
          "items": {
            "type": "integer",
            "format": "uint8"
          }
        },
        "Certificates": {
          "description": "X.509 certificate chain, parsed from `x5c` header.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Certificate"
          }
        },
        "CertificatesURL": {
          "$ref": "#/definitions/URL"
        },
        "Key": {
          "description": "Key is the Go in-memory representation of this key. It must have one\nof these types:\ned25519.PublicKey\ned25519.PrivateKey\necdsa.PublicKey\necdsa.PrivateKey\nrsa.PublicKey\nrsa.PrivateKey\n[]byte (a symmetric key)\n\nWhen marshaling this JSONWebKey into JSON, the \"kty\" header parameter\nwill be automatically set based on the type of this field."
        },
        "KeyID": {
          "description": "Key identifier, parsed from `kid` header.",
          "type": "string"
        },
        "Use": {
          "description": "Key use, parsed from `use` header.",
          "type": "string"
        }
      }
    },
    "Json": {
      "type": "object"
    },
    "KeyUsage": {
      "description": "KeyUsage represents the set of actions that are valid for a given key. It's\na bitmap of the KeyUsage* constants.",
      "type": "integer",
      "format": "int64"
    },
    "Label": {
      "type": "object",
      "title": "Label is a key/value pair of strings.",
      "properties": {
        "Name": {
          "type": "string"
        }
      }
    },
    "LabelName": {
      "description": "A LabelName is a key for a LabelSet or Metric.  It has a value associated\ntherewith.",
      "type": "string"
    },
    "LabelNames": {
      "type": "array",
      "title": "LabelNames is a sortable LabelName slice. In implements sort.Interface.",
      "items": {
        "$ref": "#/definitions/LabelName"
      }
    },
    "LabelSet": {
      "description": "A LabelSet is a collection of LabelName and LabelValue pairs.  The LabelSet\nmay be fully-qualified down to the point where it may resolve to a single\nMetric in the data store or not.  All operations that occur within the realm\nof a LabelSet can emit a vector of Metric entities to which the LabelSet may\nmatch.",
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/LabelValue"
      }
    },
    "LabelValue": {
      "type": "string",
      "title": "A LabelValue is an associated value for a LabelName."
    },
    "Labels": {
      "description": "Labels is a sorted set of labels. Order has to be guaranteed upon\ninstantiation.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Label"
      }
    },
    "LibraryElementArrayResponse": {
      "type": "object",
      "title": "LibraryElementArrayResponse is a response struct for an array of LibraryElementDTO.",
      "properties": {
        "result": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LibraryElementDTO"
          }
        }
      }
    },
    "LibraryElementConnectionDTO": {
      "type": "object",
      "title": "LibraryElementConnectionDTO is the frontend DTO for element connections.",
      "properties": {
        "connectionId": {
          "type": "integer",
          "format": "int64"
        },
        "connectionUid": {
          "type": "string"
        },
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "createdBy": {
          "$ref": "#/definitions/LibraryElementDTOMetaUser"
        },
        "elementId": {
          "type": "integer",
          "format": "int64"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "kind": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "LibraryElementConnectionsResponse": {
      "type": "object",
      "title": "LibraryElementConnectionsResponse is a response struct for an array of LibraryElementConnectionDTO.",
      "properties": {
        "result": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LibraryElementConnectionDTO"
          }
        }
      }
    },
    "LibraryElementDTO": {
      "type": "object",
      "title": "LibraryElementDTO is the frontend DTO for entities.",
      "properties": {
        "description": {
          "type": "string"
        },
        "folderId": {
          "description": "Deprecated: use FolderUID instead",
          "type": "integer",
          "format": "int64"
        },
        "folderUid": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "kind": {
          "type": "integer",
          "format": "int64"
        },
        "meta": {
          "$ref": "#/definitions/LibraryElementDTOMeta"
        },
        "model": {
          "type": "object"
        },
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "schemaVersion": {
          "type": "integer",
          "format": "int64"
        },
        "type": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "LibraryElementDTOMeta": {
      "type": "object",
      "title": "LibraryElementDTOMeta is the meta information for LibraryElementDTO.",
      "properties": {
        "connectedDashboards": {
          "type": "integer",
          "format": "int64"
        },
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "createdBy": {
          "$ref": "#/definitions/LibraryElementDTOMetaUser"
        },
        "folderName": {
          "type": "string"
        },
        "folderUid": {
          "type": "string"
        },
        "updated": {
          "type": "string",
          "format": "date-time"
        },
        "updatedBy": {
          "$ref": "#/definitions/LibraryElementDTOMetaUser"
        }
      }
    },
    "LibraryElementDTOMetaUser": {
      "type": "object",
      "title": "LibraryElementDTOMetaUser defines model for LibraryElementDTOMetaUser.",
      "properties": {
        "avatarUrl": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "LibraryElementResponse": {
      "type": "object",
      "title": "LibraryElementResponse is a response struct for LibraryElementDTO.",
      "properties": {
        "result": {
          "$ref": "#/definitions/LibraryElementDTO"
        }
      }
    },
    "LibraryElementSearchResponse": {
      "type": "object",
      "title": "LibraryElementSearchResponse is a response struct for LibraryElementSearchResult.",
      "properties": {
        "result": {
          "$ref": "#/definitions/LibraryElementSearchResult"
        }
      }
    },
    "LibraryElementSearchResult": {
      "type": "object",
      "title": "LibraryElementSearchResult is the search result for entities.",
      "properties": {
        "elements": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LibraryElementDTO"
          }
        },
        "page": {
          "type": "integer",
          "format": "int64"
        },
        "perPage": {
          "type": "integer",
          "format": "int64"
        },
        "totalCount": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "LinkTransformationConfig": {
      "type": "object",
      "properties": {
        "expression": {
          "type": "string"
        },
        "field": {
          "type": "string"
        },
        "mapValue": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/SupportedTransformationTypes"
        }
      }
    },
    "MSTeamsConfig": {
      "type": "object",
      "properties": {
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "summary": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "webhook_url": {
          "$ref": "#/definitions/SecretURL"
        },
        "webhook_url_file": {
          "type": "string"
        }
      }
    },
    "MassDeleteAnnotationsCmd": {
      "type": "object",
      "properties": {
        "annotationId": {
          "type": "integer",
          "format": "int64"
        },
        "dashboardId": {
          "type": "integer",
          "format": "int64"
        },
        "dashboardUID": {
          "type": "string"
        },
        "panelId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "MatchRegexps": {
      "type": "object",
      "title": "MatchRegexps represents a map of Regexp.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "MatchType": {
      "type": "integer",
      "format": "int64",
      "title": "MatchType is an enum for label matching types."
    },
    "Matcher": {
      "type": "object",
      "title": "Matcher models the matching of a label.",
      "properties": {
        "Name": {
          "type": "string"
        },
        "Type": {
          "$ref": "#/definitions/MatchType"
        },
        "Value": {
          "type": "string"
        }
      }
    },
    "Matchers": {
      "description": "Matchers is a slice of Matchers that is sortable, implements Stringer, and\nprovides a Matches method to match a LabelSet against all Matchers in the\nslice. Note that some users of Matchers might require it to be sorted.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Matcher"
      }
    },
    "Metadata": {
      "description": "Metadata contains user accesses for a given resource\nEx: map[string]bool{\"create\":true, \"delete\": true}",
      "type": "object",
      "additionalProperties": {
        "type": "boolean"
      }
    },
    "MetricRequest": {
      "type": "object",
      "required": [
        "from",
        "to",
        "queries"
      ],
      "properties": {
        "debug": {
          "type": "boolean"
        },
        "from": {
          "description": "From Start time in epoch timestamps in milliseconds or relative using Grafana time units.",
          "type": "string",
          "example": "now-1h"
        },
        "queries": {
          "description": "queries.refId – Specifies an identifier of the query. Is optional and default to “A”.\nqueries.datasourceId – Specifies the data source to be queried. Each query in the request must have an unique datasourceId.\nqueries.maxDataPoints - Species maximum amount of data points that dashboard panel can render. Is optional and default to 100.\nqueries.intervalMs - Specifies the time interval in milliseconds of time series. Is optional and defaults to 1000.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Json"
          },
          "example": [
            {
              "datasource": {
                "uid": "PD8C576611E62080A"
              },
              "format": "table",
              "intervalMs": 86400000,
              "maxDataPoints": 1092,
              "rawSql": "SELECT 1 as valueOne, 2 as valueTwo",
              "refId": "A"
            }
          ]
        },
        "to": {
          "description": "To End time in epoch timestamps in milliseconds or relative using Grafana time units.",
          "type": "string",
          "example": "now"
        }
      }
    },
    "MoveFolderCommand": {
      "description": "MoveFolderCommand captures the information required by the folder service\nto move a folder.",
      "type": "object",
      "properties": {
        "parentUid": {
          "type": "string"
        }
      }
    },
    "MultiStatus": {
      "type": "object"
    },
    "MuteTimeInterval": {
      "type": "object",
      "title": "MuteTimeInterval represents a named set of time intervals for which a route should be muted.",
      "properties": {
        "name": {
          "type": "string"
        },
        "time_intervals": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TimeInterval"
          }
        }
      }
    },
    "MuteTimeIntervalExport": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "time_intervals": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TimeInterval"
          }
        }
      }
    },
    "MuteTimings": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/MuteTimeInterval"
      }
    },
    "Name": {
      "description": "Name represents an X.509 distinguished name. This only includes the common\nelements of a DN. Note that Name is only an approximation of the X.509\nstructure. If an accurate representation is needed, asn1.Unmarshal the raw\nsubject or issuer as an [RDNSequence].",
      "type": "object",
      "properties": {
        "Country": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ExtraNames": {
          "description": "ExtraNames contains attributes to be copied, raw, into any marshaled\ndistinguished names. Values override any attributes with the same OID.\nThe ExtraNames field is not populated when parsing, see Names.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AttributeTypeAndValue"
          }
        },
        "Locality": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "Names": {
          "description": "Names contains all parsed attributes. When parsing distinguished names,\nthis can be used to extract non-standard attributes that are not parsed\nby this package. When marshaling to RDNSequences, the Names field is\nignored, see ExtraNames.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AttributeTypeAndValue"
          }
        },
        "SerialNumber": {
          "type": "string"
        },
        "StreetAddress": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "NamespaceConfigResponse": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/GettableRuleGroupConfig"
        }
      }
    },
    "NewApiKeyResult": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64",
          "example": 1
        },
        "key": {
          "type": "string",
          "example": "glsa_yscW25imSKJIuav8zF37RZmnbiDvB05G_fcaaf58a"
        },
        "name": {
          "type": "string",
          "example": "grafana"
        }
      }
    },
    "NotFound": {
      "type": "object"
    },
    "Notice": {
      "type": "object",
      "title": "Notice provides a structure for presenting notifications in Grafana's user interface.",
      "properties": {
        "inspect": {
          "$ref": "#/definitions/InspectType"
        },
        "link": {
          "description": "Link is an optional link for display in the user interface and can be an\nabsolute URL or a path relative to Grafana's root url.",
          "type": "string"
        },
        "severity": {
          "$ref": "#/definitions/NoticeSeverity"
        },
        "text": {
          "description": "Text is freeform descriptive text for the notice.",
          "type": "string"
        }
      }
    },
    "NoticeSeverity": {
      "type": "integer",
      "format": "int64",
      "title": "NoticeSeverity is a type for the Severity property of a Notice."
    },
    "NotificationPolicyExport": {
      "type": "object",
      "title": "NotificationPolicyExport is the provisioned file export of alerting.NotificiationPolicyV1.",
      "properties": {
        "continue": {
          "type": "boolean"
        },
        "group_by": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group_interval": {
          "type": "string"
        },
        "group_wait": {
          "type": "string"
        },
        "match": {
          "description": "Deprecated. Remove before v1.0 release.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "match_re": {
          "$ref": "#/definitions/MatchRegexps"
        },
        "matchers": {
          "$ref": "#/definitions/Matchers"
        },
        "mute_time_intervals": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "object_matchers": {
          "$ref": "#/definitions/ObjectMatchers"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "receiver": {
          "type": "string"
        },
        "repeat_interval": {
          "type": "string"
        },
        "routes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RouteExport"
          }
        }
      }
    },
    "NotificationTemplate": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "provenance": {
          "$ref": "#/definitions/Provenance"
        },
        "template": {
          "type": "string"
        }
      }
    },
    "NotificationTemplateContent": {
      "type": "object",
      "properties": {
        "template": {
          "type": "string"
        }
      }
    },
    "NotificationTemplates": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/NotificationTemplate"
      }
    },
    "NotifierConfig": {
      "type": "object",
      "title": "NotifierConfig contains base options common across all notifier configurations.",
      "properties": {
        "send_resolved": {
          "type": "boolean"
        }
      }
    },
    "OAuth2": {
      "type": "object",
      "title": "OAuth2 is the oauth2 client configuration.",
      "properties": {
        "TLSConfig": {
          "$ref": "#/definitions/TLSConfig"
        },
        "client_id": {
          "type": "string"
        },
        "client_secret": {
          "$ref": "#/definitions/Secret"
        },
        "client_secret_file": {
          "type": "string"
        },
        "endpoint_params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "no_proxy": {
          "description": "NoProxy contains addresses that should not use a proxy.",
          "type": "string"
        },
        "proxy_connect_header": {
          "$ref": "#/definitions/Header"
        },
        "proxy_from_environment": {
          "description": "ProxyFromEnvironment makes use of net/http ProxyFromEnvironment function\nto determine proxies.",
          "type": "boolean"
        },
        "proxy_url": {
          "$ref": "#/definitions/URL"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "token_url": {
          "type": "string"
        }
      }
    },
    "OID": {
      "type": "object",
      "title": "An OID represents an ASN.1 OBJECT IDENTIFIER."
    },
    "ObjectIdentifier": {
      "type": "array",
      "title": "An ObjectIdentifier represents an ASN.1 OBJECT IDENTIFIER.",
      "items": {
        "type": "integer",
        "format": "int64"
      }
    },
    "ObjectMatcher": {
      "type": "array",
      "title": "ObjectMatcher is a matcher that can be used to filter alerts.",
      "items": {
        "type": "string"
      }
    },
    "ObjectMatchers": {
      "type": "array",
      "title": "ObjectMatchers is a list of matchers that can be used to filter alerts.",
      "items": {
        "$ref": "#/definitions/ObjectMatcher"
      }
    },
    "OpsGenieConfig": {
      "type": "object",
      "title": "OpsGenieConfig configures notifications via OpsGenie.",
      "properties": {
        "actions": {
          "type": "string"
        },
        "api_key": {
          "$ref": "#/definitions/Secret"
        },
        "api_key_file": {
          "type": "string"
        },
        "api_url": {
          "$ref": "#/definitions/URL"
        },
        "description": {
          "type": "string"
        },
        "details": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "entity": {
          "type": "string"
        },
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "message": {
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "priority": {
          "type": "string"
        },
        "responders": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OpsGenieConfigResponder"
          }
        },
        "send_resolved": {
          "type": "boolean"
        },
        "source": {
          "type": "string"
        },
        "tags": {
          "type": "string"
        },
        "update_alerts": {
          "type": "boolean"
        }
      }
    },
    "OpsGenieConfigResponder": {
      "type": "object",
      "properties": {
        "id": {
          "description": "One of those 3 should be filled.",
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "description": "team, user, escalation, schedule etc.",
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "OrgDTO": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "OrgDetailsDTO": {
      "type": "object",
      "properties": {
        "address": {
          "$ref": "#/definitions/Address"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "OrgUserDTO": {
      "type": "object",
      "properties": {
        "accessControl": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        },
        "authLabels": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "avatarUrl": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "isDisabled": {
          "type": "boolean"
        },
        "isExternallySynced": {
          "type": "boolean"
        },
        "lastSeenAt": {
          "type": "string",
          "format": "date-time"
        },
        "lastSeenAtAge": {
          "type": "string"
        },
        "login": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "role": {
          "type": "string"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PagerdutyConfig": {
      "type": "object",
      "title": "PagerdutyConfig configures notifications via PagerDuty.",
      "properties": {
        "class": {
          "type": "string"
        },
        "client": {
          "type": "string"
        },
        "client_url": {
          "type": "string"
        },
        "component": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "details": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "group": {
          "type": "string"
        },
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PagerdutyImage"
          }
        },
        "links": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PagerdutyLink"
          }
        },
        "routing_key": {
          "$ref": "#/definitions/Secret"
        },
        "routing_key_file": {
          "type": "string"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "service_key": {
          "$ref": "#/definitions/Secret"
        },
        "service_key_file": {
          "type": "string"
        },
        "severity": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "url": {
          "$ref": "#/definitions/URL"
        }
      }
    },
    "PagerdutyImage": {
      "description": "PagerdutyImage is an image",
      "type": "object",
      "properties": {
        "alt": {
          "type": "string"
        },
        "href": {
          "type": "string"
        },
        "src": {
          "type": "string"
        }
      }
    },
    "PagerdutyLink": {
      "description": "PagerdutyLink is a link",
      "type": "object",
      "properties": {
        "href": {
          "type": "string"
        },
        "text": {
          "type": "string"
        }
      }
    },
    "Password": {
      "type": "string"
    },
    "PatchAnnotationsCmd": {
      "type": "object",
      "properties": {
        "data": {
          "$ref": "#/definitions/Json"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "text": {
          "type": "string"
        },
        "time": {
          "type": "integer",
          "format": "int64"
        },
        "timeEnd": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PatchLibraryElementCommand": {
      "description": "PatchLibraryElementCommand is the command for patching a LibraryElement",
      "type": "object",
      "properties": {
        "folderId": {
          "description": "ID of the folder where the library element is stored.\n\nDeprecated: use FolderUID instead",
          "type": "integer",
          "format": "int64"
        },
        "folderUid": {
          "description": "UID of the folder where the library element is stored.",
          "type": "string"
        },
        "kind": {
          "description": "Kind of element to create, Use 1 for library panels or 2 for c.\nDescription:\n1 - library panels\n2 - library variables",
          "type": "integer",
          "format": "int64",
          "enum": [
            1,
            2
          ]
        },
        "model": {
          "description": "The JSON model for the library element.",
          "type": "object"
        },
        "name": {
          "description": "Name of the library element.",
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "version": {
          "description": "Version of the library element you are updating.",
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PatchPrefsCmd": {
      "type": "object",
      "properties": {
        "cookies": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CookieType"
          }
        },
        "homeDashboardId": {
          "description": "The numerical :id of a favorited dashboard",
          "type": "integer",
          "format": "int64",
          "default": 0
        },
        "homeDashboardUID": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "queryHistory": {
          "$ref": "#/definitions/QueryHistoryPreference"
        },
        "theme": {
          "type": "string",
          "enum": [
            "light",
            "dark"
          ]
        },
        "timezone": {
          "type": "string",
          "enum": [
            "utc",
            "browser"
          ]
        },
        "weekStart": {
          "type": "string"
        }
      }
    },
    "PatchQueryCommentInQueryHistoryCommand": {
      "description": "PatchQueryCommentInQueryHistoryCommand is the command for updating comment for query in query history",
      "type": "object",
      "properties": {
        "comment": {
          "description": "Updated comment",
          "type": "string"
        }
      }
    },
    "Permission": {
      "type": "object",
      "title": "Permission is the model for access control permissions.",
      "properties": {
        "action": {
          "type": "string"
        },
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "scope": {
          "type": "string"
        },
        "updated": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "PermissionDenied": {
      "type": "object"
    },
    "PermissionType": {
      "type": "integer",
      "format": "int64"
    },
    "Playlist": {
      "description": "Playlist model",
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "interval": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "PlaylistDTO": {
      "type": "object",
      "properties": {
        "interval": {
          "description": "Interval sets the time between switching views in a playlist.",
          "type": "string"
        },
        "items": {
          "description": "The ordered list of items that the playlist will iterate over.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PlaylistItemDTO"
          }
        },
        "name": {
          "description": "Name of the playlist.",
          "type": "string"
        },
        "uid": {
          "description": "Unique playlist identifier. Generated on creation, either by the\ncreator of the playlist of by the application.",
          "type": "string"
        }
      }
    },
    "PlaylistDashboard": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "order": {
          "type": "integer",
          "format": "int64"
        },
        "slug": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "PlaylistDashboardsSlice": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/PlaylistDashboard"
      }
    },
    "PlaylistItem": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "integer",
          "format": "int64"
        },
        "PlaylistId": {
          "type": "integer",
          "format": "int64"
        },
        "order": {
          "type": "integer",
          "format": "int64"
        },
        "title": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "PlaylistItemDTO": {
      "type": "object",
      "properties": {
        "title": {
          "description": "Title is an unused property -- it will be removed in the future",
          "type": "string"
        },
        "type": {
          "description": "Type of the item.",
          "type": "string"
        },
        "value": {
          "description": "Value depends on type and describes the playlist item.\n\ndashboard_by_id: The value is an internal numerical identifier set by Grafana. This\nis not portable as the numerical identifier is non-deterministic between different instances.\nWill be replaced by dashboard_by_uid in the future. (deprecated)\ndashboard_by_tag: The value is a tag which is set on any number of dashboards. All\ndashboards behind the tag will be added to the playlist.\ndashboard_by_uid: The value is the dashboard UID",
          "type": "string"
        }
      }
    },
    "Playlists": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Playlist"
      }
    },
    "PostAnnotationsCmd": {
      "type": "object",
      "required": [
        "text"
      ],
      "properties": {
        "dashboardId": {
          "type": "integer",
          "format": "int64"
        },
        "dashboardUID": {
          "type": "string"
        },
        "data": {
          "$ref": "#/definitions/Json"
        },
        "panelId": {
          "type": "integer",
          "format": "int64"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "text": {
          "type": "string"
        },
        "time": {
          "type": "integer",
          "format": "int64"
        },
        "timeEnd": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PostGraphiteAnnotationsCmd": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string"
        },
        "tags": {},
        "what": {
          "type": "string"
        },
        "when": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PostableApiAlertingConfig": {
      "description": "nolint:revive",
      "type": "object",
      "properties": {
        "global": {
          "$ref": "#/definitions/GlobalConfig"
        },
        "inhibit_rules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InhibitRule"
          }
        },
        "mute_time_intervals": {
          "description": "MuteTimeIntervals is deprecated and will be removed before Alertmanager 1.0.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/MuteTimeInterval"
          }
        },
        "receivers": {
          "description": "Override with our superset receiver type",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PostableApiReceiver"
          }
        },
        "route": {
          "$ref": "#/definitions/Route"
        },
        "templates": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "time_intervals": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TimeInterval"
          }
        }
      }
    },
    "PostableApiReceiver": {
      "description": "nolint:revive",
      "type": "object",
      "properties": {
        "discord_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DiscordConfig"
          }
        },
        "email_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmailConfig"
          }
        },
        "grafana_managed_receiver_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PostableGrafanaReceiver"
          }
        },
        "msteams_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MSTeamsConfig"
          }
        },
        "name": {
          "description": "A unique identifier for this receiver.",
          "type": "string"
        },
        "opsgenie_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OpsGenieConfig"
          }
        },
        "pagerduty_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PagerdutyConfig"
          }
        },
        "pushover_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PushoverConfig"
          }
        },
        "slack_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SlackConfig"
          }
        },
        "sns_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SNSConfig"
          }
        },
        "telegram_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TelegramConfig"
          }
        },
        "victorops_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/VictorOpsConfig"
          }
        },
        "webex_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebexConfig"
          }
        },
        "webhook_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebhookConfig"
          }
        },
        "wechat_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WechatConfig"
          }
        }
      }
    },
    "PostableExtendedRuleNode": {
      "type": "object",
      "properties": {
        "alert": {
          "type": "string"
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "expr": {
          "type": "string"
        },
        "for": {
          "type": "string"
        },
        "grafana_alert": {
          "$ref": "#/definitions/PostableGrafanaRule"
        },
        "keep_firing_for": {
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "record": {
          "type": "string"
        }
      }
    },
    "PostableExtendedRuleNodeExtended": {
      "type": "object",
      "required": [
        "rule"
      ],
      "properties": {
        "folderTitle": {
          "type": "string",
          "example": "project_x"
        },
        "folderUid": {
          "type": "string",
          "example": "okrd3I0Vz"
        },
        "rule": {
          "$ref": "#/definitions/PostableExtendedRuleNode"
        },
        "ruleGroup": {
          "type": "string",
          "example": "eval_group_1"
        }
      }
    },
    "PostableGrafanaReceiver": {
      "type": "object",
      "properties": {
        "disableResolveMessage": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "secureSettings": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "settings": {
          "$ref": "#/definitions/RawMessage"
        },
        "type": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "PostableGrafanaReceivers": {
      "type": "object",
      "properties": {
        "grafana_managed_receiver_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PostableGrafanaReceiver"
          }
        }
      }
    },
    "PostableGrafanaRule": {
      "type": "object",
      "properties": {
        "condition": {
          "type": "string"
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertQuery"
          }
        },
        "exec_err_state": {
          "type": "string",
          "enum": [
            "OK",
            "Alerting",
            "Error"
          ]
        },
        "is_paused": {
          "type": "boolean"
        },
        "no_data_state": {
          "type": "string",
          "enum": [
            "Alerting",
            "NoData",
            "OK"
          ]
        },
        "notification_settings": {
          "$ref": "#/definitions/AlertRuleNotificationSettings"
        },
        "title": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "PostableNGalertConfig": {
      "type": "object",
      "properties": {
        "alertmanagersChoice": {
          "type": "string",
          "enum": [
            "all",
            "internal",
            "external"
          ]
        }
      }
    },
    "PostableRuleGroupConfig": {
      "type": "object",
      "properties": {
        "interval": {
          "$ref": "#/definitions/Duration"
        },
        "name": {
          "type": "string"
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PostableExtendedRuleNode"
          }
        }
      }
    },
    "PostableTimeIntervals": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "time_intervals": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TimeIntervalItem"
          }
        }
      }
    },
    "PostableUserConfig": {
      "type": "object",
      "properties": {
        "alertmanager_config": {
          "$ref": "#/definitions/PostableApiAlertingConfig"
        },
        "template_files": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "Preferences": {
      "description": "Spec defines user, team or org Grafana preferences",
      "type": "object",
      "properties": {
        "cookiePreferences": {
          "$ref": "#/definitions/CookiePreferences"
        },
        "homeDashboardUID": {
          "description": "UID for the home dashboard",
          "type": "string"
        },
        "language": {
          "description": "Selected language (beta)",
          "type": "string"
        },
        "queryHistory": {
          "$ref": "#/definitions/QueryHistoryPreference"
        },
        "theme": {
          "description": "Theme light, dark, empty is default",
          "type": "string"
        },
        "timezone": {
          "description": "The timezone selection\nTODO: this should use the timezone defined in common",
          "type": "string"
        },
        "weekStart": {
          "description": "WeekStart day of the week (sunday, monday, etc)",
          "type": "string"
        }
      }
    },
    "PrometheusRemoteWriteTargetJSON": {
      "type": "object",
      "properties": {
        "data_source_uid": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "remote_write_path": {
          "type": "string"
        }
      }
    },
    "Provenance": {
      "type": "string"
    },
    "ProvisionedAlertRule": {
      "type": "object",
      "required": [
        "orgID",
        "folderUID",
        "ruleGroup",
        "title",
        "condition",
        "data",
        "noDataState",
        "execErrState",
        "for"
      ],
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "example": {
            "runbook_url": "https://supercoolrunbook.com/page/13"
          }
        },
        "condition": {
          "type": "string",
          "example": "A"
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertQuery"
          },
          "example": [
            {
              "datasourceUid": "__expr__",
              "model": {
                "conditions": [
                  {
                    "evaluator": {
                      "params": [
                        0,
                        0
                      ],
                      "type": "gt"
                    },
                    "operator": {
                      "type": "and"
                    },
                    "query": {
                      "params": []
                    },
                    "reducer": {
                      "params": [],
                      "type": "avg"
                    },
                    "type": "query"
                  }
                ],
                "datasource": {
                  "type": "__expr__",
                  "uid": "__expr__"
                },
                "expression": "1 == 1",
                "hide": false,
                "intervalMs": 1000,
                "maxDataPoints": 43200,
                "refId": "A",
                "type": "math"
              },
              "queryType": "",
              "refId": "A",
              "relativeTimeRange": {
                "from": 0,
                "to": 0
              }
            }
          ]
        },
        "execErrState": {
          "type": "string",
          "enum": [
            "OK",
            "Alerting",
            "Error"
          ]
        },
        "folderUID": {
          "type": "string",
          "example": "project_x"
        },
        "for": {
          "$ref": "#/definitions/Duration"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "isPaused": {
          "type": "boolean",
          "example": false
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "example": {
            "team": "sre-team-1"
          }
        },
        "noDataState": {
          "type": "string",
          "enum": [
            "Alerting",
            "NoData",
            "OK"
          ]
        },
        "notification_settings": {
          "$ref": "#/definitions/AlertRuleNotificationSettings"
        },
        "orgID": {
          "type": "integer",
          "format": "int64"
        },
        "provenance": {
          "$ref": "#/definitions/Provenance"
        },
        "ruleGroup": {
          "type": "string",
          "maxLength": 190,
          "minLength": 1,
          "example": "eval_group_1"
        },
        "title": {
          "type": "string",
          "maxLength": 190,
          "minLength": 1,
          "example": "Always firing"
        },
        "uid": {
          "type": "string",
          "maxLength": 40,
          "minLength": 1,
          "pattern": "^[a-zA-Z0-9-_]+$"
        },
        "updated": {
          "type": "string",
          "format": "date-time",
          "readOnly": true
        }
      }
    },
    "ProvisionedAlertRules": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/ProvisionedAlertRule"
      }
    },
    "ProxyConfig": {
      "type": "object",
      "properties": {
        "no_proxy": {
          "description": "NoProxy contains addresses that should not use a proxy.",
          "type": "string"
        },
        "proxy_connect_header": {
          "$ref": "#/definitions/Header"
        },
        "proxy_from_environment": {
          "description": "ProxyFromEnvironment makes use of net/http ProxyFromEnvironment function\nto determine proxies.",
          "type": "boolean"
        },
        "proxy_url": {
          "$ref": "#/definitions/URL"
        }
      }
    },
    "PublicDashboard": {
      "type": "object",
      "properties": {
        "accessToken": {
          "type": "string"
        },
        "annotationsEnabled": {
          "type": "boolean"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "createdBy": {
          "type": "integer",
          "format": "int64"
        },
        "dashboardUid": {
          "type": "string"
        },
        "isEnabled": {
          "type": "boolean"
        },
        "recipients": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmailDTO"
          }
        },
        "share": {
          "$ref": "#/definitions/ShareType"
        },
        "timeSelectionEnabled": {
          "type": "boolean"
        },
        "uid": {
          "type": "string"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "updatedBy": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PublicDashboardDTO": {
      "type": "object",
      "properties": {
        "accessToken": {
          "type": "string"
        },
        "annotationsEnabled": {
          "type": "boolean"
        },
        "isEnabled": {
          "type": "boolean"
        },
        "share": {
          "$ref": "#/definitions/ShareType"
        },
        "timeSelectionEnabled": {
          "type": "boolean"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "PublicDashboardListResponse": {
      "type": "object",
      "properties": {
        "accessToken": {
          "type": "string"
        },
        "dashboardUid": {
          "type": "string"
        },
        "isEnabled": {
          "type": "boolean"
        },
        "slug": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "PublicDashboardListResponseWithPagination": {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "format": "int64"
        },
        "perPage": {
          "type": "integer",
          "format": "int64"
        },
        "publicDashboards": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PublicDashboardListResponse"
          }
        },
        "totalCount": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PublicError": {
      "description": "PublicError is derived from Error and only contains information\navailable to the end user.",
      "type": "object",
      "properties": {
        "extra": {
          "type": "object",
          "additionalProperties": {}
        },
        "message": {
          "type": "string"
        },
        "messageId": {
          "type": "string"
        },
        "statusCode": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "PublicKeyAlgorithm": {
      "type": "integer",
      "format": "int64"
    },
    "PushoverConfig": {
      "type": "object",
      "properties": {
        "device": {
          "type": "string"
        },
        "expire": {
          "type": "string"
        },
        "html": {
          "type": "boolean"
        },
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "message": {
          "type": "string"
        },
        "priority": {
          "type": "string"
        },
        "retry": {
          "type": "string"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "sound": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "token": {
          "$ref": "#/definitions/Secret"
        },
        "token_file": {
          "type": "string"
        },
        "ttl": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "url_title": {
          "type": "string"
        },
        "user_key": {
          "$ref": "#/definitions/Secret"
        },
        "user_key_file": {
          "type": "string"
        }
      }
    },
    "QueryDataResponse": {
      "description": "It is the return type of a QueryData call.",
      "type": "object",
      "title": "QueryDataResponse contains the results from a QueryDataRequest.",
      "properties": {
        "results": {
          "$ref": "#/definitions/Responses"
        }
      }
    },
    "QueryHistoryDTO": {
      "type": "object",
      "properties": {
        "comment": {
          "type": "string"
        },
        "createdAt": {
          "type": "integer",
          "format": "int64"
        },
        "createdBy": {
          "type": "integer",
          "format": "int64"
        },
        "datasourceUid": {
          "type": "string"
        },
        "queries": {
          "$ref": "#/definitions/Json"
        },
        "starred": {
          "type": "boolean"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "QueryHistoryDeleteQueryResponse": {
      "description": "QueryHistoryDeleteQueryResponse is the response struct for deleting a query from query history",
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "QueryHistoryPreference": {
      "type": "object",
      "title": "QueryHistoryPreference defines model for QueryHistoryPreference.",
      "properties": {
        "homeTab": {
          "description": "HomeTab one of: '' | 'query' | 'starred';",
          "type": "string"
        }
      }
    },
    "QueryHistoryResponse": {
      "description": "QueryHistoryResponse is a response struct for QueryHistoryDTO",
      "type": "object",
      "properties": {
        "result": {
          "$ref": "#/definitions/QueryHistoryDTO"
        }
      }
    },
    "QueryHistorySearchResponse": {
      "type": "object",
      "properties": {
        "result": {
          "$ref": "#/definitions/QueryHistorySearchResult"
        }
      }
    },
    "QueryHistorySearchResult": {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "format": "int64"
        },
        "perPage": {
          "type": "integer",
          "format": "int64"
        },
        "queryHistory": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/QueryHistoryDTO"
          }
        },
        "totalCount": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "QueryStat": {
      "description": "The embedded FieldConfig's display name must be set.\nIt corresponds to the QueryResultMetaStat on the frontend (https://github.com/grafana/grafana/blob/master/packages/grafana-data/src/types/data.ts#L53).",
      "type": "object",
      "title": "QueryStat is used for storing arbitrary statistics metadata related to a query and its result, e.g. total request time, data processing time.",
      "properties": {
        "color": {
          "description": "Map values to a display color\nNOTE: this interface is under development in the frontend... so simple map for now",
          "type": "object",
          "additionalProperties": {}
        },
        "custom": {
          "description": "Panel Specific Values",
          "type": "object",
          "additionalProperties": {}
        },
        "decimals": {
          "type": "integer",
          "format": "uint16"
        },
        "description": {
          "description": "Description is human readable field metadata",
          "type": "string"
        },
        "displayName": {
          "description": "DisplayName overrides Grafana default naming, should not be used from a data source",
          "type": "string"
        },
        "displayNameFromDS": {
          "description": "DisplayNameFromDS overrides Grafana default naming strategy.",
          "type": "string"
        },
        "filterable": {
          "description": "Filterable indicates if the Field's data can be filtered by additional calls.",
          "type": "boolean"
        },
        "interval": {
          "description": "Interval indicates the expected regular step between values in the series.\nWhen an interval exists, consumers can identify \"missing\" values when the expected value is not present.\nThe grafana timeseries visualization will render disconnected values when missing values are found it the time field.\nThe interval uses the same units as the values.  For time.Time, this is defined in milliseconds.",
          "type": "number",
          "format": "double"
        },
        "links": {
          "description": "The behavior when clicking on a result",
          "type": "array",
          "items": {
            "$ref": "#/definitions/DataLink"
          }
        },
        "mappings": {
          "$ref": "#/definitions/ValueMappings"
        },
        "max": {
          "$ref": "#/definitions/ConfFloat64"
        },
        "min": {
          "$ref": "#/definitions/ConfFloat64"
        },
        "noValue": {
          "description": "Alternative to empty string",
          "type": "string"
        },
        "path": {
          "description": "Path is an explicit path to the field in the datasource. When the frame meta includes a path,\nthis will default to `${frame.meta.path}/${field.name}\n\nWhen defined, this value can be used as an identifier within the datasource scope, and\nmay be used as an identifier to update values in a subsequent request",
          "type": "string"
        },
        "thresholds": {
          "$ref": "#/definitions/ThresholdsConfig"
        },
        "type": {
          "$ref": "#/definitions/FieldTypeConfig"
        },
        "unit": {
          "description": "Numeric Options",
          "type": "string"
        },
        "value": {
          "type": "number",
          "format": "double"
        },
        "writeable": {
          "description": "Writeable indicates that the datasource knows how to update this value",
          "type": "boolean"
        }
      }
    },
    "QuotaDTO": {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "format": "int64"
        },
        "org_id": {
          "type": "integer",
          "format": "int64"
        },
        "target": {
          "type": "string"
        },
        "used": {
          "type": "integer",
          "format": "int64"
        },
        "user_id": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "RawMessage": {
      "type": "object"
    },
    "Receiver": {
      "type": "object",
      "title": "Receiver configuration provides configuration on how to contact a receiver.",
      "properties": {
        "discord_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DiscordConfig"
          }
        },
        "email_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmailConfig"
          }
        },
        "msteams_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MSTeamsConfig"
          }
        },
        "name": {
          "description": "A unique identifier for this receiver.",
          "type": "string"
        },
        "opsgenie_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OpsGenieConfig"
          }
        },
        "pagerduty_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PagerdutyConfig"
          }
        },
        "pushover_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PushoverConfig"
          }
        },
        "slack_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SlackConfig"
          }
        },
        "sns_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SNSConfig"
          }
        },
        "telegram_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TelegramConfig"
          }
        },
        "victorops_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/VictorOpsConfig"
          }
        },
        "webex_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebexConfig"
          }
        },
        "webhook_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebhookConfig"
          }
        },
        "wechat_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WechatConfig"
          }
        }
      }
    },
    "ReceiverExport": {
      "type": "object",
      "title": "ReceiverExport is the provisioned file export of alerting.ReceiverV1.",
      "properties": {
        "disableResolveMessage": {
          "type": "boolean"
        },
        "settings": {
          "$ref": "#/definitions/RawMessage"
        },
        "type": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "RecordingRuleJSON": {
      "description": "RecordingRuleJSON is the external representation of a recording rule",
      "type": "object",
      "properties": {
        "active": {
          "type": "boolean"
        },
        "count": {
          "type": "boolean"
        },
        "description": {
          "type": "string"
        },
        "dest_data_source_uid": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interval": {
          "type": "integer",
          "format": "int64"
        },
        "name": {
          "type": "string"
        },
        "prom_name": {
          "type": "string"
        },
        "queries": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {}
          }
        },
        "range": {
          "type": "integer",
          "format": "int64"
        },
        "target_ref_id": {
          "type": "string"
        }
      }
    },
    "RelativeTimeRange": {
      "description": "RelativeTimeRange is the per query start and end time\nfor requests.",
      "type": "object",
      "properties": {
        "from": {
          "$ref": "#/definitions/Duration"
        },
        "to": {
          "$ref": "#/definitions/Duration"
        }
      }
    },
    "RelativeTimeRangeExport": {
      "type": "object",
      "properties": {
        "from": {
          "type": "integer",
          "format": "int64"
        },
        "to": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "Report": {
      "description": "ConfigDTO is model representation in transfer",
      "type": "object",
      "properties": {
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "dashboards": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReportDashboard"
          }
        },
        "enableCsv": {
          "type": "boolean"
        },
        "enableDashboardUrl": {
          "type": "boolean"
        },
        "formats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Type"
          }
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "message": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "options": {
          "$ref": "#/definitions/ReportOptions"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "recipients": {
          "type": "string"
        },
        "replyTo": {
          "type": "string"
        },
        "scaleFactor": {
          "type": "integer",
          "format": "int64"
        },
        "schedule": {
          "$ref": "#/definitions/ReportSchedule"
        },
        "state": {
          "$ref": "#/definitions/State"
        },
        "uid": {
          "type": "string"
        },
        "updated": {
          "type": "string",
          "format": "date-time"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "ReportBrandingOptions": {
      "type": "object",
      "properties": {
        "emailFooterLink": {
          "type": "string"
        },
        "emailFooterMode": {
          "type": "string"
        },
        "emailFooterText": {
          "type": "string"
        },
        "emailLogoUrl": {
          "type": "string"
        },
        "reportLogoUrl": {
          "type": "string"
        }
      }
    },
    "ReportDashboard": {
      "type": "object",
      "properties": {
        "dashboard": {
          "$ref": "#/definitions/ReportDashboardID"
        },
        "reportVariables": {
          "type": "object"
        },
        "timeRange": {
          "$ref": "#/definitions/ReportTimeRange"
        }
      }
    },
    "ReportDashboardID": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "name": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "ReportEmail": {
      "type": "object",
      "properties": {
        "emails": {
          "description": "Comma-separated list of emails to which to send the report to.",
          "type": "string"
        },
        "id": {
          "description": "Send the report to the emails specified in the report. Required if emails is not present.",
          "type": "string",
          "format": "int64"
        },
        "useEmailsFromReport": {
          "description": "Send the report to the emails specified in the report. Required if emails is not present.",
          "type": "boolean"
        }
      }
    },
    "ReportOptions": {
      "type": "object",
      "properties": {
        "layout": {
          "type": "string"
        },
        "orientation": {
          "type": "string"
        },
        "timeRange": {
          "$ref": "#/definitions/ReportTimeRange"
        }
      }
    },
    "ReportSchedule": {
      "type": "object",
      "properties": {
        "dayOfMonth": {
          "type": "string"
        },
        "endDate": {
          "type": "string",
          "format": "date-time"
        },
        "frequency": {
          "type": "string"
        },
        "intervalAmount": {
          "type": "integer",
          "format": "int64"
        },
        "intervalFrequency": {
          "type": "string"
        },
        "startDate": {
          "type": "string",
          "format": "date-time"
        },
        "timeZone": {
          "type": "string"
        },
        "workdaysOnly": {
          "type": "boolean"
        }
      }
    },
    "ReportSettings": {
      "type": "object",
      "properties": {
        "branding": {
          "$ref": "#/definitions/ReportBrandingOptions"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "ReportTimeRange": {
      "type": "object",
      "properties": {
        "from": {
          "type": "string"
        },
        "to": {
          "type": "string"
        }
      }
    },
    "ResponseDetails": {
      "type": "object",
      "properties": {
        "msg": {
          "type": "string"
        }
      }
    },
    "Responses": {
      "description": "The QueryData method the QueryDataHandler method will set the RefId\nproperty on the DataResponses' frames based on these RefIDs.",
      "type": "object",
      "title": "Responses is a map of RefIDs (Unique Query ID) to DataResponses.",
      "additionalProperties": {
        "$ref": "#/definitions/DataResponse"
      }
    },
    "RestoreDashboardVersionCommand": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "RevokeAuthTokenCmd": {
      "type": "object",
      "properties": {
        "authTokenId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "RoleAssignmentsDTO": {
      "type": "object",
      "properties": {
        "role_uid": {
          "type": "string"
        },
        "service_accounts": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "teams": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "users": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "RoleDTO": {
      "type": "object",
      "properties": {
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "delegatable": {
          "type": "boolean"
        },
        "description": {
          "type": "string"
        },
        "displayName": {
          "type": "string"
        },
        "global": {
          "type": "boolean"
        },
        "group": {
          "type": "string"
        },
        "hidden": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "permissions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Permission"
          }
        },
        "uid": {
          "type": "string"
        },
        "updated": {
          "type": "string",
          "format": "date-time"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "RolesSearchQuery": {
      "type": "object",
      "properties": {
        "includeHidden": {
          "type": "boolean"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "teamIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "userIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "Route": {
      "description": "A Route is a node that contains definitions of how to handle alerts. This is modified\nfrom the upstream alertmanager in that it adds the ObjectMatchers property.",
      "type": "object",
      "properties": {
        "continue": {
          "type": "boolean"
        },
        "group_by": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group_interval": {
          "type": "string"
        },
        "group_wait": {
          "type": "string"
        },
        "match": {
          "description": "Deprecated. Remove before v1.0 release.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "match_re": {
          "$ref": "#/definitions/MatchRegexps"
        },
        "matchers": {
          "$ref": "#/definitions/Matchers"
        },
        "mute_time_intervals": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "object_matchers": {
          "$ref": "#/definitions/ObjectMatchers"
        },
        "provenance": {
          "$ref": "#/definitions/Provenance"
        },
        "receiver": {
          "type": "string"
        },
        "repeat_interval": {
          "type": "string"
        },
        "routes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Route"
          }
        }
      }
    },
    "RouteExport": {
      "description": "RouteExport is the provisioned file export of definitions.Route. This is needed to hide fields that aren't useable in\nprovisioning file format. An alternative would be to define a custom MarshalJSON and MarshalYAML that excludes them.",
      "type": "object",
      "properties": {
        "continue": {
          "type": "boolean"
        },
        "group_by": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "group_interval": {
          "type": "string"
        },
        "group_wait": {
          "type": "string"
        },
        "match": {
          "description": "Deprecated. Remove before v1.0 release.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "match_re": {
          "$ref": "#/definitions/MatchRegexps"
        },
        "matchers": {
          "$ref": "#/definitions/Matchers"
        },
        "mute_time_intervals": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "object_matchers": {
          "$ref": "#/definitions/ObjectMatchers"
        },
        "receiver": {
          "type": "string"
        },
        "repeat_interval": {
          "type": "string"
        },
        "routes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RouteExport"
          }
        }
      }
    },
    "Rule": {
      "description": "adapted from cortex",
      "type": "object",
      "required": [
        "name",
        "query",
        "health",
        "type"
      ],
      "properties": {
        "evaluationTime": {
          "type": "number",
          "format": "double"
        },
        "health": {
          "type": "string"
        },
        "labels": {
          "$ref": "#/definitions/overrideLabels"
        },
        "lastError": {
          "type": "string"
        },
        "lastEvaluation": {
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "type": "string"
        },
        "query": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/RuleType"
        }
      }
    },
    "RuleDiscovery": {
      "type": "object",
      "required": [
        "groups"
      ],
      "properties": {
        "groups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RuleGroup"
          }
        },
        "totals": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "RuleGroup": {
      "type": "object",
      "required": [
        "name",
        "file",
        "rules",
        "interval"
      ],
      "properties": {
        "evaluationTime": {
          "type": "number",
          "format": "double"
        },
        "file": {
          "type": "string"
        },
        "interval": {
          "type": "number",
          "format": "double"
        },
        "lastEvaluation": {
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "type": "string"
        },
        "rules": {
          "description": "In order to preserve rule ordering, while exposing type (alerting or recording)\nspecific properties, both alerting and recording rules are exposed in the\nsame array.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AlertingRule"
          }
        },
        "totals": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "RuleGroupConfigResponse": {
      "type": "object",
      "properties": {
        "interval": {
          "$ref": "#/definitions/Duration"
        },
        "name": {
          "type": "string"
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GettableExtendedRuleNode"
          }
        },
        "source_tenants": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "RuleResponse": {
      "type": "object",
      "required": [
        "status"
      ],
      "properties": {
        "data": {
          "$ref": "#/definitions/RuleDiscovery"
        },
        "error": {
          "type": "string"
        },
        "errorType": {
          "$ref": "#/definitions/ErrorType"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "RuleType": {
      "type": "string",
      "title": "RuleType models the type of a rule."
    },
    "SNSConfig": {
      "type": "object",
      "properties": {
        "api_url": {
          "type": "string"
        },
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "message": {
          "type": "string"
        },
        "phone_number": {
          "type": "string"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "sigv4": {
          "$ref": "#/definitions/SigV4Config"
        },
        "subject": {
          "type": "string"
        },
        "target_arn": {
          "type": "string"
        },
        "topic_arn": {
          "type": "string"
        }
      }
    },
    "Sample": {
      "description": "Sample is a single sample belonging to a metric. It represents either a float\nsample or a histogram sample. If H is nil, it is a float sample. Otherwise,\nit is a histogram sample.",
      "type": "object",
      "properties": {
        "F": {
          "type": "number",
          "format": "double"
        },
        "H": {
          "$ref": "#/definitions/FloatHistogram"
        },
        "Metric": {
          "$ref": "#/definitions/Labels"
        },
        "T": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "SaveDashboardCommand": {
      "type": "object",
      "properties": {
        "UpdatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "dashboard": {
          "$ref": "#/definitions/Json"
        },
        "folderId": {
          "description": "Deprecated: use FolderUID instead",
          "type": "integer",
          "format": "int64"
        },
        "folderUid": {
          "type": "string"
        },
        "isFolder": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "overwrite": {
          "type": "boolean"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "SearchDeviceQueryResult": {
      "type": "object",
      "properties": {
        "devices": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DeviceSearchHitDTO"
          }
        },
        "page": {
          "type": "integer",
          "format": "int64"
        },
        "perPage": {
          "type": "integer",
          "format": "int64"
        },
        "totalCount": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "SearchOrgServiceAccountsResult": {
      "description": "swagger: model",
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "format": "int64"
        },
        "perPage": {
          "type": "integer",
          "format": "int64"
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ServiceAccountDTO"
          }
        },
        "totalCount": {
          "description": "It can be used for pagination of the user list\nE.g. if totalCount is equal to 100 users and\nthe perpage parameter is set to 10 then there are 10 pages of users.",
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "SearchOrgUsersQueryResult": {
      "type": "object",
      "properties": {
        "orgUsers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrgUserDTO"
          }
        },
        "page": {
          "type": "integer",
          "format": "int64"
        },
        "perPage": {
          "type": "integer",
          "format": "int64"
        },
        "totalCount": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "SearchResult": {
      "type": "object",
      "properties": {
        "result": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SearchResultItem"
          }
        }
      }
    },
    "SearchResultItem": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string"
        },
        "basicRole": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "roleName": {
          "type": "string"
        },
        "scope": {
          "type": "string"
        },
        "teamId": {
          "type": "integer",
          "format": "int64"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "SearchTeamQueryResult": {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "format": "int64"
        },
        "perPage": {
          "type": "integer",
          "format": "int64"
        },
        "teams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TeamDTO"
          }
        },
        "totalCount": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "SearchUserQueryResult": {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "format": "int64"
        },
        "perPage": {
          "type": "integer",
          "format": "int64"
        },
        "totalCount": {
          "type": "integer",
          "format": "int64"
        },
        "users": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/UserSearchHitDTO"
          }
        }
      }
    },
    "Secret": {
      "type": "string",
      "title": "Secret special type for storing secrets."
    },
    "SecretURL": {
      "title": "SecretURL is a URL that must not be revealed on marshaling.",
      "$ref": "#/definitions/URL"
    },
    "ServiceAccountDTO": {
      "description": "swagger: model",
      "type": "object",
      "properties": {
        "accessControl": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          },
          "example": {
            "serviceaccounts:delete": true,
            "serviceaccounts:read": true,
            "serviceaccounts:write": true
          }
        },
        "avatarUrl": {
          "type": "string",
          "example": "/avatar/85ec38023d90823d3e5b43ef35646af9"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "isDisabled": {
          "type": "boolean",
          "example": false
        },
        "isExternal": {
          "type": "boolean",
          "example": false
        },
        "login": {
          "type": "string",
          "example": "sa-grafana"
        },
        "name": {
          "type": "string",
          "example": "grafana"
        },
        "orgId": {
          "type": "integer",
          "format": "int64",
          "example": 1
        },
        "role": {
          "type": "string",
          "example": "Viewer"
        },
        "tokens": {
          "type": "integer",
          "format": "int64",
          "example": 0
        }
      }
    },
    "ServiceAccountProfileDTO": {
      "type": "object",
      "properties": {
        "accessControl": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        },
        "avatarUrl": {
          "type": "string",
          "example": "/avatar/8ea890a677d6a223c591a1beea6ea9d2"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "example": "2022-03-21T14:35:33Z"
        },
        "id": {
          "type": "integer",
          "format": "int64",
          "example": 2
        },
        "isDisabled": {
          "type": "boolean",
          "example": false
        },
        "isExternal": {
          "type": "boolean",
          "example": false
        },
        "login": {
          "type": "string",
          "example": "sa-grafana"
        },
        "name": {
          "type": "string",
          "example": "test"
        },
        "orgId": {
          "type": "integer",
          "format": "int64",
          "example": 1
        },
        "requiredBy": {
          "type": "string",
          "example": "grafana-app"
        },
        "role": {
          "type": "string",
          "example": "Editor"
        },
        "teams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "example": []
        },
        "tokens": {
          "type": "integer",
          "format": "int64"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "example": "2022-03-21T14:35:33Z"
        }
      }
    },
    "SetResourcePermissionCommand": {
      "type": "object",
      "properties": {
        "builtInRole": {
          "type": "string"
        },
        "permission": {
          "type": "string"
        },
        "teamId": {
          "type": "integer",
          "format": "int64"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "SetRoleAssignmentsCommand": {
      "type": "object",
      "properties": {
        "service_accounts": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "teams": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "users": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "SetUserRolesCommand": {
      "type": "object",
      "properties": {
        "global": {
          "type": "boolean"
        },
        "includeHidden": {
          "type": "boolean"
        },
        "roleUids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "SettingsBag": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": {
          "type": "string"
        }
      }
    },
    "ShareType": {
      "type": "string"
    },
    "SigV4Config": {
      "description": "SigV4Config is the configuration for signing remote write requests with\nAWS's SigV4 verification process. Empty values will be retrieved using the\nAWS default credentials chain.",
      "type": "object",
      "properties": {
        "AccessKey": {
          "type": "string"
        },
        "Profile": {
          "type": "string"
        },
        "Region": {
          "type": "string"
        },
        "RoleARN": {
          "type": "string"
        },
        "SecretKey": {
          "$ref": "#/definitions/Secret"
        }
      }
    },
    "SignatureAlgorithm": {
      "type": "integer",
      "format": "int64"
    },
    "SlackAction": {
      "description": "See https://api.slack.com/docs/message-attachments#action_fields and https://api.slack.com/docs/message-buttons\nfor more information.",
      "type": "object",
      "title": "SlackAction configures a single Slack action that is sent with each notification.",
      "properties": {
        "confirm": {
          "$ref": "#/definitions/SlackConfirmationField"
        },
        "name": {
          "type": "string"
        },
        "style": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "SlackConfig": {
      "type": "object",
      "title": "SlackConfig configures notifications via Slack.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SlackAction"
          }
        },
        "api_url": {
          "$ref": "#/definitions/SecretURL"
        },
        "api_url_file": {
          "type": "string"
        },
        "callback_id": {
          "type": "string"
        },
        "channel": {
          "description": "Slack channel override, (like #other-channel or @username).",
          "type": "string"
        },
        "color": {
          "type": "string"
        },
        "fallback": {
          "type": "string"
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SlackField"
          }
        },
        "footer": {
          "type": "string"
        },
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "icon_emoji": {
          "type": "string"
        },
        "icon_url": {
          "type": "string"
        },
        "image_url": {
          "type": "string"
        },
        "link_names": {
          "type": "boolean"
        },
        "mrkdwn_in": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "pretext": {
          "type": "string"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "short_fields": {
          "type": "boolean"
        },
        "text": {
          "type": "string"
        },
        "thumb_url": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "title_link": {
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "SlackConfirmationField": {
      "description": "SlackConfirmationField protect users from destructive actions or particularly distinguished decisions\nby asking them to confirm their button click one more time.\nSee https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields for more information.",
      "type": "object",
      "properties": {
        "dismiss_text": {
          "type": "string"
        },
        "ok_text": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      }
    },
    "SlackField": {
      "description": "Each field must contain a title, value, and optionally, a boolean value to indicate if the field\nis short enough to be displayed next to other fields designated as short.\nSee https://api.slack.com/docs/message-attachments#fields for more information.",
      "type": "object",
      "title": "SlackField configures a single Slack field that is sent with each notification.",
      "properties": {
        "short": {
          "type": "boolean"
        },
        "title": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "SmtpNotEnabled": {
      "$ref": "#/definitions/ResponseDetails"
    },
    "Span": {
      "type": "object",
      "title": "A Span defines a continuous sequence of buckets.",
      "properties": {
        "Length": {
          "description": "Length of the span.",
          "type": "integer",
          "format": "uint32"
        },
        "Offset": {
          "description": "Gap to previous span (always positive), or starting index for the 1st\nspan (which can be negative).",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "State": {
      "type": "string"
    },
    "Status": {
      "type": "integer",
      "format": "int64"
    },
    "Success": {
      "$ref": "#/definitions/ResponseDetails"
    },
    "SuccessResponseBody": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        }
      }
    },
    "SupportedTransformationTypes": {
      "type": "string"
    },
    "SyncResult": {
      "type": "object",
      "title": "SyncResult holds the result of a sync with LDAP. This gives us information on which users were updated and how.",
      "properties": {
        "Elapsed": {
          "$ref": "#/definitions/Duration"
        },
        "FailedUsers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FailedUser"
          }
        },
        "MissingUserIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "Started": {
          "type": "string",
          "format": "date-time"
        },
        "UpdatedUserIds": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "TLSConfig": {
      "type": "object",
      "title": "TLSConfig configures the options for TLS connections.",
      "properties": {
        "ca": {
          "description": "Text of the CA cert to use for the targets.",
          "type": "string"
        },
        "ca_file": {
          "description": "The CA cert to use for the targets.",
          "type": "string"
        },
        "cert": {
          "description": "Text of the client cert file for the targets.",
          "type": "string"
        },
        "cert_file": {
          "description": "The client cert file for the targets.",
          "type": "string"
        },
        "insecure_skip_verify": {
          "description": "Disable target certificate validation.",
          "type": "boolean"
        },
        "key": {
          "$ref": "#/definitions/Secret"
        },
        "key_file": {
          "description": "The client key file for the targets.",
          "type": "string"
        },
        "max_version": {
          "$ref": "#/definitions/TLSVersion"
        },
        "min_version": {
          "$ref": "#/definitions/TLSVersion"
        },
        "server_name": {
          "description": "Used to verify the hostname for the targets.",
          "type": "string"
        }
      }
    },
    "TLSVersion": {
      "type": "integer",
      "format": "uint16"
    },
    "TagsDTO": {
      "type": "object",
      "title": "TagsDTO is the frontend DTO for Tag.",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "tag": {
          "type": "string"
        }
      }
    },
    "TeamDTO": {
      "type": "object",
      "properties": {
        "accessControl": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        },
        "avatarUrl": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "memberCount": {
          "type": "integer",
          "format": "int64"
        },
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "permission": {
          "$ref": "#/definitions/PermissionType"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "TeamGroupDTO": {
      "type": "object",
      "properties": {
        "groupId": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "teamId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "TeamGroupMapping": {
      "type": "object",
      "properties": {
        "groupId": {
          "type": "string"
        }
      }
    },
    "TeamMemberDTO": {
      "type": "object",
      "properties": {
        "auth_module": {
          "type": "string"
        },
        "avatarUrl": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "login": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "permission": {
          "$ref": "#/definitions/PermissionType"
        },
        "teamId": {
          "type": "integer",
          "format": "int64"
        },
        "teamUID": {
          "type": "string"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "TelegramConfig": {
      "type": "object",
      "title": "TelegramConfig configures notifications via Telegram.",
      "properties": {
        "api_url": {
          "$ref": "#/definitions/URL"
        },
        "chat": {
          "type": "integer",
          "format": "int64"
        },
        "disable_notifications": {
          "type": "boolean"
        },
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "message": {
          "type": "string"
        },
        "parse_mode": {
          "type": "string"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "token": {
          "$ref": "#/definitions/Secret"
        },
        "token_file": {
          "type": "string"
        }
      }
    },
    "TempUserDTO": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "createdOn": {
          "type": "string",
          "format": "date-time"
        },
        "email": {
          "type": "string"
        },
        "emailSent": {
          "type": "boolean"
        },
        "emailSentOn": {
          "type": "string",
          "format": "date-time"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "invitedByEmail": {
          "type": "string"
        },
        "invitedByLogin": {
          "type": "string"
        },
        "invitedByName": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ]
        },
        "status": {
          "$ref": "#/definitions/TempUserStatus"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "TempUserStatus": {
      "type": "string"
    },
    "TestReceiverConfigResult": {
      "type": "object",
      "properties": {
        "error": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "TestReceiverResult": {
      "type": "object",
      "properties": {
        "grafana_managed_receiver_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TestReceiverConfigResult"
          }
        },
        "name": {
          "type": "string"
        }
      }
    },
    "TestReceiversConfigAlertParams": {
      "type": "object",
      "properties": {
        "annotations": {
          "$ref": "#/definitions/LabelSet"
        },
        "labels": {
          "$ref": "#/definitions/LabelSet"
        }
      }
    },
    "TestReceiversConfigBodyParams": {
      "type": "object",
      "properties": {
        "alert": {
          "$ref": "#/definitions/TestReceiversConfigAlertParams"
        },
        "receivers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PostableApiReceiver"
          }
        }
      }
    },
    "TestReceiversResult": {
      "type": "object",
      "properties": {
        "alert": {
          "$ref": "#/definitions/TestReceiversConfigAlertParams"
        },
        "notified_at": {
          "type": "string",
          "format": "date-time"
        },
        "receivers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TestReceiverResult"
          }
        }
      }
    },
    "TestRulePayload": {
      "type": "object",
      "properties": {
        "expr": {
          "type": "string",
          "example": "(node_filesystem_avail_bytes{fstype!=\"\",job=\"integrations/node_exporter\"} node_filesystem_size_bytes{fstype!=\"\",job=\"integrations/node_exporter\"} * 100 \u003c 5 and node_filesystem_readonly{fstype!=\"\",job=\"integrations/node_exporter\"} == 0)"
        },
        "grafana_condition": {
          "$ref": "#/definitions/EvalAlertConditionCommand"
        }
      }
    },
    "TestRuleResponse": {
      "type": "object",
      "properties": {
        "alerts": {
          "$ref": "#/definitions/Vector"
        },
        "grafana_alert_instances": {
          "$ref": "#/definitions/AlertInstancesResponse"
        }
      }
    },
    "TestTemplatesConfigBodyParams": {
      "type": "object",
      "properties": {
        "alerts": {
          "description": "Alerts to use as data when testing the template.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/postableAlert"
          }
        },
        "name": {
          "description": "Name of the template file.",
          "type": "string"
        },
        "template": {
          "description": "Template string to test.",
          "type": "string"
        }
      }
    },
    "TestTemplatesErrorResult": {
      "type": "object",
      "properties": {
        "kind": {
          "description": "Kind of template error that occurred.",
          "type": "string",
          "enum": [
            "invalid_template",
            "execution_error"
          ]
        },
        "message": {
          "description": "Error message.",
          "type": "string"
        },
        "name": {
          "description": "Name of the associated template for this error. Will be empty if the Kind is \"invalid_template\".",
          "type": "string"
        }
      }
    },
    "TestTemplatesResult": {
      "type": "object",
      "properties": {
        "name": {
          "description": "Name of the associated template definition for this result.",
          "type": "string"
        },
        "text": {
          "description": "Interpolated value of the template.",
          "type": "string"
        }
      }
    },
    "TestTemplatesResults": {
      "type": "object",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TestTemplatesErrorResult"
          }
        },
        "results": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TestTemplatesResult"
          }
        }
      }
    },
    "Threshold": {
      "description": "Threshold a single step on the threshold list",
      "type": "object",
      "properties": {
        "color": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "value": {
          "$ref": "#/definitions/ConfFloat64"
        }
      }
    },
    "ThresholdsConfig": {
      "description": "ThresholdsConfig setup thresholds",
      "type": "object",
      "properties": {
        "mode": {
          "$ref": "#/definitions/ThresholdsMode"
        },
        "steps": {
          "description": "Must be sorted by 'value', first value is always -Infinity",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Threshold"
          }
        }
      }
    },
    "ThresholdsMode": {
      "description": "ThresholdsMode absolute or percentage",
      "type": "string"
    },
    "TimeInterval": {
      "type": "object",
      "title": "TimeInterval represents a named set of time intervals for which a route should be muted.",
      "properties": {
        "name": {
          "type": "string"
        },
        "time_intervals": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TimeInterval"
          }
        }
      }
    },
    "TimeIntervalItem": {
      "type": "object",
      "properties": {
        "days_of_month": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "location": {
          "type": "string"
        },
        "months": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "times": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TimeIntervalTimeRange"
          }
        },
        "weekdays": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "years": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "TimeIntervalTimeRange": {
      "type": "object",
      "properties": {
        "end_time": {
          "type": "string"
        },
        "start_time": {
          "type": "string"
        }
      }
    },
    "TimeRange": {
      "description": "Redefining this to avoid an import cycle",
      "type": "object",
      "properties": {
        "from": {
          "type": "string",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "Token": {
      "type": "object",
      "properties": {
        "account": {
          "type": "string"
        },
        "anonymousRatio": {
          "type": "integer",
          "format": "int64"
        },
        "company": {
          "type": "string"
        },
        "details_url": {
          "type": "string"
        },
        "exp": {
          "type": "integer",
          "format": "int64"
        },
        "iat": {
          "type": "integer",
          "format": "int64"
        },
        "included_users": {
          "type": "integer",
          "format": "int64"
        },
        "iss": {
          "type": "string"
        },
        "jti": {
          "type": "string"
        },
        "lexp": {
          "type": "integer",
          "format": "int64"
        },
        "lic_exp_warn_days": {
          "type": "integer",
          "format": "int64"
        },
        "lid": {
          "type": "string"
        },
        "limit_by": {
          "type": "string"
        },
        "max_concurrent_user_sessions": {
          "type": "integer",
          "format": "int64"
        },
        "nbf": {
          "type": "integer",
          "format": "int64"
        },
        "prod": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "slug": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/TokenStatus"
        },
        "sub": {
          "type": "string"
        },
        "tok_exp_warn_days": {
          "type": "integer",
          "format": "int64"
        },
        "trial": {
          "type": "boolean"
        },
        "trial_exp": {
          "type": "integer",
          "format": "int64"
        },
        "update_days": {
          "type": "integer",
          "format": "int64"
        },
        "usage_billing": {
          "type": "boolean"
        }
      }
    },
    "TokenDTO": {
      "type": "object",
      "properties": {
        "created": {
          "type": "string",
          "format": "date-time",
          "example": "2022-03-23T10:31:02Z"
        },
        "expiration": {
          "type": "string",
          "format": "date-time",
          "example": "2022-03-23T10:31:02Z"
        },
        "hasExpired": {
          "type": "boolean",
          "example": false
        },
        "id": {
          "type": "integer",
          "format": "int64",
          "example": 1
        },
        "isRevoked": {
          "type": "boolean",
          "example": false
        },
        "lastUsedAt": {
          "type": "string",
          "format": "date-time",
          "example": "2022-03-23T10:31:02Z"
        },
        "name": {
          "type": "string",
          "example": "grafana"
        },
        "secondsUntilExpiration": {
          "type": "number",
          "format": "double",
          "example": 0
        }
      }
    },
    "TokenStatus": {
      "type": "integer",
      "format": "int64"
    },
    "Transformation": {
      "type": "object",
      "properties": {
        "expression": {
          "type": "string"
        },
        "field": {
          "type": "string"
        },
        "mapValue": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "regex",
            "logfmt"
          ]
        }
      }
    },
    "Transformations": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Transformation"
      }
    },
    "Type": {
      "type": "string"
    },
    "TypeMeta": {
      "description": "+k8s:deepcopy-gen=false",
      "type": "object",
      "title": "TypeMeta describes an individual object in an API response or request\nwith strings representing the type of the object and its API schema version.\nStructures that are versioned or persisted should inline TypeMeta.",
      "properties": {
        "apiVersion": {
          "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n+optional",
          "type": "string"
        },
        "kind": {
          "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional",
          "type": "string"
        }
      }
    },
    "URL": {
      "description": "The general form represented is:\n\n[scheme:][//[userinfo@]host][/]path[?query][#fragment]\n\nURLs that do not start with a slash after the scheme are interpreted as:\n\nscheme:opaque[?query][#fragment]\n\nThe Host field contains the host and port subcomponents of the URL.\nWhen the port is present, it is separated from the host with a colon.\nWhen the host is an IPv6 address, it must be enclosed in square brackets:\n\"[fe80::1]:80\". The [net.JoinHostPort] function combines a host and port\ninto a string suitable for the Host field, adding square brackets to\nthe host when necessary.\n\nNote that the Path field is stored in decoded form: /%47%6f%2f becomes /Go/.\nA consequence is that it is impossible to tell which slashes in the Path were\nslashes in the raw URL and which were %2f. This distinction is rarely important,\nbut when it is, the code should use the [URL.EscapedPath] method, which preserves\nthe original encoding of Path.\n\nThe RawPath field is an optional field which is only set when the default\nencoding of Path is different from the escaped path. See the EscapedPath method\nfor more details.\n\nURL's String method uses the EscapedPath method to obtain the path.",
      "type": "object",
      "title": "A URL represents a parsed URL (technically, a URI reference).",
      "properties": {
        "ForceQuery": {
          "type": "boolean"
        },
        "Fragment": {
          "type": "string"
        },
        "Host": {
          "type": "string"
        },
        "OmitHost": {
          "type": "boolean"
        },
        "Opaque": {
          "type": "string"
        },
        "Path": {
          "type": "string"
        },
        "RawFragment": {
          "type": "string"
        },
        "RawPath": {
          "type": "string"
        },
        "RawQuery": {
          "type": "string"
        },
        "Scheme": {
          "type": "string"
        },
        "User": {
          "$ref": "#/definitions/Userinfo"
        }
      }
    },
    "Unstructured": {
      "description": "Unstructured allows objects that do not have Golang structs registered to be manipulated\ngenerically.",
      "type": "object",
      "properties": {
        "Object": {
          "description": "Object is a JSON compatible map with string, float, int, bool, []interface{},\nor map[string]interface{} children.",
          "type": "object",
          "additionalProperties": {}
        }
      }
    },
    "UpdateAnnotationsCmd": {
      "type": "object",
      "properties": {
        "data": {
          "$ref": "#/definitions/Json"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "text": {
          "type": "string"
        },
        "time": {
          "type": "integer",
          "format": "int64"
        },
        "timeEnd": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "UpdateCorrelationCommand": {
      "description": "UpdateCorrelationCommand is the command for updating a correlation",
      "type": "object",
      "properties": {
        "config": {
          "$ref": "#/definitions/CorrelationConfigUpdateDTO"
        },
        "description": {
          "description": "Optional description of the correlation",
          "type": "string",
          "example": "Logs to Traces"
        },
        "label": {
          "description": "Optional label identifying the correlation",
          "type": "string",
          "example": "My label"
        }
      }
    },
    "UpdateCorrelationResponseBody": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "example": "Correlation updated"
        },
        "result": {
          "$ref": "#/definitions/Correlation"
        }
      }
    },
    "UpdateDashboardACLCommand": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DashboardACLUpdateItem"
          }
        }
      }
    },
    "UpdateDataSourceCommand": {
      "description": "Also acts as api DTO",
      "type": "object",
      "properties": {
        "access": {
          "$ref": "#/definitions/DsAccess"
        },
        "basicAuth": {
          "type": "boolean"
        },
        "basicAuthUser": {
          "type": "string"
        },
        "database": {
          "type": "string"
        },
        "isDefault": {
          "type": "boolean"
        },
        "jsonData": {
          "$ref": "#/definitions/Json"
        },
        "name": {
          "type": "string"
        },
        "secureJsonData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "type": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "user": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "format": "int64"
        },
        "withCredentials": {
          "type": "boolean"
        }
      }
    },
    "UpdateFolderCommand": {
      "description": "UpdateFolderCommand captures the information required by the folder service\nto update a folder. Use Move to update a folder's parent folder.",
      "type": "object",
      "properties": {
        "description": {
          "description": "NewDescription it's an optional parameter used for overriding the existing folder description",
          "type": "string"
        },
        "overwrite": {
          "description": "Overwrite only used by the legacy folder implementation",
          "type": "boolean"
        },
        "title": {
          "description": "NewTitle it's an optional parameter used for overriding the existing folder title",
          "type": "string"
        },
        "version": {
          "description": "Version only used by the legacy folder implementation",
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "UpdateOrgAddressForm": {
      "type": "object",
      "properties": {
        "address1": {
          "type": "string"
        },
        "address2": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "zipcode": {
          "type": "string"
        }
      }
    },
    "UpdateOrgForm": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        }
      }
    },
    "UpdateOrgUserCommand": {
      "type": "object",
      "properties": {
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ]
        }
      }
    },
    "UpdatePlaylistCommand": {
      "type": "object",
      "properties": {
        "interval": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PlaylistItem"
          }
        },
        "name": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "UpdatePrefsCmd": {
      "type": "object",
      "properties": {
        "cookies": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CookieType"
          }
        },
        "homeDashboardId": {
          "description": "The numerical :id of a favorited dashboard",
          "type": "integer",
          "format": "int64",
          "default": 0
        },
        "homeDashboardUID": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "queryHistory": {
          "$ref": "#/definitions/QueryHistoryPreference"
        },
        "theme": {
          "type": "string",
          "enum": [
            "light",
            "dark",
            "system"
          ]
        },
        "timezone": {
          "type": "string",
          "enum": [
            "utc",
            "browser"
          ]
        },
        "weekStart": {
          "type": "string"
        }
      }
    },
    "UpdateQuotaCmd": {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "format": "int64"
        },
        "target": {
          "type": "string"
        }
      }
    },
    "UpdateRoleCommand": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "displayName": {
          "type": "string"
        },
        "global": {
          "type": "boolean"
        },
        "group": {
          "type": "string"
        },
        "hidden": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "permissions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Permission"
          }
        },
        "version": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "UpdateRuleGroupResponse": {
      "type": "object",
      "properties": {
        "created": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "deleted": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "message": {
          "type": "string"
        },
        "updated": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "UpdateServiceAccountForm": {
      "type": "object",
      "properties": {
        "isDisabled": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ]
        },
        "serviceAccountId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "UpdateTeamCommand": {
      "type": "object",
      "properties": {
        "Email": {
          "type": "string"
        },
        "ID": {
          "type": "integer",
          "format": "int64"
        },
        "Name": {
          "type": "string"
        }
      }
    },
    "UpdateTeamMemberCommand": {
      "type": "object",
      "properties": {
        "permission": {
          "$ref": "#/definitions/PermissionType"
        }
      }
    },
    "UpdateUserCommand": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "login": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "theme": {
          "type": "string"
        }
      }
    },
    "UserLookupDTO": {
      "type": "object",
      "properties": {
        "avatarUrl": {
          "type": "string"
        },
        "login": {
          "type": "string"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "UserOrgDTO": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "role": {
          "type": "string",
          "enum": [
            "None",
            "Viewer",
            "Editor",
            "Admin"
          ]
        }
      }
    },
    "UserProfileDTO": {
      "type": "object",
      "properties": {
        "accessControl": {
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        },
        "authLabels": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "avatarUrl": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "email": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "isDisabled": {
          "type": "boolean"
        },
        "isExternal": {
          "type": "boolean"
        },
        "isExternallySynced": {
          "type": "boolean"
        },
        "isGrafanaAdmin": {
          "type": "boolean"
        },
        "isGrafanaAdminExternallySynced": {
          "type": "boolean"
        },
        "login": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "integer",
          "format": "int64"
        },
        "theme": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "UserSearchHitDTO": {
      "type": "object",
      "properties": {
        "authLabels": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "avatarUrl": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "isAdmin": {
          "type": "boolean"
        },
        "isDisabled": {
          "type": "boolean"
        },
        "lastSeenAt": {
          "type": "string",
          "format": "date-time"
        },
        "lastSeenAtAge": {
          "type": "string"
        },
        "login": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "uid": {
          "type": "string"
        }
      }
    },
    "UserToken": {
      "description": "UserToken represents a user token",
      "type": "object",
      "properties": {
        "AuthToken": {
          "type": "string"
        },
        "AuthTokenSeen": {
          "type": "boolean"
        },
        "ClientIp": {
          "type": "string"
        },
        "CreatedAt": {
          "type": "integer",
          "format": "int64"
        },
        "Id": {
          "type": "integer",
          "format": "int64"
        },
        "PrevAuthToken": {
          "type": "string"
        },
        "RevokedAt": {
          "type": "integer",
          "format": "int64"
        },
        "RotatedAt": {
          "type": "integer",
          "format": "int64"
        },
        "SeenAt": {
          "type": "integer",
          "format": "int64"
        },
        "UnhashedToken": {
          "type": "string"
        },
        "UpdatedAt": {
          "type": "integer",
          "format": "int64"
        },
        "UserAgent": {
          "type": "string"
        },
        "UserId": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "Userinfo": {
      "description": "The Userinfo type is an immutable encapsulation of username and\npassword details for a [URL]. An existing Userinfo value is guaranteed\nto have a username set (potentially empty, as allowed by RFC 2396),\nand optionally a password.",
      "type": "object"
    },
    "ValidationError": {
      "type": "object",
      "properties": {
        "msg": {
          "type": "string",
          "example": "error message"
        }
      }
    },
    "ValueMapping": {
      "description": "ValueMapping allows mapping input values to text and color",
      "type": "object"
    },
    "ValueMappings": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/ValueMapping"
      }
    },
    "Vector": {
      "description": "Vector is basically only an alias for []Sample, but the contract is that\nin a Vector, all Samples have the same timestamp.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Sample"
      }
    },
    "VictorOpsConfig": {
      "type": "object",
      "title": "VictorOpsConfig configures notifications via VictorOps.",
      "properties": {
        "api_key": {
          "$ref": "#/definitions/Secret"
        },
        "api_key_file": {
          "type": "string"
        },
        "api_url": {
          "$ref": "#/definitions/URL"
        },
        "custom_fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "entity_display_name": {
          "type": "string"
        },
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "message_type": {
          "type": "string"
        },
        "monitoring_tool": {
          "type": "string"
        },
        "routing_key": {
          "type": "string"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "state_message": {
          "type": "string"
        }
      }
    },
    "VisType": {
      "type": "string",
      "title": "VisType is used to indicate how the data should be visualized in explore."
    },
    "WebexConfig": {
      "type": "object",
      "title": "WebexConfig configures notifications via Webex.",
      "properties": {
        "api_url": {
          "$ref": "#/definitions/URL"
        },
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "message": {
          "type": "string"
        },
        "room_id": {
          "type": "string"
        },
        "send_resolved": {
          "type": "boolean"
        }
      }
    },
    "WebhookConfig": {
      "type": "object",
      "title": "WebhookConfig configures notifications via a generic webhook.",
      "properties": {
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "max_alerts": {
          "description": "MaxAlerts is the maximum number of alerts to be sent per webhook message.\nAlerts exceeding this threshold will be truncated. Setting this to 0\nallows an unlimited number of alerts.",
          "type": "integer",
          "format": "uint64"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "url": {
          "$ref": "#/definitions/SecretURL"
        },
        "url_file": {
          "type": "string"
        }
      }
    },
    "WechatConfig": {
      "type": "object",
      "title": "WechatConfig configures notifications via Wechat.",
      "properties": {
        "agent_id": {
          "type": "string"
        },
        "api_secret": {
          "$ref": "#/definitions/Secret"
        },
        "api_url": {
          "$ref": "#/definitions/URL"
        },
        "corp_id": {
          "type": "string"
        },
        "http_config": {
          "$ref": "#/definitions/HTTPClientConfig"
        },
        "message": {
          "type": "string"
        },
        "message_type": {
          "type": "string"
        },
        "send_resolved": {
          "type": "boolean"
        },
        "to_party": {
          "type": "string"
        },
        "to_tag": {
          "type": "string"
        },
        "to_user": {
          "type": "string"
        }
      }
    },
    "alert": {
      "description": "Alert alert",
      "type": "object",
      "required": [
        "labels"
      ],
      "properties": {
        "generatorURL": {
          "description": "generator URL\nFormat: uri",
          "type": "string",
          "format": "uri"
        },
        "labels": {
          "$ref": "#/definitions/labelSet"
        }
      }
    },
    "alertGroup": {
      "description": "AlertGroup alert group",
      "type": "object",
      "required": [
        "alerts",
        "labels",
        "receiver"
      ],
      "properties": {
        "alerts": {
          "description": "alerts",
          "type": "array",
          "items": {
            "$ref": "#/definitions/gettableAlert"
          }
        },
        "labels": {
          "$ref": "#/definitions/labelSet"
        },
        "receiver": {
          "$ref": "#/definitions/receiver"
        }
      }
    },
    "alertGroups": {
      "description": "AlertGroups alert groups",
      "type": "array",
      "items": {
        "$ref": "#/definitions/alertGroup"
      }
    },
    "alertStatus": {
      "description": "AlertStatus alert status",
      "type": "object",
      "required": [
        "inhibitedBy",
        "silencedBy",
        "state"
      ],
      "properties": {
        "inhibitedBy": {
          "description": "inhibited by",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "silencedBy": {
          "description": "silenced by",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "state": {
          "description": "state",
          "type": "string",
          "enum": [
            "[unprocessed active suppressed]"
          ]
        }
      }
    },
    "alertmanagerConfig": {
      "description": "AlertmanagerConfig alertmanager config",
      "type": "object",
      "required": [
        "original"
      ],
      "properties": {
        "original": {
          "description": "original",
          "type": "string"
        }
      }
    },
    "alertmanagerStatus": {
      "description": "AlertmanagerStatus alertmanager status",
      "type": "object",
      "required": [
        "cluster",
        "config",
        "uptime",
        "versionInfo"
      ],
      "properties": {
        "cluster": {
          "$ref": "#/definitions/clusterStatus"
        },
        "config": {
          "$ref": "#/definitions/alertmanagerConfig"
        },
        "uptime": {
          "description": "uptime",
          "type": "string",
          "format": "date-time"
        },
        "versionInfo": {
          "$ref": "#/definitions/versionInfo"
        }
      }
    },
    "clusterStatus": {
      "description": "ClusterStatus cluster status",
      "type": "object",
      "required": [
        "status"
      ],
      "properties": {
        "name": {
          "description": "name",
          "type": "string"
        },
        "peers": {
          "description": "peers",
          "type": "array",
          "items": {
            "$ref": "#/definitions/peerStatus"
          }
        },
        "status": {
          "description": "status",
          "type": "string",
          "enum": [
            "[ready settling disabled]"
          ]
        }
      }
    },
    "deviceDTO": {
      "type": "object",
      "properties": {
        "avatarUrl": {
          "type": "string"
        },
        "clientIp": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "deviceId": {
          "type": "string"
        },
        "lastSeenAt": {
          "type": "string"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "userAgent": {
          "type": "string"
        }
      }
    },
    "gettableAlert": {
      "description": "GettableAlert gettable alert",
      "type": "object",
      "required": [
        "labels",
        "annotations",
        "endsAt",
        "fingerprint",
        "receivers",
        "startsAt",
        "status",
        "updatedAt"
      ],
      "properties": {
        "annotations": {
          "$ref": "#/definitions/labelSet"
        },
        "endsAt": {
          "description": "ends at",
          "type": "string",
          "format": "date-time"
        },
        "fingerprint": {
          "description": "fingerprint",
          "type": "string"
        },
        "generatorURL": {
          "description": "generator URL\nFormat: uri",
          "type": "string",
          "format": "uri"
        },
        "labels": {
          "$ref": "#/definitions/labelSet"
        },
        "receivers": {
          "description": "receivers",
          "type": "array",
          "items": {
            "$ref": "#/definitions/receiver"
          }
        },
        "startsAt": {
          "description": "starts at",
          "type": "string",
          "format": "date-time"
        },
        "status": {
          "$ref": "#/definitions/alertStatus"
        },
        "updatedAt": {
          "description": "updated at",
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "gettableAlerts": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/gettableAlert"
      }
    },
    "gettableSilence": {
      "type": "object",
      "required": [
        "comment",
        "createdBy",
        "endsAt",
        "matchers",
        "startsAt",
        "id",
        "status",
        "updatedAt"
      ],
      "properties": {
        "comment": {
          "description": "comment",
          "type": "string"
        },
        "createdBy": {
          "description": "created by",
          "type": "string"
        },
        "endsAt": {
          "description": "ends at",
          "type": "string",
          "format": "date-time"
        },
        "id": {
          "description": "id",
          "type": "string"
        },
        "matchers": {
          "$ref": "#/definitions/matchers"
        },
        "startsAt": {
          "description": "starts at",
          "type": "string",
          "format": "date-time"
        },
        "status": {
          "$ref": "#/definitions/silenceStatus"
        },
        "updatedAt": {
          "description": "updated at",
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "gettableSilences": {
      "description": "GettableSilences gettable silences",
      "type": "array",
      "items": {
        "$ref": "#/definitions/gettableSilence"
      }
    },
    "integration": {
      "description": "Integration integration",
      "type": "object",
      "required": [
        "name",
        "sendResolved"
      ],
      "properties": {
        "lastNotifyAttempt": {
          "description": "A timestamp indicating the last attempt to deliver a notification regardless of the outcome.\nFormat: date-time",
          "type": "string",
          "format": "date-time"
        },
        "lastNotifyAttemptDuration": {
          "description": "Duration of the last attempt to deliver a notification in humanized format (`1s` or `15ms`, etc).",
          "type": "string"
        },
        "lastNotifyAttemptError": {
          "description": "Error string for the last attempt to deliver a notification. Empty if the last attempt was successful.",
          "type": "string"
        },
        "name": {
          "description": "name",
          "type": "string"
        },
        "sendResolved": {
          "description": "send resolved",
          "type": "boolean"
        }
      }
    },
    "labelSet": {
      "description": "LabelSet label set",
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "matcher": {
      "description": "Matcher matcher",
      "type": "object",
      "required": [
        "isRegex",
        "name",
        "value"
      ],
      "properties": {
        "isEqual": {
          "description": "is equal",
          "type": "boolean"
        },
        "isRegex": {
          "description": "is regex",
          "type": "boolean"
        },
        "name": {
          "description": "name",
          "type": "string"
        },
        "value": {
          "description": "value",
          "type": "string"
        }
      }
    },
    "matchers": {
      "description": "Matchers matchers",
      "type": "array",
      "items": {
        "$ref": "#/definitions/matcher"
      }
    },
    "overrideLabels": {
      "description": "The custom marshaling for labels.Labels ends up doing this anyways.",
      "type": "object",
      "title": "override the labels type with a map for generation.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "peerStatus": {
      "description": "PeerStatus peer status",
      "type": "object",
      "required": [
        "address",
        "name"
      ],
      "properties": {
        "address": {
          "description": "address",
          "type": "string"
        },
        "name": {
          "description": "name",
          "type": "string"
        }
      }
    },
    "postSilencesOKBody": {
      "type": "object",
      "properties": {
        "silenceID": {
          "description": "silence ID",
          "type": "string"
        }
      }
    },
    "postableAlert": {
      "description": "PostableAlert postable alert",
      "type": "object",
      "required": [
        "labels"
      ],
      "properties": {
        "annotations": {
          "$ref": "#/definitions/labelSet"
        },
        "endsAt": {
          "description": "ends at\nFormat: date-time",
          "type": "string",
          "format": "date-time"
        },
        "generatorURL": {
          "description": "generator URL\nFormat: uri",
          "type": "string",
          "format": "uri"
        },
        "labels": {
          "$ref": "#/definitions/labelSet"
        },
        "startsAt": {
          "description": "starts at\nFormat: date-time",
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "postableAlerts": {
      "description": "PostableAlerts postable alerts",
      "type": "array",
      "items": {
        "$ref": "#/definitions/postableAlert"
      }
    },
    "postableSilence": {
      "description": "PostableSilence postable silence",
      "type": "object",
      "required": [
        "comment",
        "createdBy",
        "endsAt",
        "matchers",
        "startsAt"
      ],
      "properties": {
        "comment": {
          "description": "comment",
          "type": "string"
        },
        "createdBy": {
          "description": "created by",
          "type": "string"
        },
        "endsAt": {
          "description": "ends at",
          "type": "string",
          "format": "date-time"
        },
        "id": {
          "description": "id",
          "type": "string"
        },
        "matchers": {
          "$ref": "#/definitions/matchers"
        },
        "startsAt": {
          "description": "starts at",
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "publicError": {
      "description": "PublicError is derived from Error and only contains information\navailable to the end user.",
      "type": "object",
      "required": [
        "statusCode",
        "messageId"
      ],
      "properties": {
        "extra": {
          "description": "Extra Additional information about the error",
          "type": "object",
          "additionalProperties": {}
        },
        "message": {
          "description": "Message A human readable message",
          "type": "string"
        },
        "messageId": {
          "description": "MessageID A unique identifier for the error",
          "type": "string"
        },
        "statusCode": {
          "description": "StatusCode The HTTP status code returned",
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "receiver": {
      "type": "object",
      "required": [
        "active",
        "integrations",
        "name"
      ],
      "properties": {
        "active": {
          "description": "active",
          "type": "boolean"
        },
        "integrations": {
          "description": "integrations",
          "type": "array",
          "items": {
            "$ref": "#/definitions/integration"
          }
        },
        "name": {
          "description": "name",
          "type": "string"
        }
      }
    },
    "resourcePermissionDTO": {
      "type": "object",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "builtInRole": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "isInherited": {
          "type": "boolean"
        },
        "isManaged": {
          "type": "boolean"
        },
        "isServiceAccount": {
          "type": "boolean"
        },
        "permission": {
          "type": "string"
        },
        "roleName": {
          "type": "string"
        },
        "team": {
          "type": "string"
        },
        "teamAvatarUrl": {
          "type": "string"
        },
        "teamId": {
          "type": "integer",
          "format": "int64"
        },
        "userAvatarUrl": {
          "type": "string"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        },
        "userLogin": {
          "type": "string"
        }
      }
    },
    "setPermissionCommand": {
      "type": "object",
      "properties": {
        "permission": {
          "type": "string"
        }
      }
    },
    "setPermissionsCommand": {
      "type": "object",
      "properties": {
        "permissions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SetResourcePermissionCommand"
          }
        }
      }
    },
    "silence": {
      "description": "Silence silence",
      "type": "object",
      "required": [
        "comment",
        "createdBy",
        "endsAt",
        "matchers",
        "startsAt"
      ],
      "properties": {
        "comment": {
          "description": "comment",
          "type": "string"
        },
        "createdBy": {
          "description": "created by",
          "type": "string"
        },
        "endsAt": {
          "description": "ends at",
          "type": "string",
          "format": "date-time"
        },
        "matchers": {
          "$ref": "#/definitions/matchers"
        },
        "startsAt": {
          "description": "starts at",
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "silenceStatus": {
      "description": "SilenceStatus silence status",
      "type": "object",
      "required": [
        "state"
      ],
      "properties": {
        "state": {
          "description": "state",
          "type": "string",
          "enum": [
            "[expired active pending]"
          ]
        }
      }
    },
    "versionInfo": {
      "description": "VersionInfo version info",
      "type": "object",
      "required": [
        "branch",
        "buildDate",
        "buildUser",
        "goVersion",
        "revision",
        "version"
      ],
      "properties": {
        "branch": {
          "description": "branch",
          "type": "string"
        },
        "buildDate": {
          "description": "build date",
          "type": "string"
        },
        "buildUser": {
          "description": "build user",
          "type": "string"
        },
        "goVersion": {
          "description": "go version",
          "type": "string"
        },
        "revision": {
          "description": "revision",
          "type": "string"
        },
        "version": {
          "description": "version",
          "type": "string"
        }
      }
    }
  },
  "responses": {
    "GetAllIntervalsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/GettableTimeIntervals"
        }
      }
    },
    "GetIntervalsByNameResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/GettableTimeIntervals"
      }
    },
    "GetReceiverResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/GettableApiReceiver"
      }
    },
    "GetReceiversResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/GettableApiReceiver"
        }
      }
    },
    "GettableHistoricUserConfigs": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/GettableHistoricUserConfig"
        }
      }
    },
    "SMTPNotEnabledError": {
      "description": "(empty)"
    },
    "StateHistory": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Frame"
      }
    },
    "TestGrafanaRuleResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/postableAlert"
        }
      }
    },
    "acceptedResponse": {
      "description": "AcceptedResponse",
      "schema": {
        "$ref": "#/definitions/ErrorResponseBody"
      }
    },
    "adminCreateUserResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/AdminCreateUserResponse"
      }
    },
    "adminGetSettingsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/SettingsBag"
      }
    },
    "adminGetStatsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/AdminStats"
      }
    },
    "adminGetUserAuthTokensResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/UserToken"
        }
      }
    },
    "badRequestError": {
      "description": "BadRequestError is returned when the request is invalid and it cannot be processed.",
      "schema": {
        "$ref": "#/definitions/ErrorResponseBody"
      }
    },
    "badRequestPublicError": {
      "description": "BadRequestPublicError is returned when the request is invalid and it cannot be processed.",
      "schema": {
        "$ref": "#/definitions/publicError"
      }
    },
    "calculateDashboardDiffResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "type": "integer",
          "format": "uint8"
        }
      }
    },
    "conflictError": {
      "description": "ConflictError",
      "schema": {
        "$ref": "#/definitions/ErrorResponseBody"
      }
    },
    "contentResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "type": "integer",
          "format": "uint8"
        }
      }
    },
    "createCorrelationResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/CreateCorrelationResponseBody"
      }
    },
    "createDashboardSnapshotResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "properties": {
          "deleteKey": {
            "description": "Unique key used to delete the snapshot. It is different from the key so that only the creator can delete the snapshot.",
            "type": "string"
          },
          "deleteUrl": {
            "type": "string"
          },
          "id": {
            "description": "Snapshot id",
            "type": "integer",
            "format": "int64"
          },
          "key": {
            "description": "Unique key",
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        }
      }
    },
    "createOrUpdateDatasourceResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "required": [
          "id",
          "name",
          "message",
          "datasource"
        ],
        "properties": {
          "datasource": {
            "$ref": "#/definitions/DataSource"
          },
          "id": {
            "description": "ID Identifier of the new data source.",
            "type": "integer",
            "format": "int64",
            "example": 65
          },
          "message": {
            "description": "Message Message of the deleted dashboard.",
            "type": "string",
            "example": "Data source added"
          },
          "name": {
            "description": "Name of the new data source.",
            "type": "string",
            "example": "My Data source"
          }
        }
      }
    },
    "createOrgResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "required": [
          "orgId",
          "message"
        ],
        "properties": {
          "message": {
            "description": "Message Message of the created org.",
            "type": "string",
            "example": "Data source added"
          },
          "orgId": {
            "description": "ID Identifier of the created org.",
            "type": "integer",
            "format": "int64",
            "example": 65
          }
        }
      }
    },
    "createPlaylistResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Playlist"
      }
    },
    "createPublicDashboardResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/PublicDashboard"
      }
    },
    "createReportResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "message": {
            "type": "string"
          }
        }
      }
    },
    "createRoleResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/RoleDTO"
      }
    },
    "createServiceAccountResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/ServiceAccountDTO"
      }
    },
    "createTeamResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "teamId": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "createTokenResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/NewApiKeyResult"
      }
    },
    "dashboardResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/DashboardFullWithMeta"
      }
    },
    "dashboardVersionResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/DashboardVersionMeta"
      }
    },
    "dashboardVersionsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/DashboardVersionMeta"
        }
      }
    },
    "deleteCorrelationResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/DeleteCorrelationResponseBody"
      }
    },
    "deleteDashboardResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "required": [
          "id",
          "title",
          "message"
        ],
        "properties": {
          "id": {
            "description": "ID Identifier of the deleted dashboard.",
            "type": "integer",
            "format": "int64",
            "example": 65
          },
          "message": {
            "description": "Message Message of the deleted dashboard.",
            "type": "string",
            "example": "Dashboard My Dashboard deleted"
          },
          "title": {
            "description": "Title Title of the deleted dashboard.",
            "type": "string",
            "example": "My Dashboard"
          }
        }
      }
    },
    "deleteDataSourceByNameResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "required": [
          "id",
          "message"
        ],
        "properties": {
          "id": {
            "description": "ID Identifier of the deleted data source.",
            "type": "integer",
            "format": "int64",
            "example": 65
          },
          "message": {
            "description": "Message Message of the deleted dashboard.",
            "type": "string",
            "example": "Dashboard My Dashboard deleted"
          }
        }
      }
    },
    "deleteFolderResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "required": [
          "id",
          "title",
          "message"
        ],
        "properties": {
          "id": {
            "description": "ID Identifier of the deleted folder.",
            "type": "integer",
            "format": "int64",
            "example": 65
          },
          "message": {
            "description": "Message Message of the deleted folder.",
            "type": "string",
            "example": "Folder My Folder deleted"
          },
          "title": {
            "description": "Title of the deleted folder.",
            "type": "string",
            "example": "My Folder"
          }
        }
      }
    },
    "devicesResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/deviceDTO"
        }
      }
    },
    "devicesSearchResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/SearchDeviceQueryResult"
      }
    },
    "folderResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Folder"
      }
    },
    "forbiddenError": {
      "description": "ForbiddenError is returned if the user/token has insufficient permissions to access the requested resource.",
      "schema": {
        "$ref": "#/definitions/ErrorResponseBody"
      }
    },
    "forbiddenPublicError": {
      "description": "ForbiddenPublicError is returned if the user/token has insufficient permissions to access the requested resource.",
      "schema": {
        "$ref": "#/definitions/publicError"
      }
    },
    "genericError": {
      "description": "A GenericError is the default error message that is generated.\nFor certain status codes there are more appropriate error structures.",
      "schema": {
        "$ref": "#/definitions/ErrorResponseBody"
      }
    },
    "getAPIkeyResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/ApiKeyDTO"
        }
      }
    },
    "getAccessControlStatusResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Status"
      }
    },
    "getAllRolesResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/RoleDTO"
        }
      }
    },
    "getAnnotationByIDResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Annotation"
      }
    },
    "getAnnotationTagsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/GetAnnotationTagsResponse"
      }
    },
    "getAnnotationsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/Annotation"
        }
      }
    },
    "getCorrelationResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Correlation"
      }
    },
    "getCorrelationsBySourceUIDResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/Correlation"
        }
      }
    },
    "getCorrelationsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/Correlation"
        }
      }
    },
    "getCurrentOrgResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/OrgDetailsDTO"
      }
    },
    "getDashboardPermissionsListResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/DashboardACLInfoDTO"
        }
      }
    },
    "getDashboardSnapshotResponse": {
      "description": "(empty)"
    },
    "getDashboardsTagsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/DashboardTagCloudItem"
        }
      }
    },
    "getDataSourceIDResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "description": "ID Identifier of the data source.",
            "type": "integer",
            "format": "int64",
            "example": 65
          }
        }
      }
    },
    "getDataSourceResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/DataSource"
      }
    },
    "getDataSourcesResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/DataSourceList"
      }
    },
    "getFolderDescendantCountsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/DescendantCounts"
      }
    },
    "getFolderPermissionListResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/DashboardACLInfoDTO"
        }
      }
    },
    "getFoldersResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/FolderSearchHit"
        }
      }
    },
    "getHomeDashboardResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/GetHomeDashboardResponse"
      }
    },
    "getLibraryElementArrayResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/LibraryElementArrayResponse"
      }
    },
    "getLibraryElementConnectionsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/LibraryElementConnectionsResponse"
      }
    },
    "getLibraryElementResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/LibraryElementResponse"
      }
    },
    "getLibraryElementsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/LibraryElementSearchResponse"
      }
    },
    "getLicenseTokenResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Token"
      }
    },
    "getOrgByIDResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/OrgDetailsDTO"
      }
    },
    "getOrgByNameResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/OrgDetailsDTO"
      }
    },
    "getOrgUsersForCurrentOrgLookupResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/UserLookupDTO"
        }
      }
    },
    "getOrgUsersForCurrentOrgResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/OrgUserDTO"
        }
      }
    },
    "getOrgUsersResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/OrgUserDTO"
        }
      }
    },
    "getPendingOrgInvitesResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/TempUserDTO"
        }
      }
    },
    "getPlaylistDashboardsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/PlaylistDashboardsSlice"
      }
    },
    "getPlaylistItemsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/PlaylistItemDTO"
        }
      }
    },
    "getPlaylistResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/PlaylistDTO"
      }
    },
    "getPreferencesResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Preferences"
      }
    },
    "getPublicAnnotationsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/AnnotationEvent"
        }
      }
    },
    "getPublicDashboardResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/PublicDashboard"
      }
    },
    "getQueryHistoryDeleteQueryResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/QueryHistoryDeleteQueryResponse"
      }
    },
    "getQueryHistoryResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/QueryHistoryResponse"
      }
    },
    "getQueryHistorySearchResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/QueryHistorySearchResponse"
      }
    },
    "getQuotaResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/QuotaDTO"
        }
      }
    },
    "getReportResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Report"
      }
    },
    "getReportSettingsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/ReportSettings"
      }
    },
    "getReportsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/Report"
        }
      }
    },
    "getResourcePermissionsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/resourcePermissionDTO"
        }
      }
    },
    "getRoleAssignmentsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/RoleAssignmentsDTO"
      }
    },
    "getRoleResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/RoleDTO"
      }
    },
    "getSSOSettingsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "settings": {
            "type": "object",
            "additionalProperties": {}
          },
          "source": {
            "type": "string"
          }
        }
      }
    },
    "getSharingOptionsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "properties": {
          "externalEnabled": {
            "type": "boolean"
          },
          "externalSnapshotName": {
            "type": "string"
          },
          "externalSnapshotURL": {
            "type": "string"
          }
        }
      }
    },
    "getSignedInUserOrgListResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/UserOrgDTO"
        }
      }
    },
    "getSignedInUserTeamListResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/TeamDTO"
        }
      }
    },
    "getStatusResponse": {
      "description": "(empty)"
    },
    "getSyncStatusResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/ActiveSyncStatusDTO"
      }
    },
    "getTeamByIDResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/TeamDTO"
      }
    },
    "getTeamGroupsApiResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/TeamGroupDTO"
        }
      }
    },
    "getTeamMembersResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/TeamMemberDTO"
        }
      }
    },
    "getUserAuthTokensResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/UserToken"
        }
      }
    },
    "getUserOrgListResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/UserOrgDTO"
        }
      }
    },
    "getUserTeamsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/TeamDTO"
        }
      }
    },
    "helpFlagResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "properties": {
          "helpFlags1": {
            "type": "integer",
            "format": "int64"
          },
          "message": {
            "type": "string"
          }
        }
      }
    },
    "importDashboardResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/ImportDashboardResponse"
      }
    },
    "internalServerError": {
      "description": "InternalServerError is a general error indicating something went wrong internally.",
      "schema": {
        "$ref": "#/definitions/ErrorResponseBody"
      }
    },
    "internalServerPublicError": {
      "description": "InternalServerPublicError is a general error indicating something went wrong internally.",
      "schema": {
        "$ref": "#/definitions/publicError"
      }
    },
    "jwksResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "properties": {
          "keys": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/JSONWebKey"
            }
          }
        }
      }
    },
    "listBuiltinRolesResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "additionalProperties": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RoleDTO"
          }
        }
      }
    },
    "listPublicDashboardsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/PublicDashboardListResponseWithPagination"
      }
    },
    "listRecordingRulesResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/RecordingRuleJSON"
        }
      }
    },
    "listRolesResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/RoleDTO"
        }
      }
    },
    "listSSOSettingsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "provider": {
              "type": "string"
            },
            "settings": {
              "type": "object",
              "additionalProperties": {}
            },
            "source": {
              "type": "string"
            }
          }
        }
      }
    },
    "listSortOptionsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "meta": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      }
    },
    "listTeamsRolesResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "additionalProperties": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RoleDTO"
          }
        }
      }
    },
    "listTokensResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/TokenDTO"
        }
      }
    },
    "listUsersRolesResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "additionalProperties": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RoleDTO"
          }
        }
      }
    },
    "notFoundError": {
      "description": "NotFoundError is returned when the requested resource was not found.",
      "schema": {
        "$ref": "#/definitions/ErrorResponseBody"
      }
    },
    "notFoundPublicError": {
      "description": "NotFoundPublicError is returned when the requested resource was not found.",
      "schema": {
        "$ref": "#/definitions/publicError"
      }
    },
    "okResponse": {
      "description": "An OKResponse is returned if the request was successful.",
      "schema": {
        "$ref": "#/definitions/SuccessResponseBody"
      }
    },
    "postAPIkeyResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/NewApiKeyResult"
      }
    },
    "postAnnotationResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "required": [
          "id",
          "message"
        ],
        "properties": {
          "id": {
            "description": "ID Identifier of the created annotation.",
            "type": "integer",
            "format": "int64",
            "example": 65
          },
          "message": {
            "description": "Message Message of the created annotation.",
            "type": "string"
          }
        }
      }
    },
    "postDashboardResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "required": [
          "status",
          "title",
          "version",
          "id",
          "uid",
          "url"
        ],
        "properties": {
          "folderUid": {
            "description": "FolderUID The unique identifier (uid) of the folder the dashboard belongs to.",
            "type": "string"
          },
          "id": {
            "description": "ID The unique identifier (id) of the created/updated dashboard.",
            "type": "integer",
            "format": "int64",
            "example": 1
          },
          "status": {
            "description": "Status status of the response.",
            "type": "string",
            "example": "success"
          },
          "title": {
            "description": "Slug The slug of the dashboard.",
            "type": "string",
            "example": "my-dashboard"
          },
          "uid": {
            "description": "UID The unique identifier (uid) of the created/updated dashboard.",
            "type": "string",
            "example": "nHz3SXiiz"
          },
          "url": {
            "description": "URL The relative URL for accessing the created/updated dashboard.",
            "type": "string",
            "example": "/d/nHz3SXiiz/my-dashboard"
          },
          "version": {
            "description": "Version The version of the dashboard.",
            "type": "integer",
            "format": "int64",
            "example": 2
          }
        }
      }
    },
    "postRenewLicenseTokenResponse": {
      "description": "(empty)"
    },
    "preconditionFailedError": {
      "description": "PreconditionFailedError",
      "schema": {
        "$ref": "#/definitions/ErrorResponseBody"
      }
    },
    "publicErrorResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/publicError"
      }
    },
    "queryMetricsWithExpressionsRespons": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/QueryDataResponse"
      }
    },
    "queryPublicDashboardResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/QueryDataResponse"
      }
    },
    "receiversResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/receiver"
        }
      }
    },
    "recordingRuleResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/RecordingRuleJSON"
      }
    },
    "recordingRuleWriteTargetResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/PrometheusRemoteWriteTargetJSON"
      }
    },
    "refreshLicenseStatsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/ActiveUserStats"
      }
    },
    "resourcePermissionsDescription": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Description"
      }
    },
    "retrieveServiceAccountResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/ServiceAccountDTO"
      }
    },
    "searchDashboardSnapshotsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/DashboardSnapshotDTO"
        }
      }
    },
    "searchOrgServiceAccountsWithPagingResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/SearchOrgServiceAccountsResult"
      }
    },
    "searchOrgUsersResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/SearchOrgUsersQueryResult"
      }
    },
    "searchOrgsResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/OrgDTO"
        }
      }
    },
    "searchPlaylistsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/Playlists"
      }
    },
    "searchResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/HitList"
      }
    },
    "searchResultResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/SearchResult"
      }
    },
    "searchTeamsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/SearchTeamQueryResult"
      }
    },
    "searchUsersResponse": {
      "description": "(empty)",
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/definitions/UserSearchHitDTO"
        }
      }
    },
    "searchUsersWithPagingResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/SearchUserQueryResult"
      }
    },
    "setRoleAssignmentsResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/RoleAssignmentsDTO"
      }
    },
    "unauthorisedError": {
      "description": "UnauthorizedError is returned when the request is not authenticated.",
      "schema": {
        "$ref": "#/definitions/ErrorResponseBody"
      }
    },
    "unauthorisedPublicError": {
      "description": "UnauthorisedPublicError is returned when the request is not authenticated.",
      "schema": {
        "$ref": "#/definitions/publicError"
      }
    },
    "unprocessableEntityError": {
      "description": "UnprocessableEntityError",
      "schema": {
        "$ref": "#/definitions/ErrorResponseBody"
      }
    },
    "updateCorrelationResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/UpdateCorrelationResponseBody"
      }
    },
    "updatePlaylistResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/PlaylistDTO"
      }
    },
    "updatePublicDashboardResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/PublicDashboard"
      }
    },
    "updateServiceAccountResponse": {
      "description": "(empty)",
      "schema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "message": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "serviceaccount": {
            "$ref": "#/definitions/ServiceAccountProfileDTO"
          }
        }
      }
    },
    "userResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/UserProfileDTO"
      }
    },
    "viewPublicDashboardResponse": {
      "description": "(empty)",
      "schema": {
        "$ref": "#/definitions/DashboardFullWithMeta"
      }
    }
  },
  "securityDefinitions": {
    "api_key": {
      "type": "apiKey",
      "name": "Authorization",
      "in": "header"
    },
    "basic": {
      "type": "basic"
    }
  },
  "security": [
    {
      "basic": []
    },
    {
      "api_key": []
    }
  ],
  "tags": [
    {
      "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, for some endpoints you would need to have relevant permissions. Refer to specific resources to understand what permissions are required.",
      "name": "datasources"
    },
    {
      "description": "Folders are identified by the identifier (id) and the unique identifier (uid).\nThe identifier (id) of a folder is an auto-incrementing numeric value and is only unique per Grafana install.\nThe unique identifier (uid) of a folder can be used for uniquely identify folders between multiple Grafana installs. It’s automatically generated if not provided when creating a folder. The uid allows having consistent URLs for accessing folders and when syncing folders between multiple Grafana installs. This means that changing the title of a folder will not break any bookmarked links to that folder.\nThe uid can have a maximum length of 40 characters.",
      "name": "folders"
    },
    {
      "description": "Permissions with `folderId=-1` are the default permissions for users with the Viewer and Editor roles. Permissions can be set for a user, a team or a role (Viewer or Editor). Permissions cannot be set for Admins - they always have access to everything.",
      "name": "folder_permissions"
    },
    {
      "description": "The Admin HTTP API does not currently work with an API Token. API Tokens are currently only linked to an organization and an organization role. They cannot be given the permission of server admin, only users can be given that permission. So in order to use these API calls you will have to use Basic Auth and the Grafana user must have the Grafana Admin permission. (The default admin user is called admin and has permission to use this API.)",
      "name": "admin"
    },
    {
      "description": "You can use the Alerting API to get information about legacy dashboard alerts and their states but this API cannot be used to modify the alert. To create new alerts or modify them you need to update the dashboard JSON that contains the alerts.\nThis topic is relevant for the legacy dashboard alerts only.\nYou can find Grafana 8 alerts API specification details [here](https://editor.swagger.io/?url=https://raw.githubusercontent.com/grafana/grafana/main/pkg/services/ngalert/api/tooling/post.json).",
      "name": "legacy_alerts"
    },
    {
      "description": "The identifier (id) of a notification channel is an auto-incrementing numeric value and is only unique per Grafana install.\nThe unique identifier (uid) of a notification channel can be used for uniquely identify a notification channel between multiple Grafana installs. It’s automatically generated if not provided when creating a notification channel. The uid allows having consistent URLs for accessing notification channels and when syncing notification channels between multiple Grafana installations, refer to alert notification channel provisioning.\nThe uid can have a maximum length of 40 characters.",
      "name": "legacy_alerts_notification_channels"
    },
    {
      "description": "Grafana Annotations feature released in Grafana 4.6. Annotations are saved in the Grafana database (sqlite, mysql or postgres). Annotations can be organization annotations that can be shown on any dashboard by configuring an annotation data source - they are filtered by tags. Or they can be tied to a panel on a dashboard and are then only shown on that panel.",
      "name": "annotations"
    },
    {
      "description": "The identifier (ID) of a library element is an auto-incrementing numeric value that is unique per Grafana install.\nThe unique identifier (UID) of a library element uniquely identifies library elements between multiple Grafana installs. It’s automatically generated unless you specify it during library element creation. The UID provides consistent URLs for accessing library elements and when syncing library elements between multiple Grafana installs.\nThe maximum length of a UID is 40 characters.",
      "name": "library_elements"
    },
    {
      "description": "The identifier (ID) of a query in query history is an auto-incrementing numeric value that is unique per Grafana install.\nThe unique identifier (UID) of a query history uniquely identifies queries in query history between multiple Grafana installs. It’s automatically generated. The UID provides consistent URLs for accessing queries in query history.",
      "name": "query_history"
    },
    {
      "description": "The Admin Organizations HTTP API does not currently work with an API Token. API Tokens are currently only linked to an organization and an organization role. They cannot be given the permission of server admin, only users can be given that permission. So in order to use these API calls you will have to use Basic Auth and the Grafana user must have the Grafana Admin permission (The default admin user is called `admin` and has permission to use this API).",
      "name": "orgs"
    },
    {
      "description": "If you are running Grafana Enterprise and have Fine-grained access control enabled, for some endpoints you would need to have relevant permissions. Refer to specific resources to understand what permissions are required.",
      "name": "org"
    },
    {
      "description": "This API can be used to create/update/delete Teams and to add/remove users to Teams. All actions require that the user has the Admin role for the organization.",
      "name": "teams"
    },
    {
      "description": "This API can be used to enable, disable, list, add and remove permissions for a data source.\nPermissions can be set for a user or a team. Permissions cannot be set for Admins - they always have access to everything.\nThis is only available in Grafana Enterprise\nIf you are running Grafana Enterprise and have Fine-grained access control enabled, for some endpoints you would need to have relevant permissions. Refer to specific resources to understand what permissions are required.",
      "name": "datasource_permissions"
    },
    {
      "description": "These are only available in Grafana Enterprise",
      "name": "enterprise"
    },
    {
      "description": "The API can be used to create, update, get and list roles, and create or remove built-in role assignments. To use the API, you would need to enable fine-grained access control.\nThis only available in Grafana Enterprise.\nThe API does not currently work with an API Token. So in order to use these API endpoints you will have to use Basic auth.",
      "name": "access_control"
    },
    {
      "description": "Licensing is only available in Grafana Enterprise. Read more about Grafana Enterprise.\nIf you are running Grafana Enterprise and have Fine-grained access control enabled, for some endpoints you would need to have relevant permissions. Refer to specific resources to understand what permissions are required.",
      "name": "licensing"
    },
    {
      "description": "This API allows you to interact programmatically with the Reporting feature.\nReporting is only available in Grafana Enterprise. Read more about Grafana Enterprise.\nIf you have Fine-grained access Control enabled, for some endpoints you would need to have relevant permissions. Refer to specific resources to understand what permissions are required.",
      "name": "reports"
    },
    {
      "description": "Grafana Alerting Alertmanager-compatible endpoints",
      "name": "alertmanager"
    },
    {
      "description": "Grafana Alerting endpoints for managing rules",
      "name": "ruler"
    },
    {
      "description": "Grafana Alerting testing endpoints",
      "name": "testing"
    },
    {
      "description": "Grafana Alerting Prometheus-compatible endpoints",
      "name": "prometheus"
    },
    {
      "description": "If you are running Grafana Enterprise, for some endpoints you'll need to have specific permissions. Refer to [Role-based access control permissions](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/custom-role-actions-scopes/) for more information.",
      "name": "service_accounts"
    }
  ]
}
back to top