{
  "openapi": "3.0.3",
  "info": {
    "title": "API Publica Portal",
    "version": "2.0.0",
    "description": "API pública REST para portal"
  },
  "servers": [
    {
      "url": "https://api.flexxible.net",
      "description": "Portal API (production)"
    }
  ],
  "tags": [
    {
      "name": "Atividade digital",
      "description": "Criação de grupos de processos principais por organização"
    },
    {
      "name": "Roles",
      "description": "Endpoint de creacion de roles de organizacion"
    },
    {
      "name": "Usuarios",
      "description": "Endpoint de creacion de usuarios de organizacion"
    },
    {
      "name": "Grupos de workspaces",
      "description": "Endpoints de gestión de grupos de workspaces"
    },
    {
      "name": "Workspaces",
      "description": "Endpoint de eliminacion de workspaces de la organizacion"
    },
    {
      "name": "Aplicaciones instaladas",
      "description": "Endpoint de detalle de aplicación instalada de la organización"
    },
    {
      "name": "Autenticación",
      "description": "Endpoints de autenticación y contexto de sesión"
    },
    {
      "name": "Microservicios",
      "description": "Detalle de microservicios por organizacion"
    },
    {
      "name": "Operaciones",
      "description": "Consulta de detalle de operaciones por organización"
    },
    {
      "name": "Organización",
      "description": "Operaciones de organización"
    },
    {
      "name": "Objetivos de política de parches",
      "description": "Endpoints de gestión de objetivos de política de parches"
    },
    {
      "name": "Configuraciones de producto",
      "description": "Endpoints de gestión de configuraciones de producto"
    },
    {
      "name": "Grupos de reporte",
      "description": "Operaciones sobre grupos de reporte"
    },
    {
      "name": "Sesiones",
      "description": "Endpoint de detalle de sesion de la organizacion"
    },
    {
      "name": "Tenants",
      "description": "Endpoints de gestión de tenants"
    }
  ],
  "paths": {
    "/v2/organizations/{organization_id}/digital-activity/core-process-groups": {
      "post": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Criar grupo de processos core",
        "operationId": "createDigitalActivityCoreProcessGroup",
        "description": "Crie um grupo de processos principais na organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDigitalActivityCoreProcessGroupRequestV2"
              },
              "examples": {
                "create_with_description": {
                  "summary": "Criar grupo com descrição",
                  "value": {
                    "name": "Grupo base de productividad",
                    "description": "Grupo principal para procesos de productividad",
                    "workspace_group_id": "64f0c2a1b2d3e4f506070822"
                  }
                },
                "create_without_description": {
                  "summary": "Criar grupo sem descrição",
                  "value": {
                    "name": "Grupo de edición",
                    "workspace_group_id": "64f0c2a1b2d3e4f506070823"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Grupo de processos principais criado com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDigitalActivityCoreProcessGroupResponseV2"
                },
                "examples": {
                  "created": {
                    "summary": "Recurso criado",
                    "value": {
                      "id": "64f0c2a1b2d3e4f506070811",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "name": "Grupo base de productividad",
                      "description": "Grupo principal para procesos de productividad",
                      "workspace_group_id": "64f0c2a1b2d3e4f506070822"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Solicitação inválida.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_body": {
                    "summary": "Corpo de solicitação inválido",
                    "value": {
                      "error": {
                        "message": "Cuerpo de solicitud inválido",
                        "code": "bad_request",
                        "details": "name y workspace_group_id son obligatorios y deben cumplir el formato esperado."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso relacionado não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflito de negócio para a criação do recurso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "duplicate_name": {
                    "summary": "Nome já registrado",
                    "value": {
                      "error": {
                        "message": "Ya existe un grupo de procesos core con ese nombre",
                        "code": "core_process_group_name_already_exists"
                      }
                    }
                  },
                  "workspace_group_already_assigned": {
                    "summary": "Grupo de workspaces já atribuído",
                    "value": {
                      "error": {
                        "message": "El grupo de workspaces ya está asignado a otro grupo de procesos core",
                        "code": "core_process_group_workspace_group_already_assigned"
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Listar grupos de processos core",
        "operationId": "listDigitalActivityCoreProcessGroups",
        "description": "Devolve uma lista paginada de grupos de processos principais da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Campos de resposta separados por vírgulas para cada elemento.",
            "example": "id,name,workspace_group_id"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão JSON de filtros sobre campos filtráveis do recurso.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"core\"}"
              },
              "complex-and": {
                "summary": "Filtrar por organização e grupo",
                "value": "{\"and\":[{\"field\":\"organization_id\",\"op\":\"eq\",\"value\":\"507f1f77bcf86cd799439011\"},{\"field\":\"workspace_group_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070822\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070811\"},{\"field\":\"workspace_group_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070823\"}]},{\"field\":\"name\",\"op\":\"contains\",\"value\":\"group\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação no formato <field>:asc|desc. No modo agregado, só aceita campos de `group_by` ou aliases agregados (`count`, `<function>_<field>`).",
            "example": "organization_id:asc"
          },
          {
            "name": "aggregate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 1024
            },
            "description": "Expressão JSON de agregação com `group_by` e `aggregates`.",
            "examples": {
              "group-by-workspace-group-count": {
                "summary": "Agrupar por grupo de workspaces e contar",
                "value": "{\"group_by\":[\"workspace_group_id\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}"
              },
              "group-by-organization-avg": {
                "summary": "Agrupar por organização e calcular média",
                "value": "{\"group_by\":[\"organization_id\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"},{\"field\":\"id\",\"function\":\"min\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Grupos de processos principais recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDigitalActivityCoreProcessGroupsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com resultados",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f506070811",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "name": "Grupo de procesos core A",
                          "description": "Grupo principal de procesos de productividad",
                          "workspace_group_id": "64f0c2a1b2d3e4f506070822"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no válido",
                        "code": "bad_request",
                        "details": "El parámetro filters debe ser una cadena JSON válida."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/flows": {
      "post": {
        "tags": [
          "Fluxos"
        ],
        "summary": "Criar um fluxo",
        "operationId": "createFlow",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "en-EN",
                "es-ES",
                "pt-BR",
                "ca-ES",
                "eu-ES"
              ],
              "default": "es-ES"
            },
            "description": "Código de idioma para campos de texto que suportam vários idiomas. Ao criar ou atualizar recursos, isso especifica o idioma dos valores de texto fornecidos. Ao recuperar recursos, isso determina qual variante de idioma dos campos de texto multilíngues será retornada. Valores aceitos: 'en-EN' (inglês), 'es-ES' (espanhol), 'pt-BR' (português), 'ca-ES' (catalão), 'eu-ES' (basco). O valor padrão é 'es-ES' se não for fornecido."
          }
        ],
        "responses": {
          "201": {
            "description": "Fluxo criado corretamente. A resposta contém o recurso criado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowV2"
                },
                "example": {
                  "id": "507f1f77bcf86cd799439011"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta. Causas comuns: - Campos obrigatórios em falta - Valores de campo inválidos - Configuração de condição inválida - Identificador de microserviço inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Organização não encontrada"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity",
            "description": "Entidade não processável. Causas comuns: - Microserviço referenciado não encontrado - Entidades alvo referenciadas (workspaces, grupos de Workspace, grupos de relatório) não encontradas ou não pertencentes - Tipo de condição inválido - O fluxo não pode ser habilitado"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFlowV2Request"
              },
              "examples": {
                "create-workspace-flow": {
                  "summary": "Criar um fluxo voltado para workspaces específicos",
                  "value": {
                    "name": {
                      "en-EN": "Daily Backup Flow",
                      "es-ES": "Proceso de copia diaria"
                    },
                    "description": {
                      "en-EN": "Automated daily backup process",
                      "es-ES": "Proceso automatizado de copia de seguridad diaria"
                    },
                    "type": "workspace",
                    "detection_only": false,
                    "cooldown_minutes": 60,
                    "enabled": false,
                    "init_text": {
                      "en-EN": "Starting backup process...",
                      "es-ES": "Iniciando proceso de copia..."
                    },
                    "ok_text": {
                      "en-EN": "Backup completed successfully",
                      "es-ES": "Copia completada correctamente"
                    },
                    "ko_text": {
                      "en-EN": "Backup failed. Please check logs.",
                      "es-ES": "Copia fallida. Revise los registros."
                    },
                    "target": {
                      "type": "workspaces",
                      "ids": [
                        "507f1f77bcf86cd799439012",
                        "507f1f77bcf86cd799439013"
                      ]
                    },
                    "microservice_id": "507f1f77bcf86cd799439014",
                    "conditions": [
                      {
                        "condition_type_id": "507f1f77bcf86cd799439015",
                        "operator": "gt",
                        "compare_to": "80",
                        "check_every": 300
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "description": "Cria um novo fluxo de automação para a organização especificada. O fluxo define a lógica de execução, as condições e os workspaces alvo. Devolve os dados do fluxo criado após uma criação bem sucedida."
      },
      "get": {
        "tags": [
          "Fluxos"
        ],
        "summary": "Listar fluxos",
        "operationId": "listFlows",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            },
            "description": "Número da página (padrão: 1)"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Campo de ordenação com sufixo de ordem opcional (:asc ou :desc), por exemplo, \"name\", \"name:asc\", \"cooldown_minutes:desc\". Usa ordem ascendente por padrão se não fornecido sufixo. Campos de ordenação válidos: id, name, description, type, detection_only, cooldown_minutes, enabled, init_text, ok_text, ko_text"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Lista separada por vírgulas de campos a serem incluídos em cada elemento de fluxo. Campos selecionáveis: id, name, description, type, detection_only, cooldown_minutes, enabled. O campo id sempre é incluído.",
            "example": "name,description,enabled"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120,
              "pattern": "^.*$"
            },
            "description": "Filtra fluxos por um ou mais critérios. Fornece um objeto JSON com condições de filtro. Você pode filtrar por: id, name, description, type, detection_only, cooldown_minutes, enabled, init_text, ok_text, ko_text. Usa operadores de comparação (eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, endsWith, between) e combina múltiplas condições com operadores lógicos (and, or). Tamanho máximo: 5120 caracteres.",
            "examples": {
              "simple": {
                "summary": "Filtrar por fluxos habilitados",
                "description": "Retorna apenas fluxos habilitados.",
                "value": "{\"field\": \"enabled\", \"op\": \"eq\", \"value\": true}"
              },
              "complex-and": {
                "summary": "Filtrar por tipo e modo de detecção",
                "description": "Retorna fluxos SESSION que não são apenas de detecção.",
                "value": "{\"and\": [{\"field\": \"type\", \"op\": \"eq\", \"value\": \"SESSION\"}, {\"field\": \"detection_only\", \"op\": \"eq\", \"value\": false}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "description": "Coincidir com múltiplos campos de texto e requer fluxos habilitados.",
                "value": "{\"and\": [{\"or\": [{\"field\": \"name\", \"op\": \"contains\", \"value\": \"backup\"}, {\"field\": \"description\", \"op\": \"contains\", \"value\": \"backup\"}]}, {\"field\": \"enabled\", \"op\": \"eq\", \"value\": true}]}"
              }
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 100,
              "minimum": 1
            },
            "description": "Número de itens por página"
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "en-EN",
                "es-ES",
                "pt-BR",
                "ca-ES",
                "eu-ES"
              ],
              "default": "es-ES"
            },
            "description": "Código de idioma para campos de texto que suportam múltiplos idiomas. Ao criar ou atualizar recursos, isso especifica o idioma dos valores de texto fornecidos. Ao recuperar recursos, isso determina qual variante de idioma dos campos de texto multilíngues é devolvida. Valores aceitos: 'en-EN' (inglês), 'es-ES' (espanhol), 'pt-BR' (português), 'ca-ES' (catalão), 'eu-ES' (euskera). Usa 'es-ES' por padrão se não fornecido."
          }
        ],
        "responses": {
          "200": {
            "description": "Lista paginada de fluxos recuperada corretamente. A resposta inclui metadados de paginação e o conjunto de dados de fluxos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowListItemV2ListResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Causas comuns: - Parâmetros de paginação inválidos - Parâmetro de ordenação inválido - Parâmetros de filtro inválidos"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Organização não encontrada"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera uma lista paginada de fluxos pertencentes à organização especificada. Suporta filtração, ordenação e pesquisa nas propriedades dos fluxos. Os resultados são devolvidos em páginas com metadados de paginação."
      }
    },
    "/v2/organizations/{organization_id}/operations": {
      "post": {
        "tags": [
          "Operações"
        ],
        "summary": "Criar operações",
        "operationId": "createOperations",
        "description": "Cria uma ou várias operações com base no escopo e objetivos enviados.\n\nTipos de operação atualmente disponíveis: `execute_microservice`, `delete_workspaces`, `shutdown_workspaces` e `restart_workspaces`.\n\nRetorna os recursos de operação criados com o mesmo contrato canônico de consulta por id.\n\n**Compatibilidade de parâmetros para `execute_microservice`**\n\n`payload.parameters` só se aplica a execuções de microsserviços PowerShell no Windows e é suportado apenas em dispositivos com o novo agente instalado.\n\nOs valores enviados em `payload.parameters` são transmitidos como texto (`string`). A interpretação de tipos depende da definição de parâmetros e do parser implementado no script do microsserviço.\n\nPara esse contexto, tipos de dados de parâmetros recomendados:\n\n- `string`, `integer`, `double`, `decimal` e `datetime`.\n- Para `double` e `decimal`, use a notação com ponto decimal (`.`).\n- Para `datetime`, use o formato ISO 8601 (por exemplo: `2026-07-09T10:30:00Z`).\n- Ao ser executado no destino, os valores `datetime` podem ser representados em hora local.\n- A execução correta também depende da qualidade e validações do script.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOperationV2Request"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Operações criadas com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateOperationV2Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      },
      "get": {
        "tags": [
          "Operações"
        ],
        "summary": "Listar operações",
        "operationId": "get_operations",
        "description": "Retorna uma lista paginada de operações da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Campos de resposta separados por vírgulas para cada elemento.",
            "example": "id,organization_id,name,description,status,created_at"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão JSON de filtros sobre campos filtráveis do recurso.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"remote\"}"
              },
              "complex-and": {
                "summary": "Filtrar por estado e descrição",
                "value": "{\"and\":[{\"field\":\"status\",\"op\":\"eq\",\"value\":\"finished\"},{\"field\":\"description\",\"op\":\"contains\",\"value\":\"remote\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"microservice_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070833\"},{\"field\":\"flow_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070844\"}]},{\"field\":\"status\",\"op\":\"eq\",\"value\":\"pending\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação no formato <field>:asc|desc. No modo agregado, só aceita campos de `group_by` ou aliases agregados (`count`, `<function>_<field>`).",
            "example": "created_at:desc"
          },
          {
            "name": "aggregate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 1024
            },
            "description": "Expressão JSON para agregação. Estrutura: {\"group_by\":[\"field\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}. Não pode ser combinado com `fields`.",
            "examples": {
              "group-by-status-count": {
                "summary": "Agrupar por estado e contar",
                "value": "{\"group_by\":[\"status\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}"
              },
              "group-by-organization-count": {
                "summary": "Agrupar por organização e contar",
                "value": "{\"group_by\":[\"organization_id\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operações recuperadas corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOperationsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com resultados",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f506070811",
                          "organization_id": "507f1f77bcf86cd799439022",
                          "name": "remote_assistance",
                          "description": "Remote assistance operation",
                          "status": "finished",
                          "created_at": "2026-03-10T09:11:45Z",
                          "started_at": "2026-03-10T09:12:00Z",
                          "ended_at": "2026-03-10T09:15:17Z",
                          "microservice_id": "64f0c2a1b2d3e4f506070833",
                          "flow_id": "64f0c2a1b2d3e4f506070844",
                          "remote_support": {
                            "start_date": "2026-03-10T09:12:00Z",
                            "end_date": "2026-03-10T09:15:17Z",
                            "type": "unattended"
                          }
                        }
                      ]
                    }
                  },
                  "aggregated_by_status": {
                    "summary": "Resultado agregado por estado",
                    "value": {
                      "has_next": false,
                      "data": [
                        {
                          "status": "finished",
                          "count": 12
                        },
                        {
                          "status": "pending",
                          "count": 5
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no válido",
                        "code": "bad_request",
                        "details": "El parámetro filters debe ser una cadena JSON válida."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/magic-links": {
      "post": {
        "tags": [
          "Grupos de relatório"
        ],
        "summary": "Criar um link mágico para download do agente",
        "operationId": "createReportingGroupMagicLink",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "reporting_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do Grupo de relatório",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReportingGroupMagicLinkRequestV2"
              },
              "examples": {
                "default-installer": {
                  "summary": "Criar link mágico usando valores estritos do instalador",
                  "value": {
                    "expires_at": "2026-03-15T12:00:00.000Z",
                    "installer": {
                      "version": "latest",
                      "platform": "windows",
                      "arch": "x64",
                      "type": "fxxone"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Link mágico criado corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateReportingGroupMagicLinkResponseV2"
                },
                "examples": {
                  "created-magic-link": {
                    "summary": "Resposta de link mágico criado",
                    "value": {
                      "id": "507f1f77bcf86cd799439099",
                      "token": "2ab46558-3c40-4b72-8fce-08b7b596f624",
                      "link": "https://portal.example.com/magic-link?key=2ab46558-3c40-4b72-8fce-08b7b596f624"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta: parâmetros de rota, corpo de requisição ou formato de data-hora inválidos."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado: é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de relatório não encontrado"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity",
            "description": "Entidade não processável: a validação de negócio falhou (por exemplo, uma expiração fora do intervalo permitido)."
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Cria um link mágico para baixar o instalador do agente em um grupo de relatórios. Esta funcionalidade está disponível apenas para o produto FXXOne. Entre em contato com a equipe da Flexxible para mais informações."
      }
    },
    "/v2/organizations/{organization_id}/reporting-groups": {
      "post": {
        "tags": [
          "Grupos de relatório"
        ],
        "summary": "Criar um grupo de relatórios",
        "operationId": "createReportingGroup",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          }
        ],
        "responses": {
          "201": {
            "description": "Grupo de relatório criado corretamente. A resposta contém o recurso criado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportingGroupByIdV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta. Causas comuns: - Campos obrigatórios em falta (name, product_config_id) - Valores de campo inválidos - Formato de ID inválido para campos product_config_id, patch_policy_target_id ou intermediate_device_*_id - Valor de fishing_pattern_field inválido (deve ser um dos: full_name, description, ou, current_subnet) - Valor de fishing_pattern inválido (excede maxLength: 250) - Dispositivos intermediários não definidos sequencialmente (intermediate_device_2_id requer intermediate_device_1_id, intermediate_device_3_id requer intermediate_device_2_id)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Organização não encontrada"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity",
            "description": "Entidade não processável. Causas comuns: - A configuração de produto não foi encontrada ou não pertence à organização - Os IDs de Workspace de dispositivos intermediários não existem ou não pertencem à organização"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReportingGroupRequestV2"
              },
              "examples": {
                "create-reporting-group-with-minimal-fields": {
                  "summary": "Criar um grupo de relatório apenas com os campos obrigatórios",
                  "value": {
                    "name": "Grupo de reporte de Producción",
                    "product_config_id": "507f1f77bcf86cd799439030"
                  }
                },
                "create-reporting-group-with-all-fields": {
                  "summary": "Criar um grupo de relatório com todos os campos disponíveis, incluindo dispositivos intermediários",
                  "value": {
                    "name": "Grupo de reporte de Desarrollo",
                    "product_config_id": "507f1f77bcf86cd799439030",
                    "patch_policy_target_id": "507f1f77bcf86cd799439040",
                    "fishing_pattern": "Estaciones de trabajo Windows",
                    "fishing_pattern_field": "full_name",
                    "intermediate_device_1_id": "507f1f77bcf86cd799439050",
                    "intermediate_device_2_id": "507f1f77bcf86cd799439051",
                    "intermediate_device_3_id": "507f1f77bcf86cd799439052"
                  }
                },
                "create-reporting-group-with-single-intermediate-device": {
                  "summary": "Criar um grupo de relatório apenas com o primeiro dispositivo intermediário",
                  "value": {
                    "name": "Grupo de reporte de dispositivo único",
                    "product_config_id": "507f1f77bcf86cd799439030",
                    "intermediate_device_1_id": "507f1f77bcf86cd799439050"
                  }
                }
              }
            }
          }
        },
        "description": "Cria um novo grupo de relatório para a organização especificada. Os grupos de relatório são usados para organizar e gerenciar configurações de dispositivos, ajustes de produto e políticas de patches. Você pode configurar opcionalmente dispositivos intermediários (até 3) fornecendo identificadores de workspace. Dispositivos intermediários são usados para ações de Wake on LAN em redes seguras, permitindo o ligamento remoto de dispositivos através de gateways intermediários. Dispositivos intermediários devem ser definidos sequencialmente: você não pode definir intermediate_device_2_id sem intermediate_device_1_id, nem intermediate_device_3_id sem intermediate_device_2_id. Todos os IDs de Workspace de dispositivos intermediários devem existir e pertencer à organização. Retorna o ID do grupo de relatório criado após uma criação bem-sucedida."
      },
      "get": {
        "tags": [
          "Grupos de relatório"
        ],
        "summary": "Listar grupos de relatórios",
        "operationId": "listReportingGroups",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Número da página (padrão: 1)"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Campo de ordenação com sufixo de ordem opcional (:asc ou :desc). Campos de ordenação válidos: name, organization_id, product_config_id, fishing_pattern, fishing_pattern_field, patch_policy_target_id, policy_reporting_group, overridden_agent_settings.*, effective_agent_settings.*, execute_flexx_analyzer_agent, can_manage_agent_versions, intermediate_device_1_id, intermediate_device_2_id, intermediate_device_3_id. É ascendente por padrão se não for fornecido sufixo."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Lista separada por vírgulas com campos para incluir em cada elemento de grupo de relatório. Campos selecionáveis: id, name, organization_id, product_config_id, fishing_pattern, fishing_pattern_field, patch_policy_target_id, policy_reporting_group, overridden_agent_settings, effective_agent_settings, execute_flexx_analyzer_agent, can_manage_agent_versions, flexx_agent_portal_download, intermediate_device_1_id, intermediate_device_2_id, intermediate_device_3_id. O campo id sempre é incluído.",
            "example": "name,effective_agent_settings,execute_flexx_analyzer_agent"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120,
              "description": "Filtra grupos de relatório usando um objeto JSON. Especifica o campo a filtrar, o operador de comparação e o valor. Exemplo: {\"field\": \"name\", \"op\": \"eq\", \"value\": \"Grupo de relatório 1\"}",
              "example": "{\"field\": \"name\", \"op\": \"eq\", \"value\": \"Grupo de reporte 1\"}"
            },
            "description": "Filtra grupos de relatório por um ou mais critérios. Fornece uma cadeia JSON com AST de filtros. Filtra por qualquer campo retornado na resposta. Para campos aninhados usa notação de ponto: overridden_agent_settings.remote_support, effective_agent_settings.remote_support, effective_agent_settings.uninstall_protection, etc. Operadores: eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, endsWith, between. Combina com and/or. Tamanho máximo: 5120 caracteres.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome do grupo de relatório",
                "description": "Retorna grupos de relatório cujo nome contém o texto fornecido.",
                "value": "{\"field\": \"name\", \"op\": \"contains\", \"value\": \"producción\"}"
              },
              "complex-and": {
                "summary": "Filtrar por configuração aninhada e bandeira de execução",
                "description": "Retorna grupos onde a proteção contra desinstalação está desativada e a execução do analisador está habilitada.",
                "value": "{\"and\": [{\"field\": \"effective_agent_settings.uninstall_protection\", \"op\": \"eq\", \"value\": \"off\"}, {\"field\": \"execute_flexx_analyzer_agent\", \"op\": \"eq\", \"value\": true}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "description": "Coincidir com múltiplos padrões de nome e requer suporte remoto interativo.",
                "value": "{\"and\": [{\"or\": [{\"field\": \"name\", \"op\": \"contains\", \"value\": \"prod\"}, {\"field\": \"name\", \"op\": \"contains\", \"value\": \"stage\"}]}, {\"field\": \"effective_agent_settings.remote_support\", \"op\": \"eq\", \"value\": \"INTERACTIVE\"}]}"
              }
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 100,
              "minimum": 1
            },
            "description": "Número de itens por página"
          }
        ],
        "responses": {
          "200": {
            "description": "Lista paginada de grupos de relatório recuperada corretamente. A resposta inclui metadados de paginação e o conjunto de dados de grupos de relatório.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportingGroupListItemV2ListResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Causas comuns: - Parâmetros de paginação inválidos - Parâmetro de ordenação inválido - Parâmetros de filtro inválidos"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Organização não encontrada"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera uma lista paginada de grupos de relatório que pertencem à organização especificada. Suporta filtragem e ordenação sobre propriedades dos grupos de relatório. Os filtros são fornecidos como uma cadeia JSON seguindo a estrutura AST de FilterNode. Os resultados são devolvidos em páginas com metadados de paginação."
      }
    },
    "/v2/organizations/{organization_id}/roles": {
      "post": {
        "tags": [
          "Funções"
        ],
        "summary": "Criar um papel",
        "operationId": "create_role",
        "description": "Crie um papel e suas entradas de permissões em uma única solicitação.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador de organização.",
            "example": "507f1f77bcf86cd799439011"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRoleRequestV2"
              },
              "examples": {
                "organization_scoped_role": {
                  "summary": "Criar papel com permissão com escopo de organização",
                  "value": {
                    "name": "Operador de organizacion",
                    "permissions": [
                      {
                        "portal_permission": "organization_admin",
                        "workspaces_permission": "admin_read_only",
                        "analyzer_permission": "access",
                        "target_organization": "507f1f77bcf86cd799439011",
                        "target_reporting_groups": [
                          "64f0c2a1b2d3e4f5060708c1",
                          "64f0c2a1b2d3e4f5060708c2"
                        ]
                      }
                    ]
                  }
                },
                "mixed_permissions_role": {
                  "summary": "Criar papel com escopos de permissões mistos",
                  "value": {
                    "name": "Soporte de nivel 1",
                    "permissions": [
                      {
                        "portal_permission": "l1_support_team",
                        "workspaces_permission": "l1_support_team",
                        "analyzer_permission": "no_access",
                        "target_organization": "all",
                        "target_reporting_groups": "all"
                      },
                      {
                        "portal_permission": "l1_support_team_read_only",
                        "workspaces_permission": "l1_support_team_read_only",
                        "analyzer_permission": "access",
                        "target_organization": "507f1f77bcf86cd799439011",
                        "target_reporting_groups": [
                          "64f0c2a1b2d3e4f5060708d1"
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Papel de usuário criado com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleV2"
                },
                "examples": {
                  "created": {
                    "summary": "Papel criado",
                    "value": {
                      "id": "64f0c2a1b2d3e4f5060708aa",
                      "name": "Operador de organizacion",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "created_at": "2026-03-12T10:30:00Z",
                      "created_by": "64f0c2a1b2d3e4f5060708bb",
                      "permissions": [
                        {
                          "portal_permission": "organization_admin",
                          "workspaces_permission": "admin_read_only",
                          "analyzer_permission": "access",
                          "target_organization": "507f1f77bcf86cd799439011",
                          "target_reporting_groups": [
                            "64f0c2a1b2d3e4f5060708c1",
                            "64f0c2a1b2d3e4f5060708c2"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Carga útil de solicitação não válida.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_permission_payload": {
                    "summary": "A carga útil de permissões não é válida",
                    "value": {
                      "error": {
                        "message": "Cuerpo de solicitud no valido",
                        "code": "bad_request",
                        "details": "permissions[0].target_organization debe ser `all` o una cadena hexadecimal en minusculas de 24 caracteres"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso referenciado não encontrado dentro do escopo da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "reporting_group_not_found": {
                    "summary": "Grupo de relatório referenciado não encontrado",
                    "value": {
                      "error": {
                        "message": "Grupo de reporte no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "A solicitação entra em conflito com um recurso existente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "role_name_already_exists": {
                    "summary": "O nome do papel já existe",
                    "value": {
                      "error": {
                        "message": "El nombre del rol ya existe",
                        "code": "conflict",
                        "details": "name ya esta en uso dentro de esta organizacion"
                      }
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "A solicitação não pode ser concluída devido a restrições de limite de entidade da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_entity_limit_exceeded": {
                    "summary": "Limite de papéis excedido",
                    "value": {
                      "error": {
                        "message": "Entity ownership limit exceeded.",
                        "code": "unprocessable_entity"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Funções"
        ],
        "summary": "Listar papéis",
        "operationId": "get_roles",
        "description": "Retorna uma lista paginada de papéis disponíveis dentro do escopo da organização.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes dos campos do item de resposta, separados por vírgulas, a serem incluídos."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtros JSON sobre caminhos de campos filtráveis da resposta.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome do papel",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"administrador\"}"
              },
              "complex-and": {
                "summary": "Filtrar por tokens combinados do nome do papel",
                "value": "{\"and\":[{\"field\":\"name\",\"op\":\"contains\",\"value\":\"organización\"},{\"field\":\"name\",\"op\":\"contains\",\"value\":\"administrador\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"name\",\"op\":\"contains\",\"value\":\"administrador\"},{\"field\":\"name\",\"op\":\"contains\",\"value\":\"operador\"}]},{\"field\":\"name\",\"op\":\"contains\",\"value\":\"rol\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(id|organization_id|name|created_at|created_by):(asc|desc)$"
            },
            "description": "Expressão de orden no formato <field>:asc|desc."
          }
        ],
        "responses": {
          "200": {
            "description": "Papéis recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRolesResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com papéis",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f5060708aa",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "name": "Administrador de la organización",
                          "created_at": "2026-03-12T10:30:00Z",
                          "created_by": "64f0c2a1b2d3e4f5060708bb",
                          "permissions": [
                            {
                              "portal_permission": "organization_admin",
                              "workspaces_permission": "admin",
                              "analyzer_permission": "access",
                              "target_organization": "all",
                              "target_reporting_groups": [
                                "64f0c2a1b2d3e4f5060708c1"
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Nenhum papel encontrado",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros inválido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON válida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "O recurso solicitado não foi encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "resource_not_found": {
                    "summary": "Não se encontrou o recurso solicitado",
                    "value": {
                      "error": {
                        "message": "No encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/tenants": {
      "post": {
        "tags": [
          "Locatários"
        ],
        "summary": "Criar um tenant",
        "operationId": "createTenant",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização proprietária que criará o tenant",
            "example": "507f1f77bcf86cd799439011"
          }
        ],
        "responses": {
          "201": {
            "description": "Tenant e organização associados criados corretamente. Retorna o recurso tenant criado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantByIdV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Causas comuns: - Corpo de solicitação ou parâmetros de rota inválidos - Configurações exclusivas misturadas (`tenant_config` e `organization_config`) - Campos obrigatórios ausentes para o tipo selecionado - Formato de id inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Organização proprietária não encontrada"
          },
          "422": {
            "description": "Entidade não processável - Erro de validação de lógica de negócio. Causas comuns: - Configuração do produto não encontrada - A organização não é elegível para criar tenants - A organização não existe em build - A organização não tem produtos elegíveis - Relação de parceiro inválida - A organização e a organização mãe são clientes finais - Entidade referenciada não encontrada",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTenantRequestV2"
              },
              "examples": {
                "create-tenant-end-customer": {
                  "summary": "Criar tenant para organização CLIENTE FINAL",
                  "value": {
                    "type": "tenant",
                    "name": "Tenant de producción",
                    "tenant_config": {
                      "product_config_id": "507f1f77bcf86cd799439030",
                      "analyzer": "existing"
                    },
                    "policy_id": "507f1f77bcf86cd799439050",
                    "organization_email": "tenant@example.com",
                    "organization_language": "en",
                    "organization_country": "US",
                    "organization_industry": "Tecnología"
                  }
                },
                "create-tenant-partner-or-wholesaler": {
                  "summary": "Criar tenant para organização PARCEIRO ou ATACADISTA",
                  "value": {
                    "type": "organization",
                    "name": "Tenant empresarial",
                    "organization_config": {
                      "product_id": "507f1f77bcf86cd799439030",
                      "region": "west-eu-01_one"
                    },
                    "policy_id": "507f1f77bcf86cd799439050",
                    "organization_email": "enterprise@example.com",
                    "organization_language": "es",
                    "organization_country": "ES",
                    "organization_industry": "Finanzas"
                  }
                }
              }
            }
          }
        },
        "description": "Cria um novo tenant e uma organização associada para a organização proprietária especificada. O corpo da solicitação usa um discriminador `type` com rotas exclusivas: `tenant` (CLIENTE FINAL) e `organization` (PARCEIRO/ATACADISTA)."
      },
      "get": {
        "tags": [
          "Locatários"
        ],
        "summary": "Listar locatários",
        "operationId": "listTenants",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página (padrão: 1)"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 100,
              "minimum": 1
            },
            "description": "Número de itens por página"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Campo de ordenação com sufixo opcional de ordem (:asc ou :desc), por exemplo, \"name\", \"name:asc\", \"created_at:desc\". Usa ordem ascendente por padrão se não houver sufixo. Campos válidos: id, created_at, name, region, product_id, policy_id"
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Lista separada por vírgulas de campos a incluir em cada elemento de tenant. Campos selecionáveis: id, organization_id, created_at, name, region, product_id, policy_id. O campo id sempre é incluído.",
            "example": "name,region,product_id"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120,
              "description": "Filtra tenants usando um objeto JSON. Especifica o campo a filtrar, o operador de comparação e o valor. Exemplo: {\"field\": \"name\", \"op\": \"eq\", \"value\": \"Tenant 1\"}",
              "example": "{\"field\": \"name\", \"op\": \"eq\", \"value\": \"Tenant 1\"}"
            },
            "description": "Filtra tenants por um ou mais critérios. Fornece um objeto JSON com condições de filtro. Pode filtrar por qualquer campo retornado na resposta. Use operadores de comparação (eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, endsWith, between) e combine várias condições com operadores lógicos (and, or). Comprimento máximo: 5120 caracteres.",
            "examples": {
              "simple": {
                "summary": "Filtro simples",
                "description": "Filtre tenants por nome que contém texto.",
                "value": "{\"field\": \"name\", \"op\": \"contains\", \"value\": \"production\"}"
              },
              "complex-and": {
                "summary": "Filtro complexo com E",
                "description": "Filtre tenants por região e produto ao mesmo tempo.",
                "value": "{\"and\": [{\"field\": \"region\", \"op\": \"eq\", \"value\": \"us-east\"}, {\"field\": \"product_id\", \"op\": \"eq\", \"value\": \"507f1f77bcf86cd799439030\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "description": "Corresponde a múltiplas regiões e aplica uma restrição de nome.",
                "value": "{\"and\": [{\"or\": [{\"field\": \"region\", \"op\": \"eq\", \"value\": \"us-east\"}, {\"field\": \"region\", \"op\": \"eq\", \"value\": \"eu-west\"}]}, {\"field\": \"name\", \"op\": \"contains\", \"value\": \"tenant\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista paginada de tenants recuperada com sucesso. A resposta inclui a bandeira de paginação e o array de dados de tenants.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantListItemV2ListResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Causas comuns: - Parâmetros de paginação inválidos - Parâmetro de ordenação inválido - Parâmetros de filtro inválidos"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Organização não encontrada"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera uma lista paginada de tenants que pertencem à organização especificada. Suporta filtragem e ordenação sobre propriedades do tenant. Os filtros são fornecidos como uma cadeia JSON que segue a estrutura AST de FilterNode. Os resultados são retornados em páginas com metadados de paginação."
      }
    },
    "/v2/organizations/{organization_id}/users": {
      "post": {
        "tags": [
          "Usuários"
        ],
        "summary": "Criar um usuário",
        "operationId": "create_user",
        "description": "Crie um novo usuário dentro do escopo da organização.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserRequestV2"
              },
              "examples": {
                "standard_user": {
                  "summary": "Criar um usuário padrão",
                  "value": {
                    "name": "Ana",
                    "surname": "Lopez",
                    "email": "ana.lopez@example.com",
                    "language": "en-EN",
                    "role_id": "64f0c2a1b2d3e4f5060708aa",
                    "department": "Support",
                    "email_login_enabled": false
                  }
                },
                "email_login_user": {
                  "summary": "Criar um usuário com login por e-mail ativado",
                  "value": {
                    "name": "Diego",
                    "surname": "Santos",
                    "email": "diego.santos@example.com",
                    "language": "es-ES",
                    "role_id": "64f0c2a1b2d3e4f5060708ab",
                    "email_login_enabled": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Usuário criado com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserByIdV2"
                },
                "examples": {
                  "created": {
                    "summary": "Usuário criado",
                    "value": {
                      "id": "64f0c2a1b2d3e4f506070801",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "name": "Ana",
                      "surname": "Lopez",
                      "email": "ana.lopez@example.com",
                      "language": "en-EN",
                      "created_at": "2026-06-22T16:00:00.000Z",
                      "department": "Support",
                      "role_id": "64f0c2a1b2d3e4f5060708aa",
                      "created_by": "64f0c2a1b2d3e4f5060708bb",
                      "email_login_enabled": false
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Carga útil de solicitação não válida.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_email": {
                    "summary": "O formato do e-mail não é válido",
                    "value": {
                      "error": {
                        "message": "Cuerpo de solicitud no valido",
                        "code": "bad_request",
                        "details": "email debe ser una direccion valida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso referenciado não encontrado dentro do escopo da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "user_role_not_found": {
                    "summary": "Papel de usuário não encontrado",
                    "value": {
                      "error": {
                        "message": "Rol de usuario no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "A solicitação entra em conflito com um recurso existente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "email_already_exists": {
                    "summary": "O e-mail já existe",
                    "value": {
                      "error": {
                        "message": "El correo electronico ya existe",
                        "code": "conflict",
                        "details": "email ya esta registrado"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Usuários"
        ],
        "summary": "Listar usuários",
        "operationId": "get_users",
        "description": "Retorna uma lista paginada de usuários disponíveis dentro do escopo da organização.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos de elementos de resposta separados por vírgulas para incluir."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre caminhos de campos de resposta filtráveis. Todos os campos do contrato são filtráveis.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome de usuário",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"ana\"}"
              },
              "complex-and": {
                "summary": "Filtrar por departamento e método de login",
                "value": "{\"and\":[{\"field\":\"department\",\"op\":\"eq\",\"value\":\"support\"},{\"field\":\"email_login_enabled\",\"op\":\"eq\",\"value\":true}]}"
              },
              "complex-or-and": {
                "summary": "Combinar filtragem por organização e e-mail",
                "value": "{\"and\":[{\"or\":[{\"field\":\"organization_id\",\"op\":\"eq\",\"value\":\"507f1f77bcf86cd799439011\"},{\"field\":\"organization_id\",\"op\":\"eq\",\"value\":\"507f1f77bcf86cd799439012\"}]},{\"field\":\"email\",\"op\":\"contains\",\"value\":\"@example.com\"}]}"
              },
              "created-at-and-role": {
                "summary": "Filtrar por data de criação e papel",
                "value": "{\"and\":[{\"field\":\"created_at\",\"op\":\"gte\",\"value\":\"2025-01-01T00:00:00.000Z\"},{\"field\":\"role_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f5060708aa\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(id|name|surname|email|language|department|role_id|organization_id|created_at|created_by|email_login_enabled):(asc|desc)$"
            },
            "description": "Expressão de ordem no formato <field>:asc|desc. Todos os campos do contrato são ordenáveis."
          }
        ],
        "responses": {
          "200": {
            "description": "Usuários recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUsersResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com usuários",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f506070801",
                          "name": "Ana",
                          "surname": "Lopez",
                          "email": "ana.lopez@example.com",
                          "language": "en-EN",
                          "department": "Support",
                          "role_id": "64f0c2a1b2d3e4f5060708aa",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "created_at": "2025-12-01T10:30:00.000Z",
                          "created_by": "64f0c2a1b2d3e4f5060708bb",
                          "email_login_enabled": true
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Nenhum usuário encontrado",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no valido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON valida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso solicitado não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "resource_not_found": {
                    "summary": "Recurso solicitado não encontrado",
                    "value": {
                      "error": {
                        "message": "No encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspace-groups/{workspace_group_id}/schedules": {
      "post": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Criar uma programação cron",
        "operationId": "createWorkspaceGroupSchedule",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de workspaces",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "201": {
            "description": "Programação criada corretamente. A resposta contém o recurso de programação criado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupScheduleV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta. Causas comuns: - Campos obrigatórios em falta (cron_expression, time_zone, type) - Formato de expressão cron inválido - Valor de zona horária inválido - Tipo de programação inválido (deve ser START, STOP ou RESTART) - Formato de ID de Workspace de intermediate_device inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado: o usuário não tem acesso à organização ou a organização não existe"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de workspaces não encontrado ou o grupo de workspaces pertence a uma organização diferente (após passar a autorização)"
          },
          "409": {
            "$ref": "#/components/responses/Conflict",
            "description": "Conflito: já existe uma programação com o mesmo tipo, hora e dia (após a conversão de zona horária)"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity",
            "description": "Entidade não processável. Causas comuns: - O ID de Workspace de intermediate_device não existe ou não pertence à organização"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWorkspaceGroupScheduleRequestV2"
              },
              "examples": {
                "create-start-schedule": {
                  "summary": "Criar uma programação START para dias úteis às 8 AM",
                  "value": {
                    "cron_expression": "0 8 * * 1-5",
                    "time_zone": "Eastern Standard Time",
                    "type": "start"
                  }
                },
                "create-start-schedule-with-intermediate-device": {
                  "summary": "Criar uma programação START com dispositivo intermediário para Wake-on-LAN",
                  "value": {
                    "cron_expression": "0 8 * * 1-5",
                    "time_zone": "Eastern Standard Time",
                    "type": "start",
                    "intermediate_device": "507f1f77bcf86cd799439050"
                  }
                },
                "create-stop-schedule": {
                  "summary": "Criar uma programação STOP para dias úteis às 6 PM",
                  "value": {
                    "cron_expression": "0 18 * * 1-5",
                    "time_zone": "UTC",
                    "type": "stop"
                  }
                },
                "create-restart-schedule": {
                  "summary": "Criar uma programação RESTART para fins de semana à meia-noite",
                  "value": {
                    "cron_expression": "0 0 * * 0,6",
                    "time_zone": "Pacific Standard Time",
                    "type": "restart"
                  }
                }
              }
            }
          }
        },
        "description": "Cria uma nova programação cron para um grupo de workspaces. As programações definem operações automatizadas de energia (START, STOP, RESTART) que são executadas em programações especificadas de acordo com expressões cron e zona horária. As programações START podem incluir opcionalmente um ID de Workspace de dispositivo intermediário para operações Wake on LAN em redes seguras. Se intermediate_device for fornecido, indica que um dispositivo intermediário deve ser usado. O sistema valida que nenhuma programação em conflito exista (mesmo tipo, hora e dia após a conversão de zona horária)."
      },
      "get": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Listar programações cron",
        "operationId": "listWorkspaceGroupSchedules",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de workspaces",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "200": {
            "description": "Lista de programações recuperada corretamente. Retorna um conjunto de objetos de programação. Conjunto vazio se não existirem programações.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupScheduleV2ListResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta: formato de ID de grupo de workspaces inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado: o usuário não tem acesso à organização ou a organização não existe"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de workspaces não encontrado ou o grupo de workspaces pertence a uma organização diferente (após que a autorização se valide)"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera todas as programações cron configuradas para um grupo de workspaces. Retorna um conjunto de objetos de programação que contêm expressão cron, fuso horário, tipo, informação do dispositivo intermediário e metadatos de auditoria. Se o grupo de workspaces não tiver programações, será devolvido um conjunto vazio."
      }
    },
    "/v2/organizations/{organization_id}/workspace-groups": {
      "post": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Criar um grupo de workspaces",
        "operationId": "createWorkspaceGroup",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          }
        ],
        "responses": {
          "201": {
            "description": "Grupo de workspaces criado corretamente. A resposta contém o recurso criado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupDetailResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Causas comuns: - Faltam campos obrigatórios - Valores de campo inválidos - Valor de tipo inválido (somente é permitido STATIC) - Estrutura de localização inválida"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Organização não encontrada"
          },
          "409": {
            "$ref": "#/components/responses/Conflict",
            "description": "Conflito: já existe um grupo de workspaces com o mesmo nome"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkspacegroupsCreateRequestV2"
              },
              "examples": {
                "create-static-workspace-group": {
                  "summary": "Criar um grupo de workspaces com os campos obrigatórios mínimos",
                  "value": {
                    "name": "Grupo de Workspaces de producción"
                  }
                },
                "create-workspace-group-with-description": {
                  "summary": "Criar um grupo de workspaces com descrição",
                  "value": {
                    "name": "Grupo de Workspaces de desarrollo",
                    "description": "Grupo de workspaces para entornos de desarrollo",
                    "type": "static"
                  }
                },
                "create-workspace-group-with-location": {
                  "summary": "Criar um grupo de workspaces com informação de localização",
                  "value": {
                    "name": "Grupo de Workspaces de la oficina de Madrid",
                    "description": "Grupo de workspaces para la oficina de Madrid",
                    "type": "static",
                    "location": {
                      "latitude": 40.4168,
                      "longitude": -3.7038,
                      "address": "Madrid, España",
                      "description": "Ubicación de la oficina principal"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "Cria um novo grupo de workspaces para a organização especificada. Atualmente, apenas grupos de workspaces do tipo STATIC são suportados. Retorna o ID do grupo de workspaces criado após uma criação bem-sucedida."
      },
      "get": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Listar grupos de espaços de trabalho",
        "operationId": "listWorkspaceGroups",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            },
            "description": "Número da página (padrão: 1)"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Campo de ordenação com sufixo opcional de ordem (:asc ou :desc). Campos de ordenação válidos: id, name, description, created_by, created_at, type, location. A ordem ascendente é usada por padrão se não houver sufixo."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Lista separada por vírgulas de campos para incluir em cada elemento de grupos de workspaces. Campos selecionáveis: id, name, description, organization_id, created_by, created_at, type, filter, location, entra_id_source. O campo id sempre é incluído.",
            "example": "name,type,created_at"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120,
              "description": "Filtra grupos de workspaces usando um objeto JSON. Especifica o campo a filtrar, o operador de comparação e o valor. Exemplo: {\"field\": \"name\", \"op\": \"eq\", \"value\": \"grupos de workspaces 1\"}",
              "example": "{\"field\": \"name\", \"op\": \"eq\", \"value\": \"Grupo de Workspace 1\"}"
            },
            "description": "Filtrar grupos de workspaces por um ou mais critérios. Forneça um objeto JSON com condições de filtro. Pode-se filtrar por: id, name, description, created_by, created_at, type, location, entra_id_source.resource_id, entra_id_source.resource_type, entra_id_source.resource_name. Para campos aninhados como location ou entra_id_source, use notação de ponto (ex.: location.latitude, entra_id_source.resource_type). Use operadores de comparação (eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, endsWith, between) e combine múltiplas condições com operadores lógicos (and, or). Comprimento máximo: 5120 caracteres.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome de grupos de workspaces",
                "description": "Retorne grupos de workspaces cujo nome contém o texto fornecido.",
                "value": "{\"field\": \"name\", \"op\": \"contains\", \"value\": \"finanzas\"}"
              },
              "complex-and": {
                "summary": "Filtrar por tipo e localização",
                "description": "Retorne grupos de workspaces ESTÁTICOS acima de um limite de latitude.",
                "value": "{\"and\": [{\"field\": \"type\", \"op\": \"eq\", \"value\": \"STATIC\"}, {\"field\": \"location.latitude\", \"op\": \"gt\", \"value\": 40}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "description": "Corresponde a múltiplos padrões de nome e requer um tipo específico de recurso Entra.",
                "value": "{\"and\": [{\"or\": [{\"field\": \"name\", \"op\": \"contains\", \"value\": \"Finanzas\"}, {\"field\": \"name\", \"op\": \"contains\", \"value\": \"RRHH\"}]}, {\"field\": \"entra_id_source.resource_type\", \"op\": \"eq\", \"value\": \"GROUP\"}]}"
              }
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 100,
              "minimum": 1
            },
            "description": "Número de itens por página"
          }
        ],
        "responses": {
          "200": {
            "description": "Lista paginada de grupos de workspaces recuperada corretamente. A resposta inclui metadados de paginação e um conjunto de dados de grupos de workspaces.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupListItemV2ListResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Causas comuns: - Parâmetros de paginação inválidos - Parâmetro de ordenação inválido - Parâmetros de filtragem inválidos"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Organização não encontrada"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera uma lista paginada de grupos de workspaces que pertencem à organização especificada. Suporta filtragem e ordenação sobre propriedades de grupos de workspaces. Os filtros são fornecidos como uma cadeia JSON seguindo a estrutura AST de FilterNode. Os resultados são devolvidos em páginas com metadados de paginação."
      }
    },
    "/v2/organizations/{organization_id}/digital-activity/core-process-groups/{id}": {
      "delete": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Eliminar grupo de processos core",
        "operationId": "deleteDigitalActivityCoreProcessGroup",
        "description": "Elimine um grupo de processos principais dentro da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do grupo de processos principais.",
            "example": "64f0c2a1b2d3e4f506070811"
          }
        ],
        "responses": {
          "204": {
            "description": "Grupo de processos principais eliminado com sucesso. Não há conteúdo devolvido."
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_path_params": {
                    "summary": "Formato de identificadores inválido",
                    "value": {
                      "error": {
                        "message": "Parámetros de ruta no válidos",
                        "code": "bad_request",
                        "details": "organization_id e id deben tener 24 caracteres hexadecimales."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/flows/{flow_id}": {
      "delete": {
        "tags": [
          "Fluxos"
        ],
        "summary": "Eliminar um fluxo",
        "operationId": "deleteFlow",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "flow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do fluxo que será eliminado",
            "example": "507f1f77bcf86cd799439012"
          }
        ],
        "responses": {
          "204": {
            "description": "Fluxo eliminado corretamente. Não retorna conteúdo."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta - ID de fluxo inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - autenticação requerida"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Fluxo não encontrado"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Elimina permanentemente um fluxo da organização. Esta ação não pode ser desfeita. Não retorna conteúdo (204) após uma eliminação correta."
      },
      "get": {
        "tags": [
          "Fluxos"
        ],
        "summary": "Recuperar um fluxo",
        "operationId": "getFlowById",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "flow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do fluxo",
            "example": "507f1f77bcf86cd799439012"
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "en-EN",
                "es-ES",
                "pt-BR",
                "ca-ES",
                "eu-ES"
              ],
              "default": "es-ES"
            },
            "description": "Código de idioma para campos de texto que suportam vários idiomas. Ao criar ou atualizar recursos, isso especifica o idioma dos valores de texto fornecidos. Ao recuperar recursos, isso determina qual variante de idioma dos campos de texto multilíngues será retornada. Valores aceitos: 'en-EN' (inglês), 'es-ES' (espanhol), 'pt-BR' (português), 'ca-ES' (catalão), 'eu-ES' (basco). O valor padrão é 'es-ES' se não for fornecido."
          }
        ],
        "responses": {
          "200": {
            "description": "Detalhes do fluxo recuperados com sucesso. A resposta inclui a configuração completa do fluxo, condições, destinos e métricas de execução.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta - ID de fluxo inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Fluxo não encontrado"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera informações detalhadas sobre um fluxo específico, incluindo configuração, lógica de execução, condições, destinos e métricas de execução. Retorna os dados completos do fluxo no idioma solicitado."
      },
      "put": {
        "tags": [
          "Fluxos"
        ],
        "summary": "Atualizar um fluxo",
        "operationId": "updateFlow",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "flow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do fluxo a ser atualizado",
            "example": "507f1f77bcf86cd799439012"
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "en-EN",
                "es-ES",
                "pt-BR",
                "ca-ES",
                "eu-ES"
              ],
              "default": "es-ES"
            },
            "description": "Código de idioma para campos de texto que suportam vários idiomas. Ao criar ou atualizar recursos, isso especifica o idioma dos valores de texto fornecidos. Ao recuperar recursos, isso determina qual variante de idioma dos campos de texto multilíngues será retornada. Valores aceitos: 'en-EN' (inglês), 'es-ES' (espanhol), 'pt-BR' (português), 'ca-ES' (catalão), 'eu-ES' (basco). O valor padrão é 'es-ES' se não for fornecido."
          }
        ],
        "responses": {
          "200": {
            "description": "Fluxo atualizado corretamente. A resposta contém o recurso atualizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta. Causas comuns: - Campos obrigatórios em falta - Valores de campo não válidos - Configuração de condição não válida - Identificador de microserviço não válido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - autenticação requerida"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Fluxo ou organização não encontrados"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity",
            "description": "Entidade não processável. Causas comuns: - Microserviço referenciado não encontrado - Entidades alvo referenciadas (Workspaces, Workspace groups, Grupos de relatório) não encontradas ou não pertencentes - Tipo de condição não válido - O fluxo não pode ser habilitado"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFlowV2Request"
              },
              "examples": {
                "update-flow-configuration": {
                  "summary": "Atualizar fluxo com nova configuração",
                  "value": {
                    "name": {
                      "en-EN": "Flujo diario de copia actualizado",
                      "es-ES": "Proceso de copia diaria actualizado"
                    },
                    "description": {
                      "en-EN": "Proceso automatizado de copia diaria actualizado",
                      "es-ES": "Proceso automatizado de copia actualizado"
                    },
                    "detection_only": false,
                    "cooldown_minutes": 120,
                    "enabled": true,
                    "init_text": {
                      "en-EN": "Iniciando proceso de copia actualizado...",
                      "es-ES": "Iniciando proceso de copia actualizado..."
                    },
                    "ok_text": {
                      "en-EN": "Copia completada correctamente"
                    },
                    "ko_text": {
                      "en-EN": "La copia fallo. Por favor, revisa los registros."
                    },
                    "target": {
                      "type": "workspaces",
                      "ids": [
                        "507f1f77bcf86cd799439012",
                        "507f1f77bcf86cd799439013"
                      ]
                    },
                    "microservice_id": "507f1f77bcf86cd799439014",
                    "conditions": [
                      {
                        "condition_type_id": "507f1f77bcf86cd799439015",
                        "operator": "gte",
                        "compare_to": "90",
                        "period": null,
                        "check_every": 600
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "description": "Atualiza a configuração de um fluxo existente, incluindo nome, descrição, lógica de execução, condições e configuração de alvo. Retorna o recurso atualizado (200) após uma atualização correta."
      }
    },
    "/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}": {
      "delete": {
        "tags": [
          "Grupos de relatório"
        ],
        "summary": "Eliminar um grupo de relatório",
        "operationId": "deleteReportingGroup",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "reporting_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de relatório que será eliminado",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "204": {
            "description": "Grupo de relatório eliminado corretamente. Não retorna conteúdo."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta. Causas comuns: - Parâmetros de rota inválidos - Formato de ID inválido para organization_id ou reporting_group_id"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de relatório não encontrado ou não pertence à organização"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Elimina um grupo de relatório existente da organização. O grupo de relatório não deve ter Workspaces atribuídos e deve ser diretamente editável. Não retorna conteúdo (204) após uma eliminação bem-sucedida."
      },
      "get": {
        "tags": [
          "Grupos de relatório"
        ],
        "summary": "Recuperar um grupo de relatórios",
        "operationId": "getReportingGroupById",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "reporting_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de relatório",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "200": {
            "description": "Detalhes do grupo de relatório recuperados corretamente. A resposta inclui a configuração do grupo de relatório e os ajustes do agente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportingGroupByIdV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta - formato de ID de grupo de relatório inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - autenticação requerida"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de relatório não encontrado ou não pertence à organização"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera informações detalhadas sobre um grupo de relatório específico, incluindo sua configuração e os ajustes do agente. Retorna dados do grupo de relatório que coincidem com a estrutura do endpoint de listagem."
      },
      "put": {
        "tags": [
          "Grupos de relatório"
        ],
        "summary": "Atualizar um grupo de relatórios",
        "operationId": "updateReportingGroup",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "reporting_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de relatório a ser atualizado",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "200": {
            "description": "Grupo de relatório atualizado corretamente. A resposta contém o recurso atualizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportingGroupByIdV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta. Causas comuns: - Campos obrigatórios em falta (name) - Valores de campo não válidos - Valor de fishing_pattern_field não válido (deve ser um dos: full_name, description, ou, current_subnet) - Valor de fishing_pattern não válido (supera maxLength: 250) - Formato de ID não válido para os campos patch_policy_target_id ou intermediate_device_*_id - Dispositivos intermediários não definidos sequencialmente (intermediate_device_2_id requer intermediate_device_1_id, intermediate_device_3_id requer intermediate_device_2_id)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - autenticação requerida"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Não encontrado. Causas comuns: - Grupo de relatório não encontrado ou que não pertence à organização - Destino de política de patches não encontrado"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity",
            "description": "Entidade não processável. Causas comuns: - Os IDs de Workspace de dispositivos intermediários não existem ou não pertencem à organização"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReportingGroupRequestV2"
              },
              "examples": {
                "update-reporting-group-full-replacement": {
                  "summary": "Atualizar grupo de relatório com todos os campos atualizáveis, incluindo os dispositivos intermediários",
                  "value": {
                    "name": "Grupo de reporte de producción actualizado",
                    "description": "Grupo de reporte actualizado para entornos de producción",
                    "patch_policy_target_id": "507f1f77bcf86cd799439040",
                    "fishing_pattern": "Estaciones de trabajo Windows",
                    "fishing_pattern_field": "full_name",
                    "intermediate_device_1_id": "507f1f77bcf86cd799439050",
                    "intermediate_device_2_id": "507f1f77bcf86cd799439051",
                    "intermediate_device_3_id": "507f1f77bcf86cd799439052"
                  }
                },
                "update-reporting-group-minimal-fields": {
                  "summary": "Atualizar grupo de relatório apenas com os campos obrigatórios (limpa todos os campos opcionais)",
                  "value": {
                    "name": "Nombre actualizado del grupo de reporte"
                  },
                  "description": "Este exemplo mostra a atualização apenas do nome. Todos os campos opcionais (description, patch_policy_target_id, fishing_pattern, fishing_pattern_field e devices intermediários) serão limpos."
                },
                "update-reporting-group-with-single-intermediate-device": {
                  "summary": "Atualizar grupo de relatório apenas com o primeiro dispositivo intermediário",
                  "value": {
                    "name": "Nombre actualizado del grupo de reporte",
                    "description": "Configuración de un solo dispositivo intermedio",
                    "intermediate_device_1_id": "507f1f77bcf86cd799439050"
                  },
                  "description": "Este exemplo estabelece apenas o intermediate_device_1_id. intermediate_device_2_id e intermediate_device_3_id serão limpos se estavam estabelecidos anteriormente."
                },
                "update-reporting-group-clear-intermediate-devices": {
                  "summary": "Atualizar grupo de relatório e limpar todos os dispositivos intermediários",
                  "value": {
                    "name": "Nombre actualizado del grupo de reporte",
                    "description": "Sin dispositivos intermedios"
                  },
                  "description": "Ao omitir todos os campos intermediate_device_*_id, todos serão limpos (comportamento idempotente)."
                }
              }
            }
          }
        },
        "description": "Atualiza a configuração de um grupo de relatório existente, incluindo nome, descrição, destino de política de patches, padrão de busca e dispositivos intermediários. Este endpoint implementa semântica de substituição completa: todos os campos atualizáveis devem ser incluídos na solicitação. Omissão de campos opcionais irá limpá-los (comportamento idempotente). Pode configurar opcionalmente dispositivos intermediários (até 3) fornecendo identificadores de Workspace. Dispositivos intermediários são usados para ações Wake-on-LAN em redes seguras, permitindo o ligamento remoto de dispositivos através de gateways intermediários. Dispositivos intermediários devem ser definidos sequencialmente: você não pode definir intermediate_device_2_id sem intermediate_device_1_id, nem intermediate_device_3_id sem intermediate_device_2_id. Todos os IDs de Workspace de dispositivos intermediários devem existir e pertencer à organização. Retorna o recurso atualizado (200) após uma atualização bem-sucedida."
      }
    },
    "/v2/organizations/{organization_id}/roles/{role_id}": {
      "delete": {
        "tags": [
          "Funções"
        ],
        "summary": "Excluir um papel",
        "operationId": "delete_role",
        "description": "Excluir o papel especificado dentro do escopo de uma organização. Não retorna conteúdo quando a exclusão é bem-sucedida.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "role_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do papel.",
            "example": "64f0c2a1b2d3e4f5060708aa"
          }
        ],
        "responses": {
          "204": {
            "description": "Papel de usuário excluído com sucesso."
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_role_id": {
                    "summary": "Formato de identificador de papel inválido",
                    "value": {
                      "error": {
                        "message": "Formato de role_id no válido",
                        "code": "bad_request",
                        "details": "role_id debe ser una cadena hexadecimal en minúsculas de 24 caracteres"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Papel não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "role_not_found": {
                    "summary": "Papel solicitado não encontrado",
                    "value": {
                      "error": {
                        "message": "Rol no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "A solicitação não pode ser processada porque o papel ainda tem usuários atribuídos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "role_has_assigned_users": {
                    "summary": "O papel ainda tem usuários atribuídos",
                    "value": {
                      "error": {
                        "message": "El rol tiene usuarios asignados",
                        "code": "unprocessable_entity",
                        "details": "Elimina las asignaciones del rol de los usuarios antes de eliminar este rol"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Funções"
        ],
        "summary": "Recuperar um papel",
        "operationId": "get_role_by_id",
        "description": "Retorna detalhes do papel solicitado dentro do escopo de uma organização.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "role_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do papel.",
            "example": "64f0c2a1b2d3e4f5060708aa"
          }
        ],
        "responses": {
          "200": {
            "description": "Detalhes do papel do usuário recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleV2"
                },
                "examples": {
                  "role_details": {
                    "summary": "Resposta de detalhes do papel",
                    "value": {
                      "id": "64f0c2a1b2d3e4f5060708aa",
                      "name": "Administrador de la organización",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "created_at": "2026-03-12T10:30:00Z",
                      "created_by": "64f0c2a1b2d3e4f5060708bb",
                      "permissions": [
                        {
                          "portal_permission": "organization_admin",
                          "workspaces_permission": "admin",
                          "analyzer_permission": "access",
                          "target_organization": "all",
                          "target_reporting_groups": [
                            "64f0c2a1b2d3e4f5060708c1",
                            "64f0c2a1b2d3e4f5060708c2"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_role_id": {
                    "summary": "Formato de identificador de papel inválido",
                    "value": {
                      "error": {
                        "message": "Formato de role_id no válido",
                        "code": "bad_request",
                        "details": "role_id debe ser una cadena hexadecimal en minúsculas de 24 caracteres"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Papel não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "role_not_found": {
                    "summary": "Papel solicitado não encontrado",
                    "value": {
                      "error": {
                        "message": "Rol no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Funções"
        ],
        "summary": "Atualizar um papel",
        "operationId": "update_role_by_id",
        "description": "Realiza uma atualização de substituição completa dos campos mutáveis do papel em uma única solicitação, incluindo o conjunto completo de permissões.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador de organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "role_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador de papel.",
            "example": "64f0c2a1b2d3e4f5060708aa"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRoleRequestV2"
              },
              "examples": {
                "full_update_organization_scoped": {
                  "summary": "Atualizar papel com permissões de alcance organizacional",
                  "value": {
                    "name": "Operador de organizacion",
                    "permissions": [
                      {
                        "target_organization": "507f1f77bcf86cd799439011",
                        "portal_permission": "organization_admin",
                        "workspaces_permission": "admin_read_only",
                        "analyzer_permission": "access",
                        "target_reporting_groups": [
                          "64f0c2a1b2d3e4f5060708c1",
                          "64f0c2a1b2d3e4f5060708c2"
                        ]
                      }
                    ]
                  }
                },
                "full_update_mixed_scopes": {
                  "summary": "Atualizar papel com permissões de alcance misto",
                  "value": {
                    "name": "Soporte de plataforma",
                    "permissions": [
                      {
                        "target_organization": "all",
                        "portal_permission": "platform",
                        "workspaces_permission": "admin",
                        "analyzer_permission": "admin",
                        "target_reporting_groups": "all"
                      },
                      {
                        "target_organization": "507f1f77bcf86cd799439011",
                        "portal_permission": "l2_support_team",
                        "workspaces_permission": "l2_support_team",
                        "analyzer_permission": "access",
                        "target_reporting_groups": [
                          "64f0c2a1b2d3e4f5060708d1"
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Papel atualizado com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoleV2"
                }
              }
            }
          },
          "400": {
            "description": "Parâmetro de rota inválido ou contrato do corpo de solicitação inválido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_request_body": {
                    "summary": "Carga útil de atualização malformada",
                    "value": {
                      "error": {
                        "message": "Cuerpo de solicitud invalido",
                        "code": "bad_request",
                        "details": "permissions[0].target_organization debe ser una cadena hexadecimal en minusculas de 24 caracteres o el valor all"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "O papel não foi encontrado dentro do alcance autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "role_not_found": {
                    "summary": "Papel solicitado não encontrado",
                    "value": {
                      "error": {
                        "message": "Rol no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "A solicitação conflita com o estado existente do papel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "role_name_conflict": {
                    "summary": "O nome do papel já existe",
                    "value": {
                      "error": {
                        "message": "El nombre del rol ya existe",
                        "code": "conflict",
                        "details": "name ya esta en uso dentro de esta organizacion"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/tenants/{tenant_id}": {
      "delete": {
        "tags": [
          "Locatários"
        ],
        "summary": "Eliminar um tenant",
        "operationId": "deleteTenant",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização proprietária do tenant",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "tenant_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do tenant que será eliminado",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "204": {
            "description": "Tenant eliminado corretamente. A organização relacionada foi desativada. Não retorna conteúdo no corpo da resposta."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta. Causas comuns: - Parâmetros de rota inválidos - Formato de ID de tenant inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado: é necessária a autenticação ou o usuário não tem permissões para eliminar o tenant. Também é devolvido ao tentar eliminar um tenant da própria organização do usuário."
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Tenant não encontrado"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity",
            "description": "Entidade não processável: erro de validação de lógica de negócio. Causas comuns: - Não se pode eliminar um tenant com sub-tenants (a organização tem mais de um tenant) - Não se pode eliminar um tenant da própria organização"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Elimina um tenant existente e desativa a organização relacionada. Não se pode eliminar um tenant da própria organização do usuário. Não se pode eliminar um tenant se a organização tiver mais de um tenant."
      },
      "get": {
        "tags": [
          "Locatários"
        ],
        "summary": "Recuperar um tenant",
        "operationId": "getTenantById",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "tenant_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do tenant",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "200": {
            "description": "Detalhes do tenant recuperados corretamente. A resposta inclui informações completas do tenant, incluindo as atribuições de produto e política.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantByIdV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta - formato de ID de tenant inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Tenant não encontrado"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera informações detalhadas sobre um tenant específico, incluindo sua configuração, atribuição de produto, atribuição de política e metadados. Retorna dados completos do tenant para a organização especificada."
      },
      "put": {
        "tags": [
          "Locatários"
        ],
        "summary": "Atualizar um tenant",
        "operationId": "updateTenant",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização proprietária do tenant",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "tenant_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do tenant a ser atualizado",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "200": {
            "description": "Nome do tenant atualizado corretamente. O nome da organização relacionada também foi atualizado. A resposta contém o recurso atualizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantByIdV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Causas comuns: - Corpo da solicitação ou parâmetros de rota inválidos - Falta o campo obrigatório (name) - Tipos de campo inválidos"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado: é necessária autenticação ou o usuário não possui permissão para atualizar o tenant"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Tenant não encontrado"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTenantRequestV2"
              },
              "examples": {
                "update-tenant-name": {
                  "summary": "Atualizar o nome de um locatário existente",
                  "value": {
                    "name": "Tenant de Produccion Actualizado"
                  }
                }
              }
            }
          }
        },
        "description": "Atualiza o nome de um tenant existente. A atualização do nome do tenant também atualiza o nome da organização relacionada."
      }
    },
    "/v2/organizations/{organization_id}/users/{user_id}": {
      "delete": {
        "tags": [
          "Usuários"
        ],
        "summary": "Excluir um usuário",
        "operationId": "delete_user_by_id",
        "description": "Excluir o usuário especificado dentro do escopo de uma organização ",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do usuário.",
            "example": "64f0c2a1b2d3e4f506070801"
          }
        ],
        "responses": {
          "204": {
            "description": "Usuário removido com sucesso."
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_user_id": {
                    "summary": "Formato de identificador de usuário inválido",
                    "value": {
                      "error": {
                        "message": "Formato de user_id no válido",
                        "code": "bad_request",
                        "details": "user_id debe ser una cadena hexadecimal en minúsculas de 24 caracteres"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Usuário não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "user_not_found": {
                    "summary": "Usuário solicitado não encontrado",
                    "value": {
                      "error": {
                        "message": "Usuario no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Usuários"
        ],
        "summary": "Recuperar um usuário",
        "operationId": "get_user_by_id",
        "description": "Retorna os detalhes do usuário solicitado dentro do escopo de uma organização.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do usuário.",
            "example": "64f0c2a1b2d3e4f506070801"
          }
        ],
        "responses": {
          "200": {
            "description": "Detalhes do usuário recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserByIdV2"
                },
                "examples": {
                  "user_details": {
                    "summary": "Resposta de detalhes do usuário",
                    "value": {
                      "id": "64f0c2a1b2d3e4f506070801",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "name": "Ana",
                      "surname": "Lopez",
                      "email": "ana.lopez@example.com",
                      "language": "en-EN",
                      "created_at": "2025-12-01T10:30:00.000Z",
                      "department": "Soporte",
                      "role_id": "64f0c2a1b2d3e4f5060708aa",
                      "created_by": "64f0c2a1b2d3e4f5060708bb",
                      "email_login_enabled": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_user_id": {
                    "summary": "Formato de identificador de usuário inválido",
                    "value": {
                      "error": {
                        "message": "Formato de user_id no valido",
                        "code": "bad_request",
                        "details": "user_id debe ser una cadena hexadecimal en minusculas de 24 caracteres"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Usuário não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "user_not_found": {
                    "summary": "O usuário solicitado não foi encontrado",
                    "value": {
                      "error": {
                        "message": "Usuario no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Usuários"
        ],
        "summary": "Atualizar um usuário",
        "operationId": "update_user",
        "description": "Atualiza completamente os dados editáveis do usuário na organização.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do usuário a ser atualizado.",
            "example": "64f0c2a1b2d3e4f506070801"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserRequestV2"
              },
              "examples": {
                "full_update": {
                  "summary": "Carga útil completa de atualização de usuário",
                  "value": {
                    "name": "Ana",
                    "surname": "Lopez",
                    "email": "ana.lopez@example.com",
                    "department": "Support",
                    "role_id": "64f0c2a1b2d3e4f5060708aa"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Usuário atualizado com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserByIdV2"
                },
                "examples": {
                  "updated": {
                    "summary": "Usuário atualizado",
                    "value": {
                      "id": "64f0c2a1b2d3e4f506070801",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "name": "Ana",
                      "surname": "Lopez",
                      "email": "ana.lopez@example.com",
                      "language": "en-EN",
                      "created_at": "2026-06-22T16:00:00.000Z",
                      "department": "Support",
                      "role_id": "64f0c2a1b2d3e4f5060708aa",
                      "created_by": "64f0c2a1b2d3e4f5060708bb",
                      "email_login_enabled": false
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetro de rota inválido ou contrato do corpo da solicitação inválido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_request_body": {
                    "summary": "Carga de atualização malformada",
                    "value": {
                      "error": {
                        "message": "Cuerpo de solicitud inválido",
                        "code": "bad_request",
                        "details": "el parámetro de ruta user_id debe ser una cadena hexadecimal en minúsculas de 24 caracteres"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso alvo não encontrado dentro do escopo de organização autorizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "user_not_found": {
                    "summary": "Usuário alvo não encontrado",
                    "value": {
                      "error": {
                        "message": "Usuario no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "A solicitação entra em conflito com um estado de recurso existente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "email_conflict": {
                    "summary": "O e-mail já existe",
                    "value": {
                      "error": {
                        "message": "El correo electrónico ya existe",
                        "code": "conflict",
                        "details": "el correo electrónico ya está registrado para otro usuario"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspaces/{workspace_id}": {
      "delete": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Excluir um espaço de trabalho",
        "operationId": "delete_workspace_by_id",
        "description": "Aceita a solicitação de exclusão do espaço de trabalho dentro do escopo de uma organização autorizada e inicia um fluxo assíncrono. A resposta retorna a operação criada, que pode ser consultada posteriormente nos endpoints de operações.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do espaço de trabalho.",
            "example": "64f0c2a1b2d3e4f506070801"
          }
        ],
        "responses": {
          "202": {
            "description": "Solicitação aceita. A operação é retornada para acompanhamento nos endpoints de operações.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOperationByIdResponseV2"
                },
                "examples": {
                  "operation_created": {
                    "summary": "Operação criada para a exclusão assíncrona",
                    "value": {
                      "id": "64f0c2a1b2d3e4f506070811",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "name": "delete_workspace",
                      "description": "Operacion de eliminacion de workspace",
                      "status": "pending",
                      "created_at": "2026-06-05T14:12:00Z",
                      "started_at": null,
                      "ended_at": null,
                      "microservice_id": null,
                      "flow_id": null,
                      "remote_support": null
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_workspace_id": {
                    "summary": "Formato de workspace_id inválido",
                    "value": {
                      "error": {
                        "message": "Formato de workspace_id no valido",
                        "code": "bad_request",
                        "details": "workspace_id debe ser una cadena hexadecimal en minusculas de 24 caracteres"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Espaço de trabalho não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "workspace_not_found": {
                    "summary": "Espaço de trabalho solicitado não encontrado",
                    "value": {
                      "error": {
                        "message": "Workspace no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Recuperar um espaço de trabalho",
        "operationId": "getWorkspaceById",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do Workspace",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "200": {
            "description": "Detalhes do Workspace recuperados corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspacePublicV2"
                },
                "examples": {
                  "workspace-details": {
                    "summary": "Informações detalhadas do Workspace",
                    "value": {
                      "id": "22f5381aa25e89b73785ca34",
                      "organization_id": "155f78b81155f8ab327ef274",
                      "name": "SDI04-001.org.terravex.net",
                      "related_environment": "1437d381972ce53252aabe72f053af7c",
                      "operating_system": "Microsoft Windows Server 2022 Standard 21H2",
                      "serial_number": "40a70e53327456131ae3321135531ae87f655cbeab27f01134c7ef366a7f2402",
                      "ip_address": "172.30.113.115",
                      "os_update_num_pending": 5,
                      "reporting_group_id": "65f83219942714fc24f01435",
                      "flxmid": "50a70e53327456131ae5921135531ae87f639cbe5b27f09034c7ef366a7f2402",
                      "os_update_num_days_since_last": 183,
                      "total_ram": 8191,
                      "altitude": 0,
                      "antivirus": "Windows Defender",
                      "antivirus_status": "installed_working",
                      "bios_manufacturer": "VMware, Inc.",
                      "bios_mode": "UEFI",
                      "bios_version": "P79 Ver. 6.00",
                      "bios_smbversion": "2.7",
                      "bios_serialnumber": "VMware-42 06 fd 7c 3a f4 af 1c-97 07 56 e2 07 67 d7 23",
                      "base_board_manufacturer": "Intel Corporation",
                      "base_board_product": "440BX Desktop Reference Platform",
                      "base_board_version": "A30",
                      "broker": "citrix_on-premises",
                      "public_ip_city": "Barcelona",
                      "flexxagent_version": "25.9.1.0",
                      "compliance_result": "not_evaluated",
                      "compliance_last_execution": "2025-06-12T06:13:17.17Z",
                      "domain_name": "org.terravex.net",
                      "public_ip_country": "ES",
                      "cores_count": "4",
                      "edr_active_detections": false,
                      "edr_host_id": "11bbcc1e6e2c440aa8b7522a78a292ad",
                      "edr_status": "installed_working",
                      "edr_version": "7.05.17706.0",
                      "current_subnet": "172.30.213.0/24",
                      "default_gateway": "172.30.213.1",
                      "device_kind": "virtual",
                      "edr": "CrowdStrike",
                      "ema_agent_version": "",
                      "ema_endpoint_id": "",
                      "embedded_controller_version": "255.255",
                      "os_fast_startup": false,
                      "flexxanalyzer_config": "configured",
                      "flexxanalyzer_version": "3.0.2",
                      "hypervisor": "vmware_vsphere",
                      "ip_version": "IPv4",
                      "public_ip_isp": "Cloudflare, Inc.",
                      "iot_hub_config_sync_status": "synced",
                      "is_amt_supported": false,
                      "is_laptop": false,
                      "is_physical": false,
                      "last_boot_duration": 20,
                      "last_restart_time": null,
                      "last_time": "2025-06-12T06:13:17.17Z",
                      "last_windows_update": "2025-09-18T00:00:00.00Z",
                      "last_autorepair": "2025-06-10T10:00:00.00Z",
                      "latitude": 0,
                      "locale": "English (United States)",
                      "longitude": 0,
                      "mac_address": "10-52-56-36-21-42",
                      "network_interface_type": "unknown",
                      "os_build_number": "6.3.20348.4171",
                      "os_manufacturer": "Microsoft Corporation",
                      "os_version": "10.0.20348.20348",
                      "ou": "OU=NonPersistent,OU=Workstations,OU=OPS914,DC=ops914,DC=terravex,DC=net",
                      "os_page_file": "C:\\pagefile.sys",
                      "os_page_file_space": 512,
                      "platform_role": "Desktop",
                      "platform_type": "windows",
                      "processor": "Intel(R) Xeon(R) Gold 6348 CPU @ 2.60GHz, 4 Core(s), 4 Logical Processors",
                      "public_ip": "19.27.129.141",
                      "os_reboot_pending": false,
                      "secure_boot_state": "On",
                      "system_model": "VMware7,1",
                      "system_type": "x64-based PC",
                      "os_time_zone": "Romance Standard Time",
                      "user_name": "Domain\\user001",
                      "vm_type": "workspace",
                      "windows_type": "server",
                      "created_at": "2023-12-18T11:26:11.11Z",
                      "last_deregistration_time": "2026-01-19T12:26:25.25Z",
                      "delete_scheduled_at": "2026-07-15T00:00:00.000Z",
                      "encrypted_harddisks": "partial",
                      "custom_field_01": "testVal1",
                      "custom_field_02": "testVal2",
                      "custom_field_03": "4",
                      "custom_field_04": "",
                      "custom_field_05": "",
                      "custom_field_06": "",
                      "custom_field_07": "",
                      "custom_field_08": "",
                      "custom_field_09": "",
                      "custom_field_10": "",
                      "flexxagent_type": "unified",
                      "antivirus_version_number": "4.18.2104.5",
                      "related_location": "C08D2228-E80A-4ADA-A75F-03E33E71D119",
                      "area": "Development",
                      "custom_field_11": "",
                      "custom_field_12": "",
                      "custom_field_13": "",
                      "custom_field_14": "",
                      "custom_field_15": "",
                      "custom_field_16": "",
                      "custom_field_17": "",
                      "custom_field_18": "",
                      "custom_field_19": "",
                      "custom_field_20": "",
                      "department": "Department",
                      "office": "Office",
                      "last_custom_fields_update": "2025-12-24T11:24:51.51Z",
                      "workspace_id": "6676aa0c1e9c850250a70e53327456131ae59211aa531ae87f639cbe5b27f09034c7e3366a7f2402",
                      "flexxanalyzer_proxy_uri": "",
                      "iot_hub_name": "idIot0e33d84fe5761e",
                      "flexxagent_status": "stopped",
                      "boot_hard_disk_used_percentage": 34,
                      "last_connection_time": "2025-06-12T06:13:17.17Z",
                      "network_signal": 0,
                      "num_alerts": 0,
                      "percent_cpu": 17,
                      "percent_ram": 0,
                      "power_state": "off",
                      "sessions_count": 0,
                      "used_system_disk_c": 34,
                      "wake_on_lan_mac": "10-50-56-56-51-12",
                      "wake_on_lan_subnet": "172.30.213.0/24",
                      "broker_status": "disconnected",
                      "status": "online"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta: o formato do ID de Workspace não é válido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado: é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Workspace não encontrado"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera informações detalhadas sobre um Workspace específico."
      }
    },
    "/v2/organizations/{organization_id}/workspace-groups/{workspace_group_id}/schedules/{schedule_id}": {
      "delete": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Excluir uma programação cron",
        "operationId": "deleteWorkspaceGroupSchedule",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de workspaces",
            "example": "507f1f77bcf86cd799439020"
          },
          {
            "name": "schedule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da programação a eliminar",
            "example": "507f1f77bcf86cd799439060"
          }
        ],
        "responses": {
          "204": {
            "description": "Programação eliminada corretamente. Não retorna conteúdo."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta - formato de ID de programação inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - o usuário não tem acesso à organização, ou a organização não existe"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Não se encontrou o grupo de workspaces ou a programação, ou o grupo de workspaces pertence a uma organização diferente (após que a autorização se valide)"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Elimina uma programação cron de um grupo de workspaces. Depois de eliminada, a operação de energia automatizada definida por esta programação não será mais executada. A programação deve pertencer ao grupo de workspaces e à organização especificados."
      },
      "get": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Recuperar uma programação cron",
        "operationId": "getWorkspaceGroupScheduleById",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de workspaces",
            "example": "507f1f77bcf86cd799439020"
          },
          {
            "name": "schedule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da programação",
            "example": "507f1f77bcf86cd799439060"
          }
        ],
        "responses": {
          "200": {
            "description": "Detalhes da programação recuperados com sucesso. A resposta inclui expressão cron, fuso horário, tipo, informações do dispositivo intermediário e metadados de auditoria.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupScheduleV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta - formato de ID de programação inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - o usuário não tem acesso à organização, ou a organização não existe"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Não se encontrou o grupo de workspaces ou a programação, ou o grupo de workspaces pertence a uma organização diferente (após que a autorização se valide)"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera informações detalhadas sobre programação cron específica para um grupo de workspaces. Retorna a configuração da programação, incluindo a expressão cron, o fuso horário, o tipo de operação, a configuração do dispositivo intermediário e os metadados de auditoria (criado por, atualizado por, atualizado em)."
      },
      "put": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Atualizar uma programação cron",
        "operationId": "updateWorkspaceGroupSchedule",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de workspaces",
            "example": "507f1f77bcf86cd799439020"
          },
          {
            "name": "schedule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da programação a ser atualizada",
            "example": "507f1f77bcf86cd799439060"
          }
        ],
        "responses": {
          "200": {
            "description": "Programação atualizada corretamente. A resposta contém o recurso atualizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupScheduleV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta. Causas comuns: - Campos obrigatórios em falta (cron_expression, time_zone, type) - Formato de expressão cron não válido - Valor de zona horária não válido - Tipo de programação não válido (deve ser START, STOP ou RESTART) - Formato de ID de Workspace intermediate_device não válido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de workspaces ou programação não encontrada, ou não pertence à organização"
          },
          "409": {
            "$ref": "#/components/responses/Conflict",
            "description": "Conflito - Já existe uma programação com o mesmo tipo, hora e dia (após a conversão de zona horária), excluindo a programação atual que se está a atualizar"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity",
            "description": "Entidade não processável. Causas comuns: - O ID de Workspace intermediate_device não existe ou não pertence à organização"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWorkspaceGroupScheduleRequestV2"
              },
              "examples": {
                "update-schedule-time": {
                  "summary": "Atualizar programação para execução em horário diferente",
                  "value": {
                    "cron_expression": "0 9 * * 1-5",
                    "time_zone": "Eastern Standard Time",
                    "type": "start"
                  }
                },
                "add-intermediate-device": {
                  "summary": "Adicionar dispositivo intermediário a uma programação START existente",
                  "value": {
                    "cron_expression": "0 8 * * 1-5",
                    "time_zone": "Eastern Standard Time",
                    "type": "start",
                    "intermediate_device": "507f1f77bcf86cd799439050"
                  }
                },
                "remove-intermediate-device": {
                  "summary": "Remover dispositivo intermediário da programação START",
                  "value": {
                    "cron_expression": "0 8 * * 1-5",
                    "time_zone": "Eastern Standard Time",
                    "type": "start"
                  }
                },
                "change-schedule-type": {
                  "summary": "Alterar o tipo de programação de START para STOP",
                  "value": {
                    "cron_expression": "0 18 * * 1-5",
                    "time_zone": "UTC",
                    "type": "stop"
                  }
                }
              }
            }
          }
        },
        "description": "Atualiza uma programação cron existente para um grupo de espaços de trabalho. Devem ser fornecidos todos os campos da programação, pois este endpoint implementa semântica de substituição completa. O sistema valida que não exista uma programação em conflito (mesmo tipo, hora e dia após a conversão de fuso horário), excluindo a programação atual que está sendo atualizada. Para eliminar um dispositivo intermediário de uma programação START, omita o campo dispositivo_intermediário."
      }
    },
    "/v2/organizations/{organization_id}/workspace-groups/{workspace_group_id}": {
      "delete": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Excluir um grupo de workspaces",
        "operationId": "deleteWorkspaceGroup",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de workspaces que será eliminado",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "204": {
            "description": "Grupo de workspaces eliminado corretamente. Não retorna conteúdo."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta - formato de ID de grupo de workspaces inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de workspaces não encontrado ou não pertence à organização"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Elimina permanentemente um grupo de workspaces da organização. Esta ação não pode ser desfeita. Não retorna conteúdo (204) após uma eliminação bem-sucedida."
      },
      "get": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Recuperar um grupo de espaços de trabalho",
        "operationId": "getWorkspaceGroupById",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de workspaces",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "200": {
            "description": "Detalhes do grupo de workspaces recuperados corretamente. A resposta inclui a configuração, o tipo e a localização do grupo de workspaces.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupDetailResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta - formato de ID de grupo de workspaces inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de workspaces não encontrado ou não pertence à organização"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera informações detalhadas sobre um grupo de workspaces específico, incluindo sua configuração, tipo e localização. Retorna dados do grupo de workspaces que coincidem com a estrutura do endpoint de listagem."
      },
      "put": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Atualizar um grupo de espaços de trabalho",
        "operationId": "updateWorkspaceGroup",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de workspaces a ser atualizado",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "200": {
            "description": "Grupo de workspaces atualizado corretamente. A resposta contém o recurso atualizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupDetailResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Causas comuns: - Faltam campos requeridos (name, description, location) - Valores de campo inválidos - Estrutura de localização inválida - Faltam campos obrigatórios de localização (latitude, longitude, address)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de workspaces não encontrado ou não pertence à organização"
          },
          "409": {
            "$ref": "#/components/responses/Conflict",
            "description": "Conflito - já existe um grupo de workspaces com o mesmo nome"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity",
            "description": "Entidade não processável - violação de regra de negócio (ex., não se pode estabelecer filter em um grupo de workspaces de Entra ID)"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkspaceGroupUpdateRequestV2"
              },
              "examples": {
                "update-workspace-group-(full-replacement)": {
                  "summary": "Atualizar grupo de espaços de trabalho com todos os campos necessários",
                  "value": {
                    "name": "Grupo de Workspace de Produccion Actualizado",
                    "description": "Grupo de workspaces actualizado para entornos de producción",
                    "location": {
                      "latitude": 40.4168,
                      "longitude": -3.7038,
                      "address": "Madrid, Espana",
                      "description": "Ubicación de oficina actualizada"
                    }
                  }
                },
                "update-workspace-group-without-location-description": {
                  "summary": "Atualizar grupo de espaços de trabalho com campos necessários; a descrição da localização é opcional",
                  "value": {
                    "name": "Grupo de Workspace de Produccion Actualizado",
                    "description": "Grupo de workspaces actualizado para entornos de producción",
                    "location": {
                      "latitude": 40.4168,
                      "longitude": -3.7038,
                      "address": "Madrid, Espana"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "Atualize a configuração de um grupo de workspaces existente, incluindo name, description e location. Esta é uma solicitação PUT que implementa substituição completa: todos os campos atualizáveis são obrigatórios. Retorna o recurso atualizado (200) após uma atualização bem-sucedida."
      }
    },
    "/v2/organizations/{organization_id}/audits": {
      "get": {
        "tags": [
          "Auditoria"
        ],
        "operationId": "get_audits",
        "summary": "Listar auditorias",
        "description": "Retorna eventos de auditoria da organização indicada para verificar qual ação foi realizada, sobre qual entidade, quando ocorreu e quem a desencadeou. Quando `trigger_type` é `user`, `trigger_id` corresponde ao identificador do usuário e pode ser verificado através do endpoint de usuários. Quando `trigger_type` é `api`, `trigger_id` corresponde ao identificador da chave de API; por enquanto as chaves de API não são consultáveis através desta API pública.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "description": "Identificador da organização.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Número da página a consultar.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Quantidade de elementos por página.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 100
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Lista separada por vírgulas com os campos de resposta a serem incluídos.",
            "schema": {
              "type": "string",
              "example": "id,audited_at,action,entity_type,entity_id,trigger_type,trigger_id,trigger_name"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Expressão de ordenação no formato <field>:asc|desc. No modo agregado, só aceita campos de `group_by` ou aliases agregados (`count`, `<function>_<field>`).",
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            }
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "description": "Expressão JSON de filtragem sobre campos filtráveis da resposta.",
            "schema": {
              "type": "string"
            },
            "examples": {
              "simple": {
                "summary": "Filtro simples por tipo de entidade",
                "value": "{\"field\":\"entity_type\",\"op\":\"eq\",\"value\":\"workspace\"}"
              },
              "complex-and": {
                "summary": "Combinação AND por ação e tipo de entidade",
                "value": "{\"and\":[{\"field\":\"action\",\"op\":\"eq\",\"value\":\"update\"},{\"field\":\"entity_type\",\"op\":\"eq\",\"value\":\"workspace\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinação OR dentro de AND com ator e ação",
                "value": "{\"and\":[{\"or\":[{\"field\":\"trigger_id\",\"op\":\"eq\",\"value\":\"8c1a7e2b9f4d3c6e0a5b1d2f\"},{\"field\":\"trigger_id\",\"op\":\"eq\",\"value\":\"f0b9c3d7a1e5f8b2c4d6e9a0\"}]},{\"field\":\"action\",\"op\":\"eq\",\"value\":\"delete\"}]}"
              }
            }
          },
          {
            "name": "aggregate",
            "in": "query",
            "required": false,
            "description": "Expressão JSON para agregação. Estrutura: {\"group_by\":[\"field\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}. Não pode ser combinado com `fields`.",
            "schema": {
              "type": "string",
              "maxLength": 1024
            },
            "examples": {
              "group-by-action-count": {
                "summary": "Agrupar por ação e contar",
                "value": "{\"group_by\":[\"action\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}"
              },
              "group-by-entity-type-count": {
                "summary": "Agrupar por tipo de entidade e contar",
                "value": "{\"group_by\":[\"entity_type\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista de auditorias obtida com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAuditsResponseV2"
                },
                "examples": {
                  "list-mode": {
                    "summary": "Resposta em modo de lista",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "b7e4c2a9d1f6038e5a2c9b4d",
                          "audited_at": "2026-06-30T11:45:12.000Z",
                          "organization_id": "a9d3f1b7c4e8026d5f0a3c8e",
                          "action": "update",
                          "entity_type": "workspace",
                          "entity_id": "c2f8a1d4b9e3067f5c0d2a8e",
                          "trigger_type": "api",
                          "trigger_id": "8c1a7e2b9f4d3c6e0a5b1d2f",
                          "trigger_name": "Api Key"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "BAD_REQUEST",
                    "message": "Invalid request data",
                    "details": "fields and aggregate cannot be combined."
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado para acessar a organização solicitada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "unauthorized",
                    "message": "No autorizado para acceder a la organización solicitada."
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "not_found",
                    "message": "El recurso solicitado no existe en la organización indicada."
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": {
                    "code": "internal_error",
                    "message": "Se ha producido un error interno."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/flows/condition-types": {
      "get": {
        "tags": [
          "Fluxos"
        ],
        "summary": "Listar tipos de condição",
        "operationId": "listConditionTypes",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página (padrão: 1)"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 100,
              "minimum": 1
            },
            "description": "Itens por página (padrão: 100, máx.: 100)"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Campo de ordenação com sufixo de ordem opcional (:asc ou :desc). Usa nomes de propriedades da resposta. Campos válidos: id, name, description, type, value_type, value_placeholder, period. Exemplo: \"name:asc\" ou \"type:desc\""
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Lista de campos separados por vírgulas para incluir em cada elemento de tipo de condição. Campos selecionáveis: id, name, description, type, frequency_values, value_type, value_placeholder, op_values, period. O campo id sempre é incluído.",
            "example": "name,type,op_values"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Filtra tipos de condição por um ou mais critérios. Fornece um objeto JSON com condições de filtro. Você pode filtrar por qualquer campo retornado na resposta. Usa operadores de comparação (eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, endsWith, between) e combina múltiplas condições com operadores lógicos (and, or). Tamanho máximo: 5120 caracteres.",
            "examples": {
              "simple": {
                "summary": "Filtrar por tipo de condição",
                "description": "Retorna tipos de condição que coincidem com um identificador de tipo específico.",
                "value": "{\"field\": \"type\", \"op\": \"eq\", \"value\": \"osVersion\"}"
              },
              "complex-and": {
                "summary": "Filtrar por tipo de valor e suporte periódico",
                "description": "Retorna tipos de condições baseados em cadeias que não são periódicos.",
                "value": "{\"and\": [{\"field\": \"value_type\", \"op\": \"eq\", \"value\": \"string\"}, {\"field\": \"period\", \"op\": \"eq\", \"value\": false}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "description": "Coincidir por texto de nome ou descrição e restringir por tipo de condição.",
                "value": "{\"and\": [{\"or\": [{\"field\": \"name\", \"op\": \"contains\", \"value\": \"os\"}, {\"field\": \"description\", \"op\": \"contains\", \"value\": \"version\"}]}, {\"field\": \"type\", \"op\": \"eq\", \"value\": \"osVersion\"}]}"
              }
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "en-EN",
                "es-ES",
                "pt-BR",
                "ca-ES",
                "eu-ES"
              ],
              "default": "es-ES"
            },
            "description": "Código de idioma para campos de texto que suportam múltiplos idiomas. Ao criar ou atualizar recursos, isso especifica o idioma dos valores de texto fornecidos. Ao recuperar recursos, isso determina qual variante de idioma dos campos de texto multilíngues é devolvida. Valores aceitos: 'en-EN' (inglês), 'es-ES' (espanhol), 'pt-BR' (português), 'ca-ES' (catalão), 'eu-ES' (euskera). Se não fornecido, o valor padrão é 'es-ES'."
          }
        ],
        "responses": {
          "200": {
            "description": "Lista paginada de tipos de condição recuperada corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConditionTypeV2ListResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta - ID de organização inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Organização não encontrada"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera uma lista paginada de tipos de condição disponíveis que podem ser usados em condições de fluxo. Suporta paginação, ordenação, filtragem e seleção de campos."
      }
    },
    "/v2/organizations/{organization_id}/digital-activity/core-process-groups/{core_process_group_id}/core-processes": {
      "get": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Listar processos core do grupo",
        "operationId": "listDigitalActivityCoreProcessGroupCoreProcesses",
        "description": "Devolve a lista completa atual de processos principais do grupo dentro da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "core_process_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do grupo de processos principais.",
            "example": "64f0c2a1b2d3e4f506070811"
          }
        ],
        "responses": {
          "200": {
            "description": "Processos principais recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDigitalActivityCoreProcessGroupCoreProcessesResponseV2"
                },
                "examples": {
                  "core_processes_list": {
                    "summary": "Lista completa de processos principais do grupo",
                    "value": {
                      "data": [
                        {
                          "name": "Microsoft Word",
                          "process_name": "WINWORD.EXE"
                        },
                        {
                          "name": "Microsoft Excel",
                          "process_name": "EXCEL.EXE"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_path_params": {
                    "summary": "Formato de identificadores inválido",
                    "value": {
                      "error": {
                        "message": "Parámetros de ruta no válidos",
                        "code": "bad_request",
                        "details": "organization_id y core_process_group_id deben tener 24 caracteres hexadecimales."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Grupo de processos principais não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Substituir processos core do grupo",
        "operationId": "replaceDigitalActivityCoreProcessGroupCoreProcesses",
        "description": "Substitui o conjunto completo de processos principais de um grupo dentro da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "core_process_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do grupo de processos principais.",
            "example": "64f0c2a1b2d3e4f506070811"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReplaceDigitalActivityCoreProcessGroupCoreProcessesRequestV2"
              },
              "examples": {
                "full_replace_two_items": {
                  "summary": "Substituição completa com dois processos",
                  "value": {
                    "core_processes": [
                      {
                        "name": "Excel",
                        "process_name": "excel.exe"
                      },
                      {
                        "name": "Adobe Acrobat",
                        "process_name": "acrobat.exe"
                      }
                    ]
                  }
                },
                "full_replace_empty_list": {
                  "summary": "Substituição completa para esvaziar a lista",
                  "value": {
                    "core_processes": []
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Processos principais substituídos com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCoreProcessGroupCoreProcessesResponseV2"
                },
                "examples": {
                  "full_replace_response": {
                    "summary": "Estado final de processos principais após a substituição",
                    "value": {
                      "data": [
                        {
                          "name": "Microsoft Word",
                          "process_name": "WINWORD.EXE"
                        },
                        {
                          "name": "Microsoft Excel",
                          "process_name": "EXCEL.EXE"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros ou corpo da requisição não válidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_request": {
                    "summary": "Requisição inválida",
                    "value": {
                      "error": {
                        "message": "Parámetros o cuerpo de solicitud no válidos",
                        "code": "bad_request",
                        "details": "organization_id y core_process_group_id deben tener 24 caracteres hexadecimales y cada elemento de core_processes debe incluir name y process_name."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Grupo de processos principais não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflito de negócio para a substituição do recurso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "duplicate_process_name": {
                    "summary": "Processo duplicado na coleção",
                    "value": {
                      "error": {
                        "message": "La colección incluye procesos duplicados",
                        "code": "core_process_already_exists",
                        "details": "Cada process_name debe ser único dentro de core_processes."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/digital-activity/core-process-groups/{core_process_group_id}": {
      "get": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Recuperar grupo de processos core",
        "operationId": "getDigitalActivityCoreProcessGroup",
        "description": "Devolve o detalhe de um grupo de processos principais da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "core_process_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do grupo de processos principais.",
            "example": "64f0c2a1b2d3e4f506070811"
          }
        ],
        "responses": {
          "200": {
            "description": "Grupo de processos principais recuperado com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDigitalActivityCoreProcessGroupResponseV2"
                },
                "examples": {
                  "core_process_group_detail": {
                    "summary": "Detalhe do grupo de processos principais",
                    "value": {
                      "id": "64f0c2a1b2d3e4f506070811",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "name": "Grupo de procesos core A",
                      "description": "Grupo principal de procesos de productividad",
                      "workspace_group_id": "64f0c2a1b2d3e4f506070822"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_path_params": {
                    "summary": "Formato de identificadores inválido",
                    "value": {
                      "error": {
                        "message": "Parámetros de ruta no válidos",
                        "code": "bad_request",
                        "details": "organization_id y core_process_group_id deben tener 24 caracteres hexadecimales."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Atualizar grupo de processos core",
        "operationId": "updateDigitalActivityCoreProcessGroup",
        "description": "Atualiza completamente um grupo de processos principais na organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "core_process_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do grupo de processos principais.",
            "example": "64f0c2a1b2d3e4f506070811"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDigitalActivityCoreProcessGroupRequestV2"
              },
              "examples": {
                "full_update_with_description": {
                  "summary": "Atualização completa com descrição",
                  "value": {
                    "name": "Grupo base de productividad",
                    "description": "Grupo principal para procesos de productividad",
                    "workspace_group_id": "64f0c2a1b2d3e4f506070822"
                  }
                },
                "full_update_without_description": {
                  "summary": "Atualização completa sem descrição",
                  "value": {
                    "name": "Grupo base de productividad",
                    "description": null,
                    "workspace_group_id": "64f0c2a1b2d3e4f506070823"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Grupo de processos principais atualizado com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDigitalActivityCoreProcessGroupResponseV2"
                },
                "examples": {
                  "updated": {
                    "summary": "Recurso atualizado",
                    "value": {
                      "id": "64f0c2a1b2d3e4f506070811",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "name": "Grupo base de productividad",
                      "description": "Grupo principal para procesos de productividad",
                      "workspace_group_id": "64f0c2a1b2d3e4f506070822"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Solicitação inválida.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_body": {
                    "summary": "Corpo de solicitação inválido",
                    "value": {
                      "error": {
                        "message": "Cuerpo de solicitud inválido",
                        "code": "bad_request",
                        "details": "name, description y workspace_group_id son obligatorios y deben cumplir el formato esperado."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflito de negócio para a atualização do recurso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "duplicate_name": {
                    "summary": "Nome já registrado",
                    "value": {
                      "error": {
                        "message": "Ya existe un grupo de procesos core con ese nombre",
                        "code": "core_process_group_name_already_exists"
                      }
                    }
                  },
                  "workspace_group_already_assigned": {
                    "summary": "Grupo de workspaces já atribuído",
                    "value": {
                      "error": {
                        "message": "El grupo de workspaces ya está asignado a otro grupo de procesos core",
                        "code": "core_process_group_workspace_group_already_assigned"
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/digital-activity/core-process-metrics": {
      "get": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Listar métricas de processos core",
        "operationId": "listDigitalActivityCoreProcessMetrics",
        "description": "Devolve uma lista paginada de métricas de atividade digital por processos principais da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Campos de resposta separados por vírgulas para cada elemento.",
            "example": "workspace_id,core_process_group_id,reporting_time_hours,month,year"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão JSON de filtros sobre campos filtráveis do recurso.",
            "examples": {
              "simple": {
                "summary": "Filtrar por identificador de workspace",
                "value": "{\"field\":\"workspace_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070811\"}"
              },
              "complex-and": {
                "summary": "Filtrar por ano e limite de atividade",
                "value": "{\"and\":[{\"field\":\"year\",\"op\":\"eq\",\"value\":2025},{\"field\":\"core_activity_time_hours\",\"op\":\"lte\",\"value\":120}]}"
              },
              "complex-or-and": {
                "summary": "Combinar grupos de processos com mês objetivo",
                "value": "{\"and\":[{\"or\":[{\"field\":\"core_process_group_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070822\"},{\"field\":\"reporting_group_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070823\"}]},{\"field\":\"month\",\"op\":\"eq\",\"value\":3}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação com o formato <field>:asc|desc sobre campos escalares ordenáveis da resposta.",
            "example": "reporting_time_hours:desc"
          }
        ],
        "responses": {
          "200": {
            "description": "Métricas de atividade digital por processos principais recuperadas com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDigitalActivityCoreProcessMetricsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com resultados",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "workspace_id": "64f0c2a1b2d3e4f506070811",
                          "core_process_group_id": "64f0c2a1b2d3e4f506070822",
                          "reporting_group_id": "64f0c2a1b2d3e4f506070823",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "core_activity_time_hours": 42.5,
                          "reporting_time_hours": 120.5,
                          "opened_session_time_hours": 150.75,
                          "user_active_time_hours": 98.2,
                          "month": 3,
                          "year": 2025,
                          "deleted_date": null
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no válido",
                        "code": "bad_request",
                        "details": "El parámetro filters debe ser una cadena JSON válida."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/digital-activity/hybrid-work-metrics": {
      "get": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Listar métricas de trabalho híbrido",
        "operationId": "listDigitalActivityHybridWorkMetrics",
        "description": "Devolve uma lista paginada de métricas híbridas de atividade digital da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "include_deleted_workspaces",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Controla a inclusão de workspaces eliminados. Se for false, são excluídos; se for omitido ou true, são incluídos."
          },
          {
            "name": "include_virtual_workspaces",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Controla a inclusão de workspaces virtuais. Se for false, são excluídos; se for omitido ou true, são incluídos."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Campos de resposta separados por vírgulas para cada elemento.",
            "example": "user_name,total_active_time_hours,month,year,organization_id"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão JSON de filtros sobre campos filtráveis do recurso.",
            "examples": {
              "simple": {
                "summary": "Filtrar por usuário",
                "value": "{\"field\":\"user_name\",\"op\":\"contains\",\"value\":\"ana\"}"
              },
              "complex-and": {
                "summary": "Filtrar por ano e atividade total mínima",
                "value": "{\"and\":[{\"field\":\"year\",\"op\":\"eq\",\"value\":2025},{\"field\":\"total_active_time_hours\",\"op\":\"gte\",\"value\":40}]}"
              },
              "complex-or-and": {
                "summary": "Combinar organização e atividade remota",
                "value": "{\"and\":[{\"field\":\"organization_id\",\"op\":\"eq\",\"value\":\"507f1f77bcf86cd799439011\"},{\"field\":\"remote_active_time_hours\",\"op\":\"gte\",\"value\":10}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação com o formato <field>:asc|desc sobre campos escalares ordenáveis da resposta.",
            "example": "total_active_time_hours:desc"
          }
        ],
        "responses": {
          "200": {
            "description": "Métricas híbridas de atividade digital recuperadas com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDigitalActivityHybridWorkMetricsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com resultados",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "user_name": "ana.lopez",
                          "office_active_time_hours": 18.25,
                          "remote_active_time_hours": 22.5,
                          "ambiguous_active_time_hours": 1,
                          "total_active_time_hours": 41.75,
                          "month": 3,
                          "year": 2025,
                          "organization_id": "507f1f77bcf86cd799439011"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no válido",
                        "code": "bad_request",
                        "details": "El parámetro filters debe ser una cadena JSON válida."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/digital-activity/user-metrics": {
      "get": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Listar métricas de usuário",
        "operationId": "listDigitalActivityUserMetrics",
        "description": "Devolve uma lista paginada de métricas de atividade digital por usuário da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Campos de resposta separados por vírgulas para cada elemento.",
            "example": "workspace_id,user_name,user_active_time_hours,month,year"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão JSON de filtros sobre campos filtráveis do recurso.",
            "examples": {
              "simple": {
                "summary": "Filtrar por usuário",
                "value": "{\"field\":\"user_name\",\"op\":\"contains\",\"value\":\"ana\"}"
              },
              "complex-and": {
                "summary": "Filtrar por ano e atividade máxima",
                "value": "{\"and\":[{\"field\":\"year\",\"op\":\"eq\",\"value\":2025},{\"field\":\"user_active_time_hours\",\"op\":\"lte\",\"value\":120}]}"
              },
              "complex-or-and": {
                "summary": "Combinar organização e grupo de reporting",
                "value": "{\"and\":[{\"or\":[{\"field\":\"organization_id\",\"op\":\"eq\",\"value\":\"507f1f77bcf86cd799439011\"},{\"field\":\"organization_id\",\"op\":\"eq\",\"value\":\"507f1f77bcf86cd799439012\"}]},{\"field\":\"reporting_group_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070822\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação com o formato <field>:asc|desc sobre campos escalares ordenáveis da resposta.",
            "example": "user_active_time_hours:desc"
          }
        ],
        "responses": {
          "200": {
            "description": "Métricas de atividade digital por usuário recuperadas com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDigitalActivityUserMetricsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com resultados",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "workspace_id": "64f0c2a1b2d3e4f506070811",
                          "user_name": "ana.lopez",
                          "reporting_group_id": "64f0c2a1b2d3e4f506070822",
                          "reporting_time_hours": 120.5,
                          "opened_session_time_hours": 150.75,
                          "user_active_time_hours": 98.2,
                          "month": 3,
                          "year": 2025,
                          "deleted_date": null,
                          "organization_id": "507f1f77bcf86cd799439011"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no válido",
                        "code": "bad_request",
                        "details": "El parámetro filters debe ser una cadena JSON válida."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/digital-activity/workspace-metrics": {
      "get": {
        "tags": [
          "Atividade digital"
        ],
        "summary": "Listar métricas de workspace",
        "operationId": "listDigitalActivityWorkspaceMetrics",
        "description": "Devolve uma lista paginada de métricas de atividade digital por workspace da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Campos de resposta separados por vírgulas para cada elemento.",
            "example": "workspace_id,reporting_time_hours,month,year"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão JSON de filtros sobre campos filtráveis do recurso.",
            "examples": {
              "simple": {
                "summary": "Filtrar por identificador de workspace",
                "value": "{\"field\":\"workspace_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070811\"}"
              },
              "complex-and": {
                "summary": "Filtrar por ano e limite de sessão aberta",
                "value": "{\"and\":[{\"field\":\"year\",\"op\":\"eq\",\"value\":2025},{\"field\":\"opened_session_time_hours\",\"op\":\"lte\",\"value\":150.75}]}"
              },
              "complex-or-and": {
                "summary": "Combinar grupo de reporting com atividade de usuário",
                "value": "{\"and\":[{\"or\":[{\"field\":\"reporting_group_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070822\"},{\"field\":\"reporting_group_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f506070823\"}]},{\"field\":\"user_active_time_hours\",\"op\":\"gte\",\"value\":80}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação com o formato <field>:asc|desc sobre campos escalares ordenáveis da resposta.",
            "example": "reporting_time_hours:desc"
          }
        ],
        "responses": {
          "200": {
            "description": "Métricas de atividade digital por workspace recuperadas com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDigitalActivityWorkspaceMetricsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com resultados",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "workspace_id": "64f0c2a1b2d3e4f506070811",
                          "reporting_group_id": "64f0c2a1b2d3e4f506070822",
                          "reporting_time_hours": 120.5,
                          "opened_session_time_hours": 150.75,
                          "user_active_time_hours": 98.2,
                          "core_activity_time_hours": 45,
                          "month": 3,
                          "year": 2025,
                          "deleted_date": null
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no válido",
                        "code": "bad_request",
                        "details": "El parámetro filters debe ser una cadena JSON válida."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "A atividade digital não está habilitada para a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "digital_activity_not_enabled": {
                    "summary": "Atividade digital não habilitada",
                    "value": {
                      "error": {
                        "message": "Digital Activity is not enabled for organization",
                        "code": "forbidden"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Recurso inexistente",
                    "value": {
                      "error": {
                        "message": "Recurso no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Limite de solicitações excedido.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Solicitações em excesso",
                    "value": {
                      "error": {
                        "message": "Demasiadas solicitudes",
                        "code": "too_many_requests"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/installed-apps/{installed_app_id}": {
      "get": {
        "tags": [
          "Aplicações instaladas"
        ],
        "summary": "Recuperar um aplicativo instalado",
        "operationId": "get_installed_app_by_id",
        "description": "Devolve os detalhes do aplicativo instalado solicitado dentro do escopo de uma organização.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "installed_app_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do aplicativo instalado.",
            "example": "64f0c2a1b2d3e4f5060709aa"
          }
        ],
        "responses": {
          "200": {
            "description": "Detalhes do aplicativo instalado recuperados corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInstalledAppByIdResponseV2"
                },
                "examples": {
                  "installed_app_details": {
                    "summary": "Resposta de detalhe do aplicativo instalado",
                    "value": {
                      "id": "64f0c2a1b2d3e4f5060709aa",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "name": "Google Chrome",
                      "publisher": "Google LLC",
                      "operating_system": "windows",
                      "notes": "Administrada mediante catálogo de software",
                      "discovered_at": "2026-02-15T09:30:00.000Z",
                      "reported_at": "2026-04-01T07:45:00.000Z",
                      "installations": 4
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_installed_app_id": {
                    "summary": "Formato de identificador de aplicativo instalado inválido",
                    "value": {
                      "error": {
                        "message": "Formato de installed_app_id no válido",
                        "code": "bad_request",
                        "details": "installed_app_id debe ser una cadena hexadecimal en minúsculas de 24 caracteres"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou organização não acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Aplicativo instalado não encontrado dentro do alcance da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "installed_app_not_found": {
                    "summary": "Não se encontrou o aplicativo instalado solicitado",
                    "value": {
                      "error": {
                        "message": "Aplicación instalada no encontrada",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/installed-apps/{installed_app_id}/versions": {
      "get": {
        "tags": [
          "Aplicações instaladas"
        ],
        "summary": "Listar versões observadas para um aplicativo instalado",
        "description": "Devolve uma lista paginada de versões observadas para o aplicativo instalado dentro do alcance da organização.",
        "operationId": "get_installed_app_versions",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "installed_app_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do aplicativo instalado.",
            "example": "64f0c2a1b2d3e4f5060708c1"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos dos elementos de resposta, separados por vírgulas, que devem ser incluídos."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre rotas de campos filtráveis de resposta.",
            "examples": {
              "simple": {
                "summary": "Filtrar por versão exata",
                "value": "{\"field\":\"version\",\"op\":\"eq\",\"value\":\"117.0.5938.149\"}"
              },
              "complex-and": {
                "summary": "Filtrar por uma versão exata dentro de uma expressão AND",
                "value": "{\"and\":[{\"field\":\"version\",\"op\":\"eq\",\"value\":\"117.0.5938.149\"},{\"field\":\"version\",\"op\":\"eq\",\"value\":\"117.0.5938.149\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar alternativas de versão em lógica aninhada",
                "value": "{\"and\":[{\"or\":[{\"field\":\"version\",\"op\":\"eq\",\"value\":\"117.0.5938.149\"},{\"field\":\"version\",\"op\":\"eq\",\"value\":\"118.0.5993.70\"}]},{\"field\":\"version\",\"op\":\"eq\",\"value\":\"118.0.5993.70\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(version|discovered_at|reported_at):(asc|desc)$"
            },
            "description": "Expressão de ordenação no formato <field>:asc|desc."
          }
        ],
        "responses": {
          "200": {
            "description": "Versões de aplicativos instalados recuperadas corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInstalledAppVersionsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com linhas de versões",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "version": "118.0.5993.90",
                          "reported_at": "2026-04-05T10:12:00Z",
                          "discovered_at": "2026-02-01T08:30:00Z"
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Não se encontraram versões",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no valido",
                        "code": "bad_request",
                        "details": "filters debe ser un JSON valido"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Erro de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "O recurso solicitado não foi encontrado dentro do alcance da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "installed_app_not_found": {
                    "summary": "Não se encontrou o aplicativo instalado",
                    "value": {
                      "error": {
                        "message": "No encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro não controlado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/installed-apps/{installed_app_id}/workspaces": {
      "get": {
        "tags": [
          "Aplicações instaladas"
        ],
        "summary": "Listar workspaces para um aplicativo instalado",
        "description": "Devolve uma lista paginada de observações a nível de Workspace para o app instalado selecionado no alcance da organização.",
        "operationId": "get_installed_app_workspaces",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador de organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "installed_app_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador de app instalado.",
            "example": "64f0c2a1b2d3e4f5060709aa"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos de elementos de resposta separados por vírgulas para incluir."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre rotas de campos de resposta filtráveis.",
            "examples": {
              "simple": {
                "summary": "Filtrar por workspace_id",
                "value": "{\"field\":\"workspace_id\",\"op\":\"eq\",\"value\":\"64f0c2a1b2d3e4f5060708f1\"}"
              },
              "complex-and": {
                "summary": "Filtrar por local de instalação e versão",
                "value": "{\"and\":[{\"field\":\"install_location\",\"op\":\"contains\",\"value\":\"Program Files\"},{\"field\":\"version\",\"op\":\"contains\",\"value\":\"124\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar alternativas de installed_at com uma condição de organização",
                "value": "{\"and\":[{\"or\":[{\"field\":\"installed_at\",\"op\":\"eq\",\"value\":\"2025-12-01T08:00:00.000Z\"},{\"field\":\"installed_at\",\"op\":\"eq\",\"value\":\"2025-11-15T09:30:00.000Z\"}]},{\"field\":\"organization_id\",\"op\":\"eq\",\"value\":\"507f1f77bcf86cd799439011\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(workspace_id|organization_id|version|reported_at|install_location|installed_at):(asc|desc)$"
            },
            "description": "Expressão de ordenação com o formato <field>:asc|desc."
          }
        ],
        "responses": {
          "200": {
            "description": "Observações de Workspace de app instalado obtidas corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInstalledAppWorkspacesResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Observações de Workspace paginadas",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "workspace_id": "64f0c2a1b2d3e4f5060708f1",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "version": "124.0.2478.97",
                          "reported_at": "2026-01-15T10:20:30.000Z",
                          "install_location": "C:\\Program Files\\ExampleApp",
                          "installed_at": "2025-12-01T08:00:00.000Z"
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Não se encontraram observações de Workspace",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filters invalido",
                        "code": "bad_request",
                        "details": "filters debe ser una expresion de filtro JSON valida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Não se encontrou o app instalado dentro do alcance de organização autorizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "installed_app_not_found": {
                    "summary": "Não se encontrou o app instalado solicitado",
                    "value": {
                      "error": {
                        "message": "No se encontro la app instalada",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/installed-apps": {
      "get": {
        "tags": [
          "Aplicações instaladas"
        ],
        "summary": "Listar aplicativos instalados",
        "description": "Devolve uma lista paginada de aplicativos instalados disponíveis no alcance da organização.",
        "operationId": "get_installed_apps",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos do elemento de resposta separados por vírgulas que serão incluídos."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre os campos de filtro suportados.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome de aplicativo",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"chrome\"}"
              },
              "complex-and": {
                "summary": "Filtrar por sistema operacional e presença de instalação",
                "value": "{\"and\":[{\"field\":\"operating_system\",\"op\":\"eq\",\"value\":\"Windows\"},{\"field\":\"has_installations\",\"op\":\"eq\",\"value\":true}]}"
              },
              "complex-or-and": {
                "summary": "Combinar alternativas de editor com presença de instalação",
                "value": "{\"and\":[{\"or\":[{\"field\":\"publisher\",\"op\":\"contains\",\"value\":\"microsoft\"},{\"field\":\"publisher\",\"op\":\"contains\",\"value\":\"google\"}]},{\"field\":\"has_installations\",\"op\":\"eq\",\"value\":true}]}"
              }
            }
          },
          {
            "name": "aggregate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 1024
            },
            "description": "Expressão de agregação JSON com `group_by` e `aggregates`. Não pode ser combinada com `fields`.",
            "examples": {
              "group_by_operating_system": {
                "summary": "Agrupar por sistema operacional e contar",
                "value": "{\"group_by\":[\"operating_system\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}"
              },
              "group_by_publisher_avg_installations": {
                "summary": "Agrupar por editor e calcular média de instalações",
                "value": "{\"group_by\":[\"publisher\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"},{\"field\":\"installations\",\"function\":\"avg\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação no formato <field>:asc|desc. No modo agregado, só aceita campos de `group_by` ou aliases agregados (`count`, `<function>_<field>`)."
          }
        ],
        "responses": {
          "200": {
            "description": "Aplicativos instalados recuperados corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInstalledAppsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com aplicativos instalados",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f5060708c1",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "name": "Microsoft Edge",
                          "discovered_at": "2026-03-10T09:00:00Z",
                          "reported_at": "2026-03-15T09:45:11Z",
                          "operating_system": "windows",
                          "publisher": "Microsoft Corporation",
                          "installations": 4
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Não se encontraram aplicativos instalados",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no válido",
                        "code": "bad_request",
                        "details": "filters debe ser un JSON válido"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "O recurso solicitado não foi encontrado no âmbito autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "resource_not_found": {
                    "summary": "Não se encontrou o recurso solicitado",
                    "value": {
                      "error": {
                        "message": "No encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/me": {
      "get": {
        "tags": [
          "Autenticação"
        ],
        "summary": "Validar token e obter contexto atual",
        "description": "Valida o token e retorna o contexto autenticado.",
        "operationId": "get_me",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Contexto autenticado recuperado com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMeResponseV2"
                },
                "examples": {
                  "authenticated_context": {
                    "summary": "Contexto de organização e token",
                    "value": {
                      "organization_id": "507f1f77bcf86cd799439011",
                      "token_id": "507f1f77bcf86cd799439022",
                      "token_name": "api-key-admin",
                      "token_created_at": "2026-03-01T10:15:00Z",
                      "token_expires_at": "2027-03-01T10:15:00Z"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Token inválido, expirado ou ausente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_token": {
                    "summary": "Erro de autenticação",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/microservices/{microservice_id}": {
      "get": {
        "tags": [
          "Microserviços"
        ],
        "summary": "Obter microserviço por identificador",
        "operationId": "get_microservice_by_id",
        "description": "Retorna um microserviço visível para a organização alvo (designer ou marketplace), com estado de habilitação e configuração habilitada quando existente.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização sobre a qual se consulta o microserviço.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "microservice_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do microserviço a recuperar.",
            "example": "65f0d9f2b3c4d5e6f7080911"
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "default": "es-ES",
              "maxLength": 10
            },
            "description": "Idioma para resolver campos multilíngue para um único valor por campo.",
            "example": "es-ES"
          }
        ],
        "responses": {
          "200": {
            "description": "Microserviço recuperado corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMicroserviceByIdResponseV2"
                },
                "examples": {
                  "microservicio_habilitado": {
                    "summary": "Microserviço encontrado com configuração habilitada",
                    "value": {
                      "data": {
                        "id": "65f0d9f2b3c4d5e6f7080911",
                        "organization_id": "507f1f77bcf86cd799439011",
                        "name": "Antivirus Scan",
                        "description": "Escaneo programado de antivirus",
                        "category": "security",
                        "created_at": "2026-05-15T10:00:00Z",
                        "archived_at": null,
                        "type": "standard",
                        "context": "organization",
                        "is_ai_enhanced": false,
                        "enabled": true,
                        "enabled_configuration": {
                          "enabled_at": "2026-05-15T10:30:00Z",
                          "efficiency": 95,
                          "workspace_group_execution": "l1",
                          "individual_execution": "l3",
                          "end_user_execution_workspace_group_ids": [
                            "65f0d9f2b3c4d5e6f7080931",
                            "65f0d9f2b3c4d5e6f7080932"
                          ]
                        }
                      }
                    }
                  },
                  "microservicio_no_habilitado": {
                    "summary": "Microserviço encontrado sem configuração habilitada",
                    "value": {
                      "data": {
                        "id": "65f0d9f2b3c4d5e6f7080912",
                        "organization_id": "507f1f77bcf86cd799439011",
                        "name": "Patch Baseline",
                        "description": "Control de parches pendientes",
                        "category": "maintenance",
                        "created_at": "2026-05-16T12:00:00Z",
                        "archived_at": null,
                        "type": "standard",
                        "context": "organization",
                        "is_ai_enhanced": true,
                        "enabled": false,
                        "enabled_configuration": null
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "id_invalido": {
                    "summary": "Identificador de microserviço inválido",
                    "value": {
                      "error": {
                        "message": "Parametro microservice_id invalido",
                        "code": "bad_request"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Acesso não autorizado à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Microserviço não encontrado no escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "microservice_not_found": {
                    "summary": "Microserviço não encontrado",
                    "value": {
                      "error": {
                        "message": "No encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro não controlado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/microservices": {
      "get": {
        "tags": [
          "Microserviços"
        ],
        "summary": "Listar microserviços de uma organização",
        "operationId": "get_microservices",
        "description": "Retorna uma lista paginada de microserviços visíveis para a organização alvo (própria ou delegada conforme permissões do chamador), enriquecida com o estado de habilitação e sua configuração associada quando existente. A resolução de habilitação é realizada estritamente com o organization_id enviado no caminho.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização alvo sobre a qual se consulta o catálogo; a habilitação é verificada contra este mesmo identificador.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "default": "es-ES",
              "maxLength": 10
            },
            "description": "Idioma para resolver os campos multilíngue da resposta para um único valor por campo.",
            "example": "es-ES"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Quantidade de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Campos de resposta a serem incluídos, separados por vírgulas."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão JSON de filtros sobre campos filtráveis do recurso.",
            "examples": {
              "simple": {
                "summary": "Filtro simples por nome",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"backup\"}"
              },
              "complex-and": {
                "summary": "Filtro composto com AND",
                "value": "{\"and\":[{\"field\":\"type\",\"op\":\"eq\",\"value\":\"standard\"},{\"field\":\"context\",\"op\":\"eq\",\"value\":\"organization\"}]}"
              },
              "complex-or-and": {
                "summary": "Filtro composto com OR e AND",
                "value": "{\"and\":[{\"or\":[{\"field\":\"category\",\"op\":\"eq\",\"value\":\"security\"},{\"field\":\"category\",\"op\":\"eq\",\"value\":\"automation\"}]},{\"field\":\"name\",\"op\":\"contains\",\"value\":\"agent\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Microserviços recuperados corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMicroservicesResponseV2"
                },
                "examples": {
                  "resultado_con_datos": {
                    "summary": "Lista com resultados",
                    "value": {
                      "has_next": false,
                      "data": [
                        {
                          "id": "65f0d9f2b3c4d5e6f7080911",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "name": "Antivirus Scan",
                          "description": "Escaneo programado de antivirus",
                          "category": "security",
                          "created_at": "2026-05-15T10:00:00Z",
                          "archived_at": null,
                          "type": "standard",
                          "context": "organization",
                          "is_ai_enhanced": false,
                          "enabled": true,
                          "enabled_configuration": {
                            "enabled_at": "2026-05-15T10:30:00Z",
                            "efficiency": 95,
                            "workspace_group_execution": "l1",
                            "individual_execution": "l3",
                            "end_user_execution_workspace_group_ids": [
                              "65f0d9f2b3c4d5e6f7080931",
                              "65f0d9f2b3c4d5e6f7080932"
                            ]
                          }
                        },
                        {
                          "id": "65f0d9f2b3c4d5e6f7080912",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "name": "Patch Baseline",
                          "description": "Control de parches pendientes",
                          "category": "maintenance",
                          "created_at": "2026-05-16T12:00:00Z",
                          "archived_at": null,
                          "type": "standard",
                          "context": "organization",
                          "is_ai_enhanced": true,
                          "enabled": false,
                          "enabled_configuration": null
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "filters_invalido": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros inválido",
                        "code": "bad_request",
                        "details": "El parámetro filters debe ser una cadena JSON válida."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Acesso não autorizado à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso solicitado não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "resource_not_found": {
                    "summary": "Recurso não encontrado",
                    "value": {
                      "error": {
                        "message": "No encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro não controlado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/operations/{operation_id}": {
      "get": {
        "tags": [
          "Operações"
        ],
        "summary": "Obter detalhe de uma operação",
        "operationId": "get_operation_by_id",
        "description": "Retorna o detalhe público de uma operação existente na organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "operation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da operação.",
            "example": "64f0c2a1b2d3e4f506070811"
          }
        ],
        "responses": {
          "200": {
            "description": "Operação recuperada corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOperationByIdResponseV2"
                },
                "examples": {
                  "operation_detail": {
                    "summary": "Detalhe da operação",
                    "value": {
                      "id": "64f0c2a1b2d3e4f506070811",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "name": "remote_assistance",
                      "description": "Operación de asistencia remota",
                      "status": "finished",
                      "created_at": "2026-03-10T09:11:45Z",
                      "started_at": "2026-03-10T09:12:00Z",
                      "ended_at": "2026-03-10T09:15:17Z",
                      "microservice_id": "64f0c2a1b2d3e4f506070833",
                      "flow_id": "64f0c2a1b2d3e4f506070844",
                      "remote_support": {
                        "start_date": "2026-03-10T09:12:00Z",
                        "end_date": "2026-03-10T09:15:17Z",
                        "type": "unattended"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de caminho inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_identifier": {
                    "summary": "Identificador com formato inválido",
                    "value": {
                      "error": {
                        "message": "El identificador de operación no es válido",
                        "code": "bad_request",
                        "details": "operation_id debe tener 24 caracteres hexadecimales en minúscula."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Operação não encontrada na organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Operação inexistente",
                    "value": {
                      "error": {
                        "message": "Operación no encontrada",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/operations/{operation_id}/results": {
      "get": {
        "tags": [
          "Operações"
        ],
        "summary": "Obter resultados de uma operação",
        "operationId": "get_operation_results",
        "description": "Retorna resultados paginados de execução para uma operação dentro da organização autorizada.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "operation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da operação.",
            "example": "64f0c2a1b2d3e4f506070811"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "description": "Página para consultar."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Lista separada por vírgulas com campos de resposta a serem incluídos.",
            "example": "id,workspace_id,status,name,start_date,end_date"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação no formato <field>:asc|desc. No modo agregado, só aceita campos de `group_by` ou aliases agregados (`count`, `<function>_<field>`).",
            "example": "start_date:desc"
          },
          {
            "name": "aggregate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 1024
            },
            "description": "Expressão JSON para agregação. Estrutura: {\"group_by\":[\"field\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}. Não pode ser combinado com `fields`.",
            "examples": {
              "group-by-status-count": {
                "summary": "Agrupar por estado e contar",
                "value": "{\"group_by\":[\"status\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}"
              },
              "group-by-status-avg-script-duration": {
                "summary": "Agrupar por estado e calcular média",
                "value": "{\"group_by\":[\"status\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"},{\"field\":\"script_duration\",\"function\":\"avg\"}]}"
              }
            }
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Expressão JSON de filtros sobre campos permitidos.",
            "examples": {
              "simple": {
                "summary": "Filtro simples por nome de máquina",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"srv\"}"
              },
              "complex-and": {
                "summary": "Filtro composto com condições AND",
                "value": "{\"and\":[{\"field\":\"status\",\"op\":\"eq\",\"value\":\"completed\"},{\"field\":\"name\",\"op\":\"contains\",\"value\":\"win\"}]}"
              },
              "complex-or-and": {
                "summary": "Filtro composto com OR aninhado e AND",
                "value": "{\"and\":[{\"or\":[{\"field\":\"status\",\"op\":\"eq\",\"value\":\"error\"},{\"field\":\"status\",\"op\":\"eq\",\"value\":\"timeout\"}]},{\"field\":\"name\",\"op\":\"contains\",\"value\":\"desk\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resultados recuperados corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOperationResultsResponseV2"
                },
                "examples": {
                  "results_page": {
                    "summary": "Página de resultados da operação",
                    "value": {
                      "data": [
                        {
                          "id": "66b5f6d2f8d5a4d8a7f1c101",
                          "operation_id": "64f0c2a1b2d3e4f506070811",
                          "workspace_id": "66b5f6d2f8d5a4d8a7f1c301",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "status": "completed",
                          "name": "ws-001",
                          "start_date": "2026-05-10T10:15:30Z",
                          "end_date": "2026-05-10T10:16:41Z",
                          "script_detail": "Script ejecutado correctamente",
                          "script_duration": 71,
                          "script_response": [
                            {
                              "timestamp": "2026-05-10T10:15:35.100Z",
                              "line": "Linea inicial\nDetalle multilinea"
                            },
                            {
                              "timestamp": "2026-05-10T10:15:37.100Z",
                              "line": "Segundo bloque OUT"
                            }
                          ]
                        }
                      ],
                      "has_next": true
                    }
                  },
                  "aggregated_by_status": {
                    "summary": "Resultado agregado por estado",
                    "value": {
                      "has_next": false,
                      "data": [
                        {
                          "status": "completed",
                          "count": 120,
                          "avg_script_duration": 17.4
                        },
                        {
                          "status": "error",
                          "count": 45,
                          "avg_script_duration": 3.1
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de consulta inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_parameters": {
                    "summary": "Erro de validação de parâmetros",
                    "value": {
                      "error": {
                        "message": "Parámetros de consulta inválidos",
                        "code": "BAD_REQUEST"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Falha de autorização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Operação não encontrada na organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Operação inexistente",
                    "value": {
                      "error": {
                        "message": "Operación no encontrada",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Erro inesperado",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/entity-limits": {
      "get": {
        "tags": [
          "Organização"
        ],
        "summary": "Ver limites de entidades",
        "operationId": "get_organization_entity_limits",
        "description": "Retorna os limites de criação por tipo de entidade para a organização solicitada. Esses valores indicam quantos recursos de cada tipo a organização pode criar.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização alvo.",
            "example": "507f1f77bcf86cd799439011"
          }
        ],
        "responses": {
          "200": {
            "description": "Limites de entidades recuperados corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOrganizationEntityLimitsResponseV2"
                },
                "examples": {
                  "ok_response": {
                    "summary": "Limites eficazes por tipo de entidade",
                    "value": {
                      "organization_id": "507f1f77bcf86cd799439011",
                      "limits": {
                        "tenants": 100,
                        "reporting_groups": 500,
                        "workspace_groups": 1000,
                        "workspace_group_schedules_per_group": 10,
                        "flows": 100,
                        "microservices": 500,
                        "reports": 500,
                        "webapps": 100,
                        "webhooks": 100,
                        "licenses": 500,
                        "alert_settings": 100,
                        "roles": 100,
                        "users": 1500,
                        "patching_policies": 50,
                        "patching_targets": 50,
                        "policies": 50,
                        "microservice_categories": 100,
                        "domains": 5,
                        "sso_integrations": 5,
                        "product_configs": 15,
                        "modules": 50,
                        "api_keys": 15
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou sem acesso à organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Organização não encontrada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/patch-policy-targets": {
      "get": {
        "tags": [
          "Alvos de política de patches"
        ],
        "summary": "Listar alvos de política de patches",
        "operationId": "listPatchPolicyTargets",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página (padrão: 1)"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 100,
              "minimum": 1
            },
            "description": "Itens por página (padrão: 100, máx.: 100)"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Campo de ordenação com sufixo de ordem opcional (:asc ou :desc) Use os nomes das propriedades da resposta Campos válidos: id, name, created_at, timezone, should_restart, wake_on_lan, force_patching_configuration, is_in_maintenance, patch_policy_target_type Exemplo: \"name:asc\" ou \"created_at:desc\""
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Lista de campos separados por vírgulas para incluir em cada elemento de objetivo de política de patches. Campos selecionáveis: id, name, created_by, created_at, timezone, should_restart, wake_on_lan, force_patching_configuration, is_in_maintenance, weeks, schedule, patch_policy_target_type, patch_policy_id. O campo id sempre é incluído.",
            "example": "name,timezone,patch_policy_id"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Filtere alvos de política de patches por um ou mais critérios. Forneça um objeto JSON com condições de filtro. Pode filtrar por qualquer campo retornado na resposta. Use operadores de comparação (eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, endsWith, between) e combine múltiplas condições com operadores lógicos (and, or). Tamanho máximo: 5120 caracteres.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome do alvo",
                "description": "Retorna alvos de política de patch cujo nome contém o texto fornecido.",
                "value": "{\"field\": \"name\", \"op\": \"contains\", \"value\": \"Base\"}"
              },
              "complex-and": {
                "summary": "Filtrar por tipo de alvo e comportamento de reinício",
                "description": "Retorna alvos do Windows que requerem reinício após a aplicação de patches.",
                "value": "{\"and\": [{\"field\": \"patch_policy_target_type\", \"op\": \"eq\", \"value\": \"windows\"}, {\"field\": \"should_restart\", \"op\": \"eq\", \"value\": true}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "description": "Coincidir com múltiplos fusos horários e excluir alvos em manutenção.",
                "value": "{\"and\": [{\"or\": [{\"field\": \"timezone\", \"op\": \"eq\", \"value\": \"UTC\"}, {\"field\": \"timezone\", \"op\": \"eq\", \"value\": \"America/New_York\"}]}, {\"field\": \"is_in_maintenance\", \"op\": \"eq\", \"value\": false}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista paginada de alvos de política de patches recuperada corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PatchPolicyTargetV2ListResponseV2"
                },
                "examples": {
                  "single-target": {
                    "summary": "Alvo de política de patches único",
                    "value": {
                      "has_next": false,
                      "data": [
                        {
                          "id": "66ab6cf4d4d2e709bafd404c",
                          "name": "Base",
                          "created_by": "6439606652fc0c0051f1787b",
                          "created_at": "2024-08-01T11:09:40.719Z",
                          "timezone": "UTC",
                          "should_restart": true,
                          "wake_on_lan": true,
                          "force_patching_configuration": false,
                          "is_in_maintenance": false,
                          "weeks": [
                            1,
                            2
                          ],
                          "schedule": {
                            "MONDAY": {},
                            "TUESDAY": {},
                            "WEDNESDAY": {},
                            "THURSDAY": {
                              "9": [
                                15,
                                30,
                                45
                              ],
                              "10": [
                                0,
                                15,
                                30,
                                45
                              ],
                              "11": [
                                0,
                                15,
                                30,
                                45
                              ],
                              "12": [
                                0,
                                15,
                                30,
                                45
                              ],
                              "13": [
                                0,
                                15,
                                30,
                                45
                              ],
                              "14": [
                                0,
                                15,
                                30,
                                45
                              ],
                              "15": [
                                0
                              ]
                            },
                            "FRIDAY": {},
                            "SATURDAY": {},
                            "SUNDAY": {}
                          },
                          "patch_policy_target_type": "windows",
                          "patch_policy_id": "507f1f77bcf86cd799439011"
                        }
                      ]
                    }
                  },
                  "multiple-targets": {
                    "summary": "Múltiplos alvos de política de patches",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "66ab6cf4d4d2e709bafd404c",
                          "name": "Base",
                          "created_by": "6439606652fc0c0051f1787b",
                          "created_at": "2024-08-01T11:09:40.719Z",
                          "timezone": "UTC",
                          "should_restart": true,
                          "wake_on_lan": true,
                          "force_patching_configuration": false,
                          "is_in_maintenance": false,
                          "weeks": [
                            1,
                            2
                          ],
                          "schedule": {
                            "MONDAY": {},
                            "TUESDAY": {},
                            "WEDNESDAY": {},
                            "THURSDAY": {
                              "9": [
                                15,
                                30,
                                45
                              ],
                              "10": [
                                0,
                                15,
                                30,
                                45
                              ]
                            },
                            "FRIDAY": {},
                            "SATURDAY": {},
                            "SUNDAY": {}
                          },
                          "patch_policy_target_type": "windows",
                          "patch_policy_id": "507f1f77bcf86cd799439011"
                        },
                        {
                          "id": "66ab6cf4d4d2e709bafd404d",
                          "name": "Linux Base",
                          "created_by": "6439606652fc0c0051f1787b",
                          "created_at": "2024-08-02T10:00:00.000Z",
                          "timezone": "America/New_York",
                          "should_restart": false,
                          "wake_on_lan": false,
                          "force_patching_configuration": true,
                          "is_in_maintenance": false,
                          "weeks": [
                            1
                          ],
                          "schedule": {
                            "MONDAY": {
                              "8": [
                                0,
                                30
                              ]
                            },
                            "TUESDAY": {},
                            "WEDNESDAY": {},
                            "THURSDAY": {},
                            "FRIDAY": {},
                            "SATURDAY": {},
                            "SUNDAY": {}
                          },
                          "patch_policy_target_type": "linux",
                          "patch_policy_id": "507f1f77bcf86cd799439012"
                        }
                      ]
                    }
                  },
                  "empty-list": {
                    "summary": "Lista vazia quando não existem alvos",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  },
                  "no-patch-policy": {
                    "summary": "Alvo sem política de patches atribuída",
                    "value": {
                      "has_next": false,
                      "data": [
                        {
                          "id": "66ab6cf4d4d2e709bafd404c",
                          "name": "Base",
                          "created_by": "6439606652fc0c0051f1787b",
                          "created_at": "2024-08-01T11:09:40.719Z",
                          "timezone": "UTC",
                          "should_restart": true,
                          "wake_on_lan": true,
                          "force_patching_configuration": false,
                          "is_in_maintenance": false,
                          "weeks": [
                            1,
                            2
                          ],
                          "schedule": {
                            "MONDAY": {},
                            "TUESDAY": {},
                            "WEDNESDAY": {},
                            "THURSDAY": {},
                            "FRIDAY": {},
                            "SATURDAY": {},
                            "SUNDAY": {}
                          },
                          "patch_policy_target_type": null,
                          "patch_policy_id": null
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Paginação, ordenação ou filtros inválidos."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado: o usuário não tem acesso à organização, ou a organização não existe"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera uma lista paginada de alvos de política de patches para uma organização. Suporta paginação, ordenação e filtração mediante uma cadeia de filtros JSON. Os alvos de política de patches definem quando e como os patches são aplicados aos Workspaces."
      }
    },
    "/v2/organizations/{organization_id}/product-configs": {
      "get": {
        "tags": [
          "Configurações de produto"
        ],
        "summary": "Listar configurações de produto",
        "operationId": "listProductConfigs",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página (padrão: 1)"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 100,
              "minimum": 1
            },
            "description": "Itens por página (padrão: 100, máximo: 100)"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Campo de ordenação com sufixo de ordem opcional (:asc ou :desc) Utilize os nomes de propriedades da resposta Campos válidos: id, environment, created_at, active, product_id, region Exemplo: \"product_id:asc\" ou \"created_at:desc\""
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Lista separada por vírgulas dos campos para incluir em cada item de configuração de produto. Campos selecionáveis: id, environment, created_at, active, product_id, region. O campo id sempre é incluído.",
            "example": "environment,active,region"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Filtra configurações de produto por um ou mais critérios. Fornece um objeto JSON com condições de filtro. Pode filtrar por qualquer campo retornado na resposta. Usa operadores de comparação (eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, endsWith, between) e combina múltiplas condições com operadores lógicos (and, or). Tamanho máximo: 5120 caracteres.",
            "examples": {
              "simple": {
                "summary": "Filtrar por ambiente",
                "description": "Retorna configurações de produto para um único ambiente.",
                "value": "{\"field\": \"environment\", \"op\": \"eq\", \"value\": \"PRODUCTION\"}"
              },
              "complex-and": {
                "summary": "Filtrar por estado e região",
                "description": "Retorna configurações de produto ativas em uma região específica.",
                "value": "{\"and\": [{\"field\": \"active\", \"op\": \"eq\", \"value\": true}, {\"field\": \"region\", \"op\": \"eq\", \"value\": \"us-east\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "description": "Coincidir com múltiplos ambientes e restringir por produto.",
                "value": "{\"and\": [{\"or\": [{\"field\": \"environment\", \"op\": \"eq\", \"value\": \"PRODUCTION\"}, {\"field\": \"environment\", \"op\": \"eq\", \"value\": \"STAGING\"}]}, {\"field\": \"product_id\", \"op\": \"eq\", \"value\": \"507f1f77bcf86cd799439001\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista paginada de configurações de produto recuperada corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductConfigV2ListResponseV2"
                },
                "examples": {
                  "single-config": {
                    "summary": "Configuração de produto única",
                    "value": {
                      "has_next": false,
                      "data": [
                        {
                          "id": "507f1f77bcf86cd799439011",
                          "environment": "PRODUCTION",
                          "created_at": "2024-01-15T10:30:00.000Z",
                          "active": true,
                          "product_id": "507f1f77bcf86cd799439001",
                          "region": "us-east"
                        }
                      ]
                    }
                  },
                  "multiple-configs": {
                    "summary": "Múltiplas configurações de produto",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "507f1f77bcf86cd799439011",
                          "environment": "PRODUCTION",
                          "created_at": "2024-01-15T10:30:00.000Z",
                          "active": true,
                          "product_id": "507f1f77bcf86cd799439001",
                          "region": "us-east"
                        },
                        {
                          "id": "507f1f77bcf86cd799439012",
                          "environment": "STAGING",
                          "created_at": "2024-01-20T14:45:00.000Z",
                          "active": false,
                          "product_id": "507f1f77bcf86cd799439001",
                          "region": null
                        }
                      ]
                    }
                  },
                  "empty-list": {
                    "summary": "Lista vazia quando não existem configurações",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Requisição incorreta. Paginação, ordenação ou filtros inválidos."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado: o usuário não tem acesso à organização ou a organização não existe"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera uma lista paginada de configurações de produto para a organização especificada. Retorna um conjunto de objetos de configuração de produto que contém detalhes de configuração, incluindo ambiente, estado, informação do produto e região. Suporta paginação, ordenação e filtração mediante uma cadeia de filtros JSON."
      }
    },
    "/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/agent-versions/catalog": {
      "get": {
        "tags": [
          "Grupos de relatório"
        ],
        "summary": "Obter catálogo de versões de agente",
        "operationId": "get_reporting_group_agent_versions_catalog",
        "description": "Retorna o catálogo de versões permitidas de agente para o grupo de relatório selecionado.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização alvo.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "reporting_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do grupo de relatório alvo.",
            "example": "507f1f77bcf86cd799439022"
          }
        ],
        "responses": {
          "200": {
            "description": "Catálogo de versões recuperado corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportingGroupAgentVersionsCatalogResponseV2"
                },
                "examples": {
                  "ok_response": {
                    "summary": "Catálogo por plataformas",
                    "value": {
                      "windows_cp": [
                        "2.30.4"
                      ],
                      "windows": [
                        "2.31.1",
                        "2.30.4"
                      ],
                      "macos": [
                        "1.10.0"
                      ],
                      "linux": [
                        "1.12.0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Parâmetros inválidos."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado."
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de relatório não encontrado."
          },
          "409": {
            "$ref": "#/components/responses/Conflict",
            "description": "O grupo não permite autogestão de versões de agente."
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/agent-versions": {
      "get": {
        "tags": [
          "Grupos de relatório"
        ],
        "summary": "Obter configuração de versões de agente",
        "operationId": "get_reporting_group_agent_versions",
        "description": "Retorna a configuração eficaz de versões de agente para o grupo de relatório solicitado. Este endpoint só está disponível quando o grupo de relatório tem uma configuração de produto com autogestão de versões habilitada; caso contrário, retorna 409. A habilitação dessa capacidade é uma configuração de plataforma gerida fora do cliente API. A lista de grupos de relatório informa essa capacidade através do campo \"can_manage_agent_versions\". Para leitura com chave de API, é necessário a permissão \"Equipe de L3 de engenharia\" ou o papel \"Administrador de organização\".",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização alvo.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "reporting_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do grupo de relatório alvo.",
            "example": "507f1f77bcf86cd799439022"
          }
        ],
        "responses": {
          "200": {
            "description": "Versões de agente recuperadas corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportingGroupAgentVersionsResponseV2"
                },
                "examples": {
                  "ok_response": {
                    "summary": "Versões eficazes do grupo",
                    "value": {
                      "agent_auto_update": true,
                      "versions": {
                        "windows_cp": {
                          "early": "latest",
                          "production": "latest"
                        },
                        "windows": {
                          "early": "2.20.0",
                          "production": "2.19.3"
                        },
                        "macos": {
                          "early": "latest",
                          "production": "1.9.2"
                        },
                        "linux": {
                          "early": "latest",
                          "production": "1.11.0"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Parâmetros de caminho inválidos."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado."
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de relatório não encontrado."
          },
          "409": {
            "$ref": "#/components/responses/Conflict",
            "description": "O grupo não permite autogestão de versões de agente."
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      },
      "put": {
        "tags": [
          "Grupos de relatório"
        ],
        "summary": "Atualizar configuração de versões de agente",
        "operationId": "update_reporting_group_agent_versions",
        "description": "Atualiza por substituição completa a configuração de versões de agente para o grupo de relatório solicitado. Este endpoint só está disponível quando o grupo de relatório tem uma configuração de produto com autogestão de versões habilitada; caso contrário, retorna 409. A habilitação dessa capacidade é uma configuração de plataforma gerida fora do cliente API. A lista de grupos de relatório informa essa capacidade através do campo \"can_manage_agent_versions\". Para atualização com chave de API, é necessário o papel \"Administrador de organização\".",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização alvo.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "reporting_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do grupo de relatório alvo.",
            "example": "507f1f77bcf86cd799439022"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReportingGroupAgentVersionsRequestV2"
              },
              "examples": {
                "full_replacement": {
                  "summary": "Atualização completa",
                  "value": {
                    "agent_auto_update": false,
                    "versions": {
                      "windows_cp": {
                        "early": "latest",
                        "production": "latest"
                      },
                      "windows": {
                        "early": "2.31.0",
                        "production": "2.30.4"
                      },
                      "macos": {
                        "early": "latest",
                        "production": "1.10.0"
                      },
                      "linux": {
                        "early": "latest",
                        "production": "1.12.0"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Versões de agente atualizadas corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportingGroupAgentVersionsResponseV2"
                },
                "examples": {
                  "ok_response": {
                    "summary": "Versões atualizadas do grupo",
                    "value": {
                      "agent_auto_update": false,
                      "versions": {
                        "windows_cp": {
                          "early": "latest",
                          "production": "latest"
                        },
                        "windows": {
                          "early": "2.31.0",
                          "production": "2.30.4"
                        },
                        "macos": {
                          "early": "latest",
                          "production": "1.10.0"
                        },
                        "linux": {
                          "early": "latest",
                          "production": "1.12.0"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Parâmetros de caminho ou corpo inválidos."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado."
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de relatório não encontrado."
          },
          "409": {
            "$ref": "#/components/responses/Conflict",
            "description": "O grupo não permite autogestão de versões de agente."
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}": {
      "get": {
        "tags": [
          "Grupos de relatório"
        ],
        "summary": "Obter relatório mensal de um grupo de relatório",
        "description": "Retorna o relatório mensal de suporte para o grupo de relatório e período solicitado, junto com as métricas atuais do grupo.",
        "operationId": "get_reportinggroup_monthly_report",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "reporting_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do grupo de relatório.",
            "example": "507f1f77bcf86cd799439020"
          },
          {
            "name": "period",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}(0[1-9]|1[0-2])$",
              "minLength": 6,
              "maxLength": 6
            },
            "description": "Período mensal solicitado no formato yyyymm.",
            "example": "202606"
          }
        ],
        "responses": {
          "200": {
            "description": "Relatório mensal obtido corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReportingGroupMonthlyReportResponseV2"
                },
                "examples": {
                  "ok": {
                    "summary": "Resposta correta",
                    "value": {
                      "reporting_group_id": "507f1f77bcf86cd799439020",
                      "organization_id": "507f1f77bcf86cd799439011",
                      "period_year": 2026,
                      "period_month": 6,
                      "applied_patches": 58,
                      "critical_patches": 6,
                      "security_patches": 17,
                      "other_patches": 35,
                      "total_used_apps": 42,
                      "top_apps": [
                        {
                          "app_name": "Google Chrome",
                          "usage_days": 21
                        },
                        {
                          "app_name": "Microsoft Teams",
                          "usage_days": 19
                        }
                      ],
                      "automatic_remediations": {
                        "microservices": 4,
                        "flows": 11
                      },
                      "current_reporting_group_name": "Madrid - Finance",
                      "current_total_workspaces": 132,
                      "current_total_workspace_users": 247,
                      "current_workspace_antivirus_statistics": {
                        "workspaces_without_antivirus": 9,
                        "workspaces_with_antivirus": {
                          "total": 123,
                          "by_status": {
                            "unknown": 5,
                            "not_installed": 7,
                            "installed_stopped": 3,
                            "installed_working": 108
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Solicitação inválida.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "period_invalid": {
                    "summary": "Período inválido",
                    "value": {
                      "error": {
                        "message": "El parametro period debe tener formato yyyymm.",
                        "code": "invalid_request",
                        "details": "Use seis digitos con mes valido entre 01 y 12."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado para esta organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Não autorizado",
                    "value": {
                      "error": {
                        "message": "No autorizado.",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Relatório mensal não encontrado para o grupo de relatório e período indicados.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Não encontrado",
                    "value": {
                      "error": {
                        "message": "No se encontro el reporte mensual solicitado.",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "internal_error": {
                    "summary": "Erro interno",
                    "value": {
                      "error": {
                        "message": "Se produjo un error interno.",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/sessions/{session_id}": {
      "get": {
        "tags": [
          "Sessões"
        ],
        "summary": "Recuperar uma sessão",
        "operationId": "get_session_by_id",
        "description": "Retorna detalhes centrados na sessão solicitada dentro do alcance de uma organização.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "pattern": "^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$",
              "minLength": 36,
              "maxLength": 36
            },
            "description": "Identificador da sessão.",
            "example": "550E8400-E29B-41D4-A716-446655440000"
          }
        ],
        "responses": {
          "200": {
            "description": "Detalhes da sessão recuperados corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessionByIdResponseV2"
                },
                "examples": {
                  "session_details": {
                    "summary": "Resposta de detalhes da sessão",
                    "value": {
                      "id": "550E8400-E29B-41D4-A716-446655440000",
                      "user_name": "contoso\\jdoe",
                      "session_type": "vdi_desktop",
                      "windows_session_id": 7,
                      "connection_state": "active",
                      "start_date": "2026-03-15T08:30:00Z",
                      "session_status": "active_notifications",
                      "platform_type": "windows",
                      "connected": true,
                      "current_session_id": 41,
                      "current_dc_name": "dc-eu-01",
                      "last_connection_time": "2026-03-15T09:45:11Z",
                      "log_on_duration": 35,
                      "session_key": "6BA7B810-9DAD-11D1-80B4-00C04FD430C8",
                      "flexx_analyzer_executed": true,
                      "cpu_usage": 34.2,
                      "ram_usage_gb": 3.8,
                      "rtt_usage": 18.1,
                      "current_uid_usage": 2.4,
                      "ram_usage": 3891,
                      "ram_percentage": 47,
                      "number_alerts_user": 0,
                      "number_alerts_vm": 1,
                      "workspace_id": "64f0c2a1b2d3e4f5060708aa"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_session_id": {
                    "summary": "Formato de identificador de sessão inválido",
                    "value": {
                      "error": {
                        "message": "Formato de session_id no valido",
                        "code": "bad_request",
                        "details": "session_id debe ser un UUID en mayusculas con formato 8-4-4-4-12"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Sessão não encontrada dentro do alcance autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "session_not_found": {
                    "summary": "A sessão solicitada não foi encontrada",
                    "value": {
                      "error": {
                        "message": "Sesion no encontrada",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/sessions": {
      "get": {
        "tags": [
          "Sessões"
        ],
        "summary": "Listar sessões",
        "operationId": "get_sessions",
        "description": "Retorna uma lista paginada de sessões da organização.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos de elementos de resposta separados por vírgulas."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre rotas de campos de resposta filtráveis.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome de usuário",
                "value": "{\"field\":\"user_name\",\"op\":\"contains\",\"value\":\"jdoe\"}"
              },
              "complex-and": {
                "summary": "Filtrar por estado e estado de conexão",
                "value": "{\"and\":[{\"field\":\"session_status\",\"op\":\"eq\",\"value\":\"active\"},{\"field\":\"connection_state\",\"op\":\"eq\",\"value\":\"active\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"connection_state\",\"op\":\"eq\",\"value\":\"active\"},{\"field\":\"connection_state\",\"op\":\"eq\",\"value\":\"disconnected\"}]},{\"field\":\"current_dc_name\",\"op\":\"contains\",\"value\":\"dc-eu\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação no formato <field>:asc|desc. No modo agregado, só aceita campos de `group_by` ou aliases agregados (`count`, `<function>_<field>`)."
          },
          {
            "name": "aggregate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 1024
            },
            "description": "Expressão JSON para agregação. Estrutura: {\"group_by\":[\"field\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}. Não pode ser combinado com `fields`.",
            "examples": {
              "group-by-connection-state-count": {
                "summary": "Agrupar por estado de conexão e contar",
                "value": "{\"group_by\":[\"connection_state\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}"
              },
              "group-by-platform-avg-cpu": {
                "summary": "Agrupar por plataforma e calcular média",
                "value": "{\"group_by\":[\"platform_type\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"},{\"field\":\"cpu_usage\",\"function\":\"avg\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sessões recuperadas corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessionsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com sessões",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "550E8400-E29B-41D4-A716-446655440000",
                          "user_name": "contoso\\jdoe",
                          "session_type": "vdi_desktop",
                          "windows_session_id": 7,
                          "connection_state": "active",
                          "start_date": "2026-03-15T08:30:00Z",
                          "cpu_usage": 34.2,
                          "ram_usage_gb": 3.8,
                          "rtt_usage": 18.1,
                          "session_status": "active",
                          "platform_type": "windows",
                          "connected": true,
                          "current_session_id": 41,
                          "current_dc_name": "dc-eu-01",
                          "current_uid_usage": 2.4,
                          "flexx_analyzer_executed": false,
                          "last_connection_time": "2026-03-15T09:45:11Z",
                          "log_on_duration": 35,
                          "number_alerts_user": 0,
                          "number_alerts_vm": 1,
                          "ram_usage": 3891,
                          "ram_percentage": 47,
                          "session_key": "6BA7B810-9DAD-11D1-80B4-00C04FD430C8",
                          "workspace_id": "64f0c2a1b2d3e4f5060708aa",
                          "organization_id": "507f1f77bcf86cd799439011"
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Nenhuma sessão encontrada",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  },
                  "aggregated_by_connection_state": {
                    "summary": "Resultado agregado por estado de conexão",
                    "value": {
                      "has_next": false,
                      "data": [
                        {
                          "connection_state": "active",
                          "count": 120,
                          "avg_cpu_usage": 17.4
                        },
                        {
                          "connection_state": "disconnected",
                          "count": 45,
                          "avg_cpu_usage": 3.1
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros inválido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON válida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso solicitado não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "resource_not_found": {
                    "summary": "Não se encontrou o recurso solicitado",
                    "value": {
                      "error": {
                        "message": "No encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspace-groups/{workspace_group_id}/workspaces": {
      "get": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Espaços de trabalho atribuídos",
        "operationId": "listWorkspaceGroupsWorkspaces",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de workspaces",
            "example": "507f1f77bcf86cd799439020"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            },
            "description": "Número da página (padrão: 1)"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 100,
              "minimum": 1
            },
            "description": "Itens por página (padrão: 100, máx.: 100)"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Campo de ordenação com sufixo de ordem opcional (:asc ou :desc). Use nomes das propriedades da resposta: id, organization_id, name, related_environment, operating_system, ip_address, type, last_user, total_ram."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Lista separada por vírgulas de campos para incluir em cada elemento Workspace. Campos selecionáveis: id, organization_id, name, related_environment, operating_system, ip_address, type, last_user, total_ram. O campo id sempre é incluído.",
            "example": "name,operating_system,total_ram"
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120,
              "description": "Cadeia JSON com condições de filtro. Usa nomes de propriedades da resposta para os campos. Operadores: eq, ne, in, nin, gt, gte, lt, lte, contains, startsWith, endsWith, between. Combina com and/or."
            },
            "examples": {
              "simple": {
                "summary": "Filtrar por nome de Workspace",
                "description": "Retorne Workspaces cujo nome contém o texto fornecido.",
                "value": "{\"field\": \"name\", \"op\": \"contains\", \"value\": \"desktop\"}"
              },
              "complex-and": {
                "summary": "Filtrar por sistema operacional e RAM",
                "description": "Retorne Workspaces com Windows e pelo menos 8 GB de RAM.",
                "value": "{\"and\": [{\"field\": \"operating_system\", \"op\": \"contains\", \"value\": \"Windows\"}, {\"field\": \"total_ram\", \"op\": \"gte\", \"value\": 8192}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "description": "Corresponde a dois prefixos de sub-rede e aplica um limite de memória.",
                "value": "{\"and\": [{\"or\": [{\"field\": \"ip_address\", \"op\": \"startsWith\", \"value\": \"172.\"}, {\"field\": \"ip_address\", \"op\": \"startsWith\", \"value\": \"10.\"}]}, {\"field\": \"total_ram\", \"op\": \"gt\", \"value\": 4096}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista paginada de Workspaces do grupo de workspaces recuperada corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupWorkspaceListResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Paginação, ordenação ou filtros inválidos."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado: é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de workspaces não encontrado ou não pertence à organização"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera uma lista paginada de Workspaces que pertencem ao grupo de workspaces especificado. Suporta paginação, ordenação e filtragem mediante uma cadeia de filtros JSON. A resposta inclui um conjunto reduzido de campos de Workspace."
      },
      "put": {
        "tags": [
          "Grupos de workspaces"
        ],
        "summary": "Definir ou atualizar espaços de trabalho",
        "operationId": "updateWorkspaceGroupsWorkspace",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único do grupo de workspaces",
            "example": "507f1f77bcf86cd799439020"
          }
        ],
        "responses": {
          "200": {
            "description": "Workspaces atualizados corretamente no grupo de workspaces. Retorna um resumo do resultado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateWorkspaceGroupWorkspacesResponseV2"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Causas comuns: - Estrutura do corpo da solicitação inválida - Formato de ID de Workspace inválido"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado: é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Grupo de workspaces não encontrado ou não pertencente à organização"
          },
          "422": {
            "description": "Entidade não processável. Causas comuns: - Os IDs de Workspace não existem - Os Workspaces não pertencem à organização - IDs de Workspace inválidos",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkspacesUpdateRequestV2"
              },
              "examples": {
                "set-workspaces-in-group": {
                  "summary": "Definir múltiplos espaços de trabalho em um grupo de espaços de trabalho",
                  "value": {
                    "workspace_ids": [
                      "507f1f77bcf86cd799439030",
                      "507f1f77bcf86cd799439031"
                    ]
                  }
                },
                "remove-all-workspaces": {
                  "summary": "Remover todos os espaços de trabalho do grupo de espaços de trabalho fornecendo uma lista vazia",
                  "value": {
                    "workspace_ids": []
                  }
                },
                "set-single-workspace": {
                  "summary": "Definir um único espaço de trabalho em um grupo de espaços de trabalho",
                  "value": {
                    "workspace_ids": [
                      "507f1f77bcf86cd799439030"
                    ]
                  }
                }
              }
            }
          }
        },
        "description": "Estabeleça ou substitua todos os Workspaces no grupo de workspaces especificado com a lista fornecida. Esta é uma operação de substituição, não uma atualização incremental: todos os Workspaces existentes são substituídos. Retorna um resumo com o total de Workspaces no grupo após a atualização."
      }
    },
    "/v2/organizations/{organization_id}/workspaces": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Listar espaços de trabalho",
        "operationId": "listWorkspaces",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "O identificador único da organização",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            },
            "description": "Número da página (padrão: 1)"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "maximum": 100,
              "minimum": 1
            },
            "description": "Itens por página (padrão: 100, max.: 100)"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação no formato <field>:asc|desc. No modo agregado, só aceita campos de `group_by` ou aliases agregados (`count`, `<function>_<field>`)."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Lista separada por vírgulas de campos de resposta a incluir.",
            "example": "name,user_name,operating_system"
          },
          {
            "name": "aggregate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 1024
            },
            "description": "Agrupe e calcule agregações sobre Workspaces. Deve ser enviado como string JSON com `group_by` (array de campos do contrato) e `aggregates` (array de objetos `{ field, function }`). `field` pode ser `\"*\"` somente quando `function` é `\"count\"`. Valores permitidos para `function`: `count`, `sum`, `avg`, `min`, `max`. O parâmetro `aggregate` não pode ser combinado com `fields`. No modo agregado, `sort` só pode ordenar por campos de `group_by` ou por saídas agregadas (`count`, `function_campo`).",
            "examples": {
              "simple": {
                "summary": "Agrupar por estado e contar",
                "value": "{\"group_by\":[\"status\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}"
              },
              "with-average": {
                "summary": "Agrupar por plataforma e calcular média",
                "value": "{\"group_by\":[\"platform_type\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"},{\"field\":\"percent_cpu\",\"function\":\"avg\"}]}"
              }
            }
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Filtre Workspaces por um ou mais critérios. Forneça um objeto JSON com condições de filtro. Pode filtrar por qualquer campo retornado na resposta; usar os mesmos nomes de campo e formas de valor que na resposta. Use operadores de comparação (eq, ne, gt, gte, lt, lte, in, nin, contains, startsWith, endsWith, between) e combine múltiplas condições com operadores lógicos (and, or). Comprimento máximo: 5120 caracteres.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome de Workspace",
                "description": "Retorne Workspaces cujo nome contém o texto fornecido.",
                "value": "{\"field\": \"name\", \"op\": \"contains\", \"value\": \"sdi\"}"
              },
              "complex-and": {
                "summary": "Filtrar por plataforma e estado de energia",
                "description": "Retorne apenas Workspaces que correspondem a ambas as condições.",
                "value": "{\"and\": [{\"field\": \"platform_type\", \"op\": \"eq\", \"value\": \"windows\"}, {\"field\": \"power_state\", \"op\": \"eq\", \"value\": \"on\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "description": "Corresponde a alternativas de broker e requer um estado de EDR saudável.",
                "value": "{\"and\": [{\"or\": [{\"field\": \"broker\", \"op\": \"eq\", \"value\": \"citrix_on-premises\"}, {\"field\": \"broker\", \"op\": \"eq\", \"value\": \"azure_virtual_desktop\"}]}, {\"field\": \"edr_status\", \"op\": \"eq\", \"value\": \"installed_working\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista paginada de Workspaces recuperada corretamente.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceListResponseV2"
                },
                "examples": {
                  "workspace-list": {
                    "summary": "Lista paginada com um Workspace",
                    "value": {
                      "has_next": false,
                      "data": [
                        {
                          "id": "22f5381aa25e89b73785ca34",
                          "organization_id": "155f78b81155f8ab327ef274",
                          "name": "SDI04-001.org.terravex.net",
                          "related_environment": "1437d381972ce53252aabe72f053af7c",
                          "operating_system": "Microsoft Windows Server 2022 Standard 21H2",
                          "serial_number": "40a70e53327456131ae3321135531ae87f655cbeab27f01134c7ef366a7f2402",
                          "ip_address": "172.30.113.115",
                          "os_update_num_pending": 5,
                          "reporting_group_id": "65f83219942714fc24f01435",
                          "flxmid": "50a70e53327456131ae5921135531ae87f639cbe5b27f09034c7ef366a7f2402",
                          "os_update_num_days_since_last": 183,
                          "total_ram": 8191,
                          "altitude": 0,
                          "antivirus": "Windows Defender",
                          "antivirus_status": "installed_working",
                          "bios_manufacturer": "VMware, Inc.",
                          "bios_mode": "UEFI",
                          "bios_version": "P79 Ver. 6.00",
                          "bios_smbversion": "2.7",
                          "bios_serialnumber": "VMware-42 06 fd 7c 3a f4 af 1c-97 07 56 e2 07 67 d7 23",
                          "base_board_manufacturer": "Intel Corporation",
                          "base_board_product": "440BX Desktop Reference Platform",
                          "base_board_version": "A30",
                          "broker": "citrix_on-premises",
                          "public_ip_city": "Barcelona",
                          "flexxagent_version": "25.9.1.0",
                          "compliance_result": "not_evaluated",
                          "compliance_last_execution": "2025-06-12T06:13:17.17Z",
                          "domain_name": "org.terravex.net",
                          "public_ip_country": "ES",
                          "cores_count": "4",
                          "edr_active_detections": false,
                          "edr_host_id": "11bbcc1e6e2c440aa8b7522a78a292ad",
                          "edr_status": "installed_working",
                          "edr_version": "7.05.17706.0",
                          "current_subnet": "172.30.213.0/24",
                          "default_gateway": "172.30.213.1",
                          "device_kind": "virtual",
                          "edr": "CrowdStrike",
                          "ema_agent_version": "",
                          "ema_endpoint_id": "",
                          "embedded_controller_version": "255.255",
                          "os_fast_startup": false,
                          "flexxanalyzer_config": "configured",
                          "flexxanalyzer_version": "3.0.2",
                          "hypervisor": "vmware_vsphere",
                          "ip_version": "IPv4",
                          "public_ip_isp": "Cloudflare, Inc.",
                          "iot_hub_config_sync_status": "synced",
                          "is_amt_supported": false,
                          "is_laptop": false,
                          "is_physical": false,
                          "last_boot_duration": 20,
                          "last_restart_time": null,
                          "last_time": "2025-06-12T06:13:17.17Z",
                          "last_windows_update": "2025-09-18T00:00:00.00Z",
                          "last_autorepair": "2025-06-10T10:00:00.00Z",
                          "latitude": 0,
                          "locale": "English (United States)",
                          "longitude": 0,
                          "mac_address": "10-52-56-36-21-42",
                          "network_interface_type": "unknown",
                          "os_build_number": "6.3.20348.4171",
                          "os_manufacturer": "Microsoft Corporation",
                          "os_version": "10.0.20348.20348",
                          "ou": "OU=NonPersistent,OU=Workstations,OU=OPS914,DC=ops914,DC=terravex,DC=net",
                          "os_page_file": "C:\\pagefile.sys",
                          "os_page_file_space": 512,
                          "platform_role": "Desktop",
                          "platform_type": "windows",
                          "processor": "Intel(R) Xeon(R) Gold 6348 CPU @ 2.60GHz, 4 Core(s), 4 Logical Processors",
                          "public_ip": "19.27.129.141",
                          "os_reboot_pending": false,
                          "secure_boot_state": "On",
                          "system_model": "VMware7,1",
                          "system_type": "x64-based PC",
                          "os_time_zone": "Romance Standard Time",
                          "user_name": "Domain\\user001",
                          "vm_type": "workspace",
                          "windows_type": "server",
                          "created_at": "2023-12-18T11:26:11.11Z",
                          "last_deregistration_time": "2026-01-19T12:26:25.25Z",
                          "delete_scheduled_at": "2026-07-15T00:00:00.000Z",
                          "encrypted_harddisks": "partial",
                          "custom_field_01": "testVal1",
                          "custom_field_02": "testVal2",
                          "custom_field_03": "4",
                          "custom_field_04": "",
                          "custom_field_05": "",
                          "custom_field_06": "",
                          "custom_field_07": "",
                          "custom_field_08": "",
                          "custom_field_09": "",
                          "custom_field_10": "",
                          "flexxagent_type": "unified",
                          "antivirus_version_number": "4.18.2104.5",
                          "related_location": "C08D2228-E80A-4ADA-A75F-03E33E71D119",
                          "area": "Development",
                          "custom_field_11": "",
                          "custom_field_12": "",
                          "custom_field_13": "",
                          "custom_field_14": "",
                          "custom_field_15": "",
                          "custom_field_16": "",
                          "custom_field_17": "",
                          "custom_field_18": "",
                          "custom_field_19": "",
                          "custom_field_20": "",
                          "department": "Department",
                          "office": "Office",
                          "last_custom_fields_update": "2025-12-24T11:24:51.51Z",
                          "workspace_id": "6676aa0c1e9c850250a70e53327456131ae59211aa531ae87f639cbe5b27f09034c7e3366a7f2402",
                          "flexxanalyzer_proxy_uri": "",
                          "iot_hub_name": "idIot0e33d84fe5761e",
                          "flexxagent_status": "stopped",
                          "boot_hard_disk_used_percentage": 34,
                          "last_connection_time": "2025-06-12T06:13:17.17Z",
                          "network_signal": 0,
                          "num_alerts": 0,
                          "percent_cpu": 17,
                          "percent_ram": 0,
                          "power_state": "off",
                          "sessions_count": 0,
                          "used_system_disk_c": 34,
                          "wake_on_lan_mac": "10-50-56-56-51-12",
                          "wake_on_lan_subnet": "172.30.213.0/24",
                          "broker_status": "disconnected",
                          "status": "offline"
                        }
                      ]
                    }
                  },
                  "workspace-aggregate": {
                    "summary": "Resultado agregado por estado",
                    "value": {
                      "has_next": false,
                      "data": [
                        {
                          "status": "online",
                          "count": 120,
                          "avg_percent_cpu": 17.4
                        },
                        {
                          "status": "offline",
                          "count": 45,
                          "avg_percent_cpu": 3.1
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest",
            "description": "Solicitação incorreta. Paginação, ordenação ou filtros inválidos."
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized",
            "description": "Não autorizado - é necessária autenticação"
          },
          "404": {
            "$ref": "#/components/responses/NotFound",
            "description": "Organização não encontrada"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Recupera uma lista paginada de Workspaces. Suporta paginação, ordenação e filtragem através de uma cadeia de filtro JSON."
      }
    },
    "/v2/organizations/{organization_id}/workspaces/{workspace_id}/agent-versions": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Listar versões de agente do espaço de trabalho",
        "description": "Retorna o histórico paginado de versões do agente para um espaço de trabalho dentro de uma organização, expondo apenas discovered_at e version.",
        "operationId": "workspaces_agent_versions",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "description": "Identificador da organização.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "example": "64b7f1a2c3d4e5f60718293a"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "description": "Identificador do espaço de trabalho.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "example": "64b7f1a2c3d4e5f60718293b"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Número da página a consultar.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Quantidade de elementos por página.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 100
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Campos de resposta a serem incluídos, separados por vírgulas.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Expressão de ordenação com o formato <field>:asc|desc.",
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            }
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "description": "Expressão JSON de filtros sobre campos filtráveis da resposta.",
            "schema": {
              "type": "string"
            },
            "examples": {
              "simple": {
                "summary": "Filtro simples por versão",
                "value": "{\"field\":\"version\",\"op\":\"contains\",\"value\":\"5.2\"}"
              },
              "complex_and": {
                "summary": "Filtro composto com e",
                "value": "{\"and\":[{\"field\":\"version\",\"op\":\"contains\",\"value\":\"5.\"},{\"field\":\"discovered_at\",\"op\":\"contains\",\"value\":\"2026-06\"}]}"
              },
              "complex_or_and": {
                "summary": "Filtro composto com ou e e",
                "value": "{\"and\":[{\"or\":[{\"field\":\"version\",\"op\":\"eq\",\"value\":\"5.2.0\"},{\"field\":\"version\",\"op\":\"eq\",\"value\":\"5.2.1\"}]},{\"field\":\"discovered_at\",\"op\":\"contains\",\"value\":\"2026-06\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Listagem paginada de versões do agente do espaço de trabalho.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspaceAgentVersionsResponseV2"
                },
                "examples": {
                  "success": {
                    "summary": "Resposta paginada correta",
                    "value": {
                      "data": [
                        {
                          "discovered_at": "2026-06-18T10:20:30.000Z",
                          "version": "5.2.1"
                        },
                        {
                          "discovered_at": "2026-05-10T08:00:00.000Z",
                          "version": "5.1.9"
                        }
                      ],
                      "has_next": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Could not process filters",
                        "code": "BAD_REQUEST",
                        "details": "Operator \"contains\" is not allowed for field \"discovered_at\"."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado para acessar a organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Credenciais inválidas ou sem acesso",
                    "value": {
                      "error": {
                        "code": "unauthorized",
                        "message": "No autorizado para acceder a este recurso."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado dentro do alcance autorizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "not_found": {
                    "summary": "Espaço de trabalho sem histórico disponível",
                    "value": {
                      "error": {
                        "code": "not_found",
                        "message": "No se encontro el recurso solicitado."
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "internal_error": {
                    "summary": "Falha inesperada",
                    "value": {
                      "error": {
                        "code": "internal_error",
                        "message": "Se ha producido un error interno."
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspaces/{workspace_id}/alerts": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Listar alertas ativos",
        "operationId": "workspaces_alerts",
        "description": "Retorna uma lista paginada de alertas ativos para o Workspace selecionado.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do Workspace.",
            "example": "507f1f77bcf86cd799439099"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos de item de resposta separados por vírgulas para incluir."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre rotas de campos de resposta filtráveis.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome de alerta",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"disk\"}"
              },
              "complex-and": {
                "summary": "Filtrar por severidade e informação",
                "value": "{\"and\":[{\"field\":\"severity\",\"op\":\"eq\",\"value\":\"critical\"},{\"field\":\"information\",\"op\":\"contains\",\"value\":\"cpu\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"name\",\"op\":\"contains\",\"value\":\"memory\"},{\"field\":\"description\",\"op\":\"contains\",\"value\":\"memory\"}]},{\"field\":\"severity\",\"op\":\"eq\",\"value\":\"warning\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Expressão de ordenação com o formato <field>:asc|desc sobre caminhos de campos escalares ordenáveis da resposta."
          }
        ],
        "responses": {
          "200": {
            "description": "Alertas de Workspace recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspaceAlertsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com alertas",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f506070811",
                          "name": "Uso alto de CPU",
                          "description": "El uso de CPU superó el umbral",
                          "severity": "critical",
                          "started_at": "2026-03-15T08:00:00Z",
                          "authorized_minutes": 30,
                          "notified_at": "2026-03-15T08:05:00Z",
                          "information": "El uso actual es 96%",
                          "threshold_unit_name": "percent",
                          "threshold_value": 90,
                          "element": "cpu",
                          "category": "performance"
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Nenhum alerta encontrado",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros inválido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON válida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Workspace não encontrado dentro do escopo de organização autorizado.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "workspace_not_found": {
                    "summary": "Workspace não existe no escopo",
                    "value": {
                      "error": {
                        "message": "Workspace no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspaces/{workspace_id}/disks": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Listar discos",
        "operationId": "workspaces_disks",
        "description": "Retorna uma lista paginada de discos do Espaço de Trabalho para o Workspace selecionado.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do Workspace.",
            "example": "507f1f77bcf86cd799439099"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Quantidade de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos de elementos de resposta separados por vírgulas para incluir."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre rotas de campos filtráveis de resposta.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome do disco",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"system\"}"
              },
              "complex-and": {
                "summary": "Filtrar por tipo de mídia e estado de criptografia",
                "value": "{\"and\":[{\"field\":\"media_type\",\"op\":\"eq\",\"value\":\"SSD\"},{\"field\":\"encrypted\",\"op\":\"eq\",\"value\":\"encrypted\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar alternativas de localização com condição de unidade do SO",
                "value": "{\"and\":[{\"or\":[{\"field\":\"location\",\"op\":\"contains\",\"value\":\"C:\"},{\"field\":\"location\",\"op\":\"contains\",\"value\":\"D:\"}]},{\"field\":\"os_drive\",\"op\":\"eq\",\"value\":true}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Expressão de ordenação na forma <field>:asc|desc sobre rotas de campos escalares ordenáveis da resposta."
          }
        ],
        "responses": {
          "200": {
            "description": "Discos do Espaço de Trabalho recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspaceDisksResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com registros de discos",
                    "value": {
                      "has_next": false,
                      "data": [
                        {
                          "id": "cd607b6eb7d74f3990e62f0f",
                          "name": "D:",
                          "device_id": "\\\\.\\PHYSICALDRIVE1",
                          "encrypted": "not_encrypted",
                          "encryption_method": "None",
                          "location": "Integrated : Bus 0 : Device 14 : Function 0 : Adapter 0 : Port 3 : Target 2 : LUN 0",
                          "media_type": "NTFS",
                          "os_drive": false,
                          "partition": "Disk #1, Partition #0",
                          "physical_disk_size": 953869,
                          "total_size": 953866,
                          "used_size": 953333,
                          "volume_label": "Data"
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Nenhum disco encontrado",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filters não válido",
                    "value": {
                      "error": {
                        "message": "Formato de filters no valido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON valida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Espaço de trabalho não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "workspace_not_found": {
                    "summary": "O Espaço de Trabalho não existe no alcance",
                    "value": {
                      "error": {
                        "message": "Workspace no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspaces/{workspace_id}/installed-apps": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Listar aplicativos instalados",
        "description": "Retorna uma lista paginada de aplicativos instalados para o Workspace selecionado.",
        "operationId": "workspaces_installed_apps",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do Workspace.",
            "example": "507f1f77bcf86cd799439099"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos de elementos de resposta separados por vírgulas para incluir."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre rotas de campos de resposta filtráveis.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome do produto",
                "value": "{\"field\":\"product_name\",\"op\":\"contains\",\"value\":\"chrome\"}"
              },
              "complex-and": {
                "summary": "Filtrar por editor e versão",
                "value": "{\"and\":[{\"field\":\"publisher\",\"op\":\"contains\",\"value\":\"microsoft\"},{\"field\":\"version\",\"op\":\"contains\",\"value\":\"2026\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"product_name\",\"op\":\"contains\",\"value\":\"edge\"},{\"field\":\"product_name\",\"op\":\"contains\",\"value\":\"chrome\"}]},{\"field\":\"last_reported_at\",\"op\":\"eq\",\"value\":\"2026-03-15T09:45:11Z\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Expressão de ordem na forma <field>:asc|desc sobre caminhos de campos escalares de resposta ordenáveis."
          }
        ],
        "responses": {
          "200": {
            "description": "Aplicativos instalados do Workspace recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspaceInstalledAppsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com aplicativos instalados",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f506070815",
                          "product_name": "Microsoft Edge",
                          "publisher": "Microsoft Corporation",
                          "version": "124.0.2478.97",
                          "installed_at": "2026-03-12T14:10:20Z",
                          "install_location": "C:\\Program Files (x86)\\Microsoft\\Edge\\Application",
                          "last_reported_at": "2026-03-15T09:45:11Z"
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Não se encontraram aplicativos instalados",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros invalido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON valida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Workspace não encontrado dentro do escopo da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "workspace_not_found": {
                    "summary": "O Espaço de Trabalho não existe no alcance",
                    "value": {
                      "error": {
                        "message": "Workspace no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspaces/{workspace_id}/operations": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Listar operações",
        "operationId": "workspaces_operations",
        "description": "Retorna uma lista paginada de operações para o Workspace selecionado.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do Workspace.",
            "example": "507f1f77bcf86cd799439099"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos de elementos de resposta separados por vírgulas para incluir."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre caminhos de campos filtráveis do contrato de operação.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome de operação",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"remote\"}"
              },
              "complex-and": {
                "summary": "Filtrar por estado e intervalo de início",
                "value": "{\"and\":[{\"field\":\"status\",\"op\":\"eq\",\"value\":\"finished\"},{\"field\":\"started_at\",\"op\":\"gte\",\"value\":\"2026-03-10T00:00:00.000Z\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"name\",\"op\":\"contains\",\"value\":\"remote\"},{\"field\":\"description\",\"op\":\"contains\",\"value\":\"remote\"}]},{\"field\":\"created_at\",\"op\":\"gte\",\"value\":\"2026-03-01T00:00:00.000Z\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Expressão de ordenação na forma <field>:asc|desc sobre caminhos de campos escalares de resposta ordenáveis."
          }
        ],
        "responses": {
          "200": {
            "description": "Operações do Workspace recuperadas com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspaceOperationsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com itens",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f506070811",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "name": "remote_assistance",
                          "description": "Iniciar sesión de asistencia remota desatendida",
                          "status": "finished",
                          "started_at": "2026-03-10T09:12:00Z",
                          "ended_at": "2026-03-10T09:15:17Z",
                          "created_at": "2026-03-10T09:11:45Z",
                          "microservice_id": null,
                          "flow_id": null,
                          "remote_support": {
                            "start_date": "2026-03-10T09:12:00Z",
                            "end_date": "2026-03-10T09:15:17Z",
                            "type": "unattended"
                          }
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Nenhuma operação encontrada",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no válido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON válida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Workspace não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "workspace_not_found": {
                    "summary": "O Espaço de Trabalho não existe no alcance",
                    "value": {
                      "error": {
                        "message": "Workspace no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspaces/{workspace_id}/patches": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Listar patches de um Espaço de Trabalho",
        "operationId": "workspaces_patches",
        "description": "Retorna uma lista paginada de patches para o espaço de trabalho selecionado. Apenas aplica-se a workspaces com platform_type `windows`.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do Workspace.",
            "example": "507f1f77bcf86cd799439099"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Campos de resposta a serem incluídos, separados por vírgulas."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre campos do item de resposta (inclui `id`).",
            "examples": {
              "simple": {
                "summary": "Filtrar por título",
                "value": "{\"field\":\"title\",\"op\":\"contains\",\"value\":\"security update\"}"
              },
              "complex-and": {
                "summary": "Filtrar por estado e severidade",
                "value": "{\"and\":[{\"field\":\"status\",\"op\":\"eq\",\"value\":\"pending\"},{\"field\":\"severity\",\"op\":\"contains\",\"value\":\"critical\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"product\",\"op\":\"contains\",\"value\":\"windows 10\"},{\"field\":\"product\",\"op\":\"contains\",\"value\":\"windows 11\"}]},{\"field\":\"kb\",\"op\":\"contains\",\"value\":\"kb503\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação com o formato `<field>:asc|desc` sobre campos escalares do item (inclui `id`). No modo agregado, só aceita campos de `group_by` ou apelidos agregados (`count`, `<function>_<field>`)."
          },
          {
            "name": "aggregate",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 4096
            },
            "description": "Expressão JSON de agregação com `group_by` e `aggregates` sobre campos escalares de primeiro nível.",
            "examples": {
              "group_status_count": {
                "summary": "Agrupar por estado e contar",
                "value": "{\"group_by\":[\"status\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"}]}"
              },
              "group_product_avg": {
                "summary": "Agrupar por produto e calcular média",
                "value": "{\"group_by\":[\"product\"],\"aggregates\":[{\"field\":\"*\",\"function\":\"count\"},{\"field\":\"installed_at\",\"function\":\"max\"}]}"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Patches do Espaço de Trabalho recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspacePatchesResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Resultado paginado com registros de patches",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f506070812",
                          "kb": "KB5034123",
                          "title": "Actualizacion acumulativa de seguridad",
                          "status": "pending",
                          "product": "windows 11",
                          "severity": "critical",
                          "arrived_at": "2026-03-15",
                          "category": "security_updates",
                          "installed_at": null,
                          "additional_information_url": "https://support.microsoft.com/help/kb5034123"
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Nenhum patch encontrado",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no valido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON valida"
                      }
                    }
                  },
                  "invalid_platform_type": {
                    "summary": "Espaço de Trabalho com plataforma não compatível",
                    "value": {
                      "error": {
                        "message": "Workspace no compatible para consulta de parches",
                        "code": "bad_request",
                        "details": "Este endpoint solo admite workspaces con platform_type windows"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou organização não acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Workspace não encontrado dentro do escopo da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "workspace_not_found": {
                    "summary": "Workspace não existe no escopo",
                    "value": {
                      "error": {
                        "message": "Workspace no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspaces/{workspace_id}/pnp-errors": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Listar erros Plug and Play",
        "operationId": "workspaces_pnp_errors",
        "description": "Retorna uma lista paginada de erros Plug and Play para o Espaço de Trabalho selecionado.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do Workspace.",
            "example": "507f1f77bcf86cd799439099"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes dos campos dos elementos de resposta, separados por vírgulas, que serão incluídos."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre rotas de campos de resposta filtráveis.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome do erro",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"usb\"}"
              },
              "complex-and": {
                "summary": "Filtrar por estado e classe",
                "value": "{\"and\":[{\"field\":\"status\",\"op\":\"eq\",\"value\":\"error\"},{\"field\":\"class\",\"op\":\"contains\",\"value\":\"usb\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"error_code\",\"op\":\"eq\",\"value\":\"CM_PROB_FAILED_START\"},{\"field\":\"error_code\",\"op\":\"eq\",\"value\":\"CM_PROB_DISABLED\"}]},{\"field\":\"device_id\",\"op\":\"contains\",\"value\":\"ven_8086\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Expressão de ordenação com o formato <field>:asc|desc sobre caminhos de campos escalares de resposta ordenáveis."
          }
        ],
        "responses": {
          "200": {
            "description": "Erros Plug and Play do Espaço de Trabalho recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspacePnpErrorsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Resultado paginado com erros Plug and Play",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f506070811",
                          "name": "Dispositivo compuesto USB",
                          "status": "Error",
                          "class": "USB",
                          "device_id": "USB\\VID_046D&PID_C534",
                          "error_description": "El controlador no pudo iniciarse",
                          "error_code": "CM_PROB_FAILED_START",
                          "properties": "driver_version=10.0.22621.1",
                          "last_updated_at": "2026-03-31T20:05:57Z"
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Nenhum erro Plug and Play encontrado",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no válido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON válida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Workspace não encontrado dentro do escopo autorizado da organização.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "workspace_not_found": {
                    "summary": "O Espaço de Trabalho não existe no alcance",
                    "value": {
                      "error": {
                        "message": "Workspace no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspaces/{workspace_id}/pnp-events": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Listar eventos Plug and Play",
        "operationId": "workspaces_pnp_events",
        "description": "Retorna uma lista paginada de eventos Plug and Play para o Espaço de Trabalho selecionado.",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do Workspace.",
            "example": "507f1f77bcf86cd799439099"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos de elementos de resposta separados por vírgulas para incluir."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre rotas de campos de resposta filtráveis.",
            "examples": {
              "simple": {
                "summary": "Filtrar por ação",
                "value": "{\"field\":\"action\",\"op\":\"contains\",\"value\":\"install\"}"
              },
              "complex-and": {
                "summary": "Filtrar por data e usuário",
                "value": "{\"and\":[{\"field\":\"created_at\",\"op\":\"contains\",\"value\":\"2026-03-31\"},{\"field\":\"user_name\",\"op\":\"contains\",\"value\":\"system\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"caption\",\"op\":\"contains\",\"value\":\"usb\"},{\"field\":\"caption\",\"op\":\"contains\",\"value\":\"driver\"}]},{\"field\":\"device_id\",\"op\":\"contains\",\"value\":\"ven_8086\"}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Expressão de ordenação na forma <field>:asc|desc sobre caminhos de campos escalares de resposta ordenáveis."
          }
        ],
        "responses": {
          "200": {
            "description": "Eventos Plug and Play do Espaço de Trabalho recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspacePnpEventsResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Resultado paginado com registros de eventos",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f506070810",
                          "action": "Install",
                          "created_at": "2026-03-31T20:05:57Z",
                          "user_name": "SYSTEM",
                          "caption": "USB device installed",
                          "device_id": "PCI\\VEN_8086&DEV_9A13"
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Nenhum evento encontrado",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação inválidos.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filtros inválido",
                    "value": {
                      "error": {
                        "message": "Formato de filtros no valido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON valida"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou organização não acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Workspace não encontrado dentro do escopo da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "workspace_not_found": {
                    "summary": "Workspace não existe no escopo",
                    "value": {
                      "error": {
                        "message": "Workspace no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/organizations/{organization_id}/workspaces/{workspace_id}/services": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Listar serviços",
        "operationId": "workspaces_services",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador da organização.",
            "example": "507f1f77bcf86cd799439011"
          },
          {
            "name": "workspace_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$",
              "minLength": 24,
              "maxLength": 24
            },
            "description": "Identificador do Workspace.",
            "example": "507f1f77bcf86cd799439099"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            },
            "description": "Número da página."
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 100
            },
            "description": "Número de elementos por página."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "description": "Nomes de campos de elementos de resposta separados por vírgulas para incluir."
          },
          {
            "name": "filters",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5120
            },
            "description": "Expressão de filtro JSON sobre rotas de campos de resposta filtráveis.",
            "examples": {
              "simple": {
                "summary": "Filtrar por nome do serviço",
                "value": "{\"field\":\"name\",\"op\":\"contains\",\"value\":\"print\"}"
              },
              "complex-and": {
                "summary": "Filtrar por estado e tipo de início",
                "value": "{\"and\":[{\"field\":\"status\",\"op\":\"eq\",\"value\":\"Running\"},{\"field\":\"startup_type\",\"op\":\"eq\",\"value\":\"Manual\"}]}"
              },
              "complex-or-and": {
                "summary": "Combinar condições OU e E",
                "value": "{\"and\":[{\"or\":[{\"field\":\"display_name\",\"op\":\"contains\",\"value\":\"agent\"},{\"field\":\"description\",\"op\":\"contains\",\"value\":\"agent\"}]},{\"field\":\"accept_stop\",\"op\":\"eq\",\"value\":true}]}"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^([a-z_]+):(asc|desc)$"
            },
            "description": "Expressão de ordenação com formato <field>:asc|desc sobre rotas de campos escalares de resposta ordenáveis."
          }
        ],
        "responses": {
          "200": {
            "description": "Serviços do Espaço de Trabalho recuperados com sucesso.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspaceServicesResponseV2"
                },
                "examples": {
                  "paginated_result": {
                    "summary": "Lista paginada com serviços",
                    "value": {
                      "has_next": true,
                      "data": [
                        {
                          "id": "64f0c2a1b2d3e4f506070810",
                          "name": "Spooler",
                          "description": "Carga archivos en memoria para el procesamiento de impresión.",
                          "status": "Running",
                          "accept_stop": true,
                          "display_name": "Print Spooler",
                          "log_on_as": "LocalSystem",
                          "path": "C:\\Windows\\System32\\spoolsv.exe",
                          "organization_id": "507f1f77bcf86cd799439011",
                          "reporting_group_id": "507f1f77bcf86cd799439077",
                          "startup_type": "Automatic",
                          "last_updated_at": "2026-03-15T09:45:11Z",
                          "workspace_id": "507f1f77bcf86cd799439099"
                        }
                      ]
                    }
                  },
                  "empty_result": {
                    "summary": "Nenhum serviço encontrado",
                    "value": {
                      "has_next": false,
                      "data": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Parâmetros de solicitação não válidos, incluindo filtros/sort inválidos ou Espaço de Trabalho não Windows.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalid_filters": {
                    "summary": "Formato de filters não válido",
                    "value": {
                      "error": {
                        "message": "Formato de filters no válido",
                        "code": "bad_request",
                        "details": "filters debe ser una cadena JSON válida"
                      }
                    }
                  },
                  "workspace_platform_not_supported": {
                    "summary": "Espaço de Trabalho não suportado por plataforma",
                    "value": {
                      "error": {
                        "message": "This endpoint supports only windows workspaces (platform_type=windows)",
                        "code": "bad_request"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Não autorizado ou a organização não é acessível.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "organization_not_authorized": {
                    "summary": "Falha de acesso à organização",
                    "value": {
                      "error": {
                        "message": "No autorizado",
                        "code": "unauthorized"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Espaço de Trabalho não encontrado dentro do alcance da organização autorizada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "workspace_not_found": {
                    "summary": "Workspace não existe no escopo",
                    "value": {
                      "error": {
                        "message": "Workspace no encontrado",
                        "code": "not_found"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unexpected_error": {
                    "summary": "Falha não controlada",
                    "value": {
                      "error": {
                        "message": "Error interno del servidor",
                        "code": "internal_error"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "Retorna uma lista paginada de serviços para o Espaço de Trabalho selecionado. Apenas aplica-se para Workspaces Windows (platform_type=windows)."
      }
    }
  },
  "components": {
    "schemas": {
      "CreateDigitalActivityCoreProcessGroupRequestV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "Nome do grupo de processos principais."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Descrição opcional do grupo de processos principais."
          },
          "workspace_group_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do grupo de workspaces associado."
          }
        },
        "required": [
          "name",
          "workspace_group_id"
        ],
        "description": "Corpo de criação do grupo de processos principais."
      },
      "GetDigitalActivityCoreProcessGroupResponseV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do grupo de processos principais."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização."
          },
          "name": {
            "type": "string",
            "description": "Nome do grupo de processos principais."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Descrição do grupo de processos principais."
          },
          "workspace_group_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do grupo de workspaces associado."
          }
        },
        "required": [
          "id",
          "organization_id",
          "name",
          "workspace_group_id"
        ]
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "message": {
                "type": "string"
              },
              "code": {
                "type": "string"
              },
              "details": {
                "type": "string"
              }
            },
            "required": [
              "message",
              "code"
            ]
          }
        },
        "required": [
          "error"
        ]
      },
      "FlowV2": {
        "type": "object",
        "description": "Detalhe do fluxo como retornado pelo GET flow por id. A organização é implícita pela rota `/v2/organizations/{organization_id}/flows/{flow_id}`. Os workspaces/grupos de destino são normalizados em target.ids (cadeias hexadecimais de ObjectId de MongoDB).",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "Resolvido para Accept-Language quando é multilíngue"
          },
          "description": {
            "type": "string",
            "description": "Resolvido para Accept-Language quando é multilíngue"
          },
          "type": {
            "type": "string",
            "enum": [
              "session",
              "workspace"
            ]
          },
          "version": {
            "type": "number"
          },
          "detection_only": {
            "type": "boolean"
          },
          "cooldown_minutes": {
            "type": "number",
            "description": "Tempo de espera em minutos"
          },
          "enabled": {
            "type": "boolean"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlowConditionV2"
            },
            "description": "Omitido ou vazio quando o fluxo não tem condições"
          },
          "trigger": {
            "type": "string",
            "nullable": true
          },
          "target": {
            "$ref": "#/components/schemas/FlowTargetSelectorV2",
            "description": "Destino de execução: type seleciona o escopo; ids lista valores de _id de Workspace, _id de grupo de Workspace ou _id de Grupo de relatório (vazio quando type é ALL_WORKSPACES)"
          },
          "microservice_id": {
            "type": "string",
            "nullable": true,
            "description": "ID do microserviço vinculado quando presente"
          },
          "init_text": {
            "type": "string",
            "nullable": true,
            "description": "Resolvido para Accept-Language quando é multilíngue"
          },
          "ok_text": {
            "type": "string",
            "nullable": true,
            "description": "Resolvido para Accept-Language quando é multilíngue"
          },
          "ko_text": {
            "type": "string",
            "nullable": true,
            "description": "Resolvido para Accept-Language quando é multilíngue"
          },
          "execution_metrics": {
            "$ref": "#/components/schemas/FlowExecutionMetricsV2",
            "nullable": true,
            "description": "Presente quando métricas foram calculadas para este fluxo"
          }
        },
        "required": [
          "id",
          "created_at",
          "name",
          "description",
          "type",
          "version",
          "detection_only",
          "cooldown_minutes",
          "enabled",
          "target"
        ]
      },
      "FlowConditionV2": {
        "type": "object",
        "properties": {
          "condition_type_id": {
            "type": "string"
          },
          "metric": {
            "type": "string"
          },
          "operator": {
            "type": "string"
          },
          "compare_to": {
            "type": "string"
          },
          "period": {
            "type": "number",
            "nullable": true
          },
          "check_every": {
            "type": "number"
          }
        },
        "required": [
          "condition_type_id",
          "metric",
          "operator",
          "compare_to",
          "check_every"
        ]
      },
      "FlowTargetSelectorV2": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "all_workspaces",
              "workspaces",
              "workspace_groups",
              "reporting_groups"
            ],
            "description": "ALL_WORKSPACES: ids são sempre []. WORKSPACES: ids são _id de documentos de Workspace (24 hex). WORKSPACE_GROUPS / REPORTING_GROUPS: ids são valores de _id de grupo."
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            }
          }
        },
        "required": [
          "type",
          "ids"
        ]
      },
      "FlowExecutionMetricsV2": {
        "type": "object",
        "properties": {
          "targeted_workspaces": {
            "type": "number"
          },
          "evaluations_per_day": {
            "type": "number"
          },
          "possible_executions_per_day": {
            "type": "number"
          },
          "total_possible_executions_per_day": {
            "type": "number"
          }
        },
        "required": [
          "targeted_workspaces",
          "evaluations_per_day",
          "possible_executions_per_day",
          "total_possible_executions_per_day"
        ]
      },
      "MultilangField": {
        "type": "object",
        "description": "Campo multilíngue. As chaves são códigos de idioma (en-EN, es-ES, pt-BR, eu-ES, ca-ES). Deve haver pelo menos uma chave. Cada valor deve ter entre 1 e 512 caracteres.",
        "properties": {
          "en-EN": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512
          },
          "es-ES": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512
          },
          "pt-BR": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512
          },
          "eu-ES": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512
          },
          "ca-ES": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512
          }
        },
        "additionalProperties": false
      },
      "CreateFlowV2Request": {
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/MultilangField",
            "description": "Nome do fluxo. É necessário pelo menos uma chave de idioma; cada valor deve ter entre 1 e 512 caracteres."
          },
          "description": {
            "$ref": "#/components/schemas/MultilangField",
            "description": "Descrição do fluxo. É necessário pelo menos uma chave de idioma; cada valor deve ter entre 1 e 512 caracteres."
          },
          "type": {
            "type": "string",
            "enum": [
              "session",
              "workspace"
            ]
          },
          "detection_only": {
            "type": "boolean"
          },
          "cooldown_minutes": {
            "type": "number",
            "minimum": 10,
            "maximum": 1440,
            "description": "Tempo de espera em minutos. Deve estar entre 10 e 1440."
          },
          "enabled": {
            "type": "boolean",
            "default": false,
            "description": "Se for verdadeiro, o fluxo é habilitado após a sua criação (requer condições, microserviço e objetivo válidos). Se omitido ou falso, um fluxo desabilitado é criado."
          },
          "init_text": {
            "$ref": "#/components/schemas/MultilangField",
            "description": "Mensagem de texto inicial. Omitido se não for necessário. Quando fornecido, é necessário pelo menos uma chave de idioma; cada valor deve ter entre 1 e 512 caracteres."
          },
          "ok_text": {
            "$ref": "#/components/schemas/MultilangField",
            "description": "Mensagem de texto de sucesso. Omitido se não for necessário. Quando fornecido, é necessário pelo menos uma chave de idioma; cada valor deve ter entre 1 e 512 caracteres."
          },
          "ko_text": {
            "$ref": "#/components/schemas/MultilangField",
            "description": "Mensagem de texto de erro. Omitido se não for necessário. Quando fornecido, é necessário pelo menos uma chave de idioma; cada valor deve ter entre 1 e 512 caracteres."
          },
          "target": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "all_workspaces",
                  "workspaces",
                  "workspace_groups",
                  "reporting_groups"
                ]
              },
              "ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 512
                }
              }
            },
            "required": [
              "type"
            ]
          },
          "microservice_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlowConditionInputV2"
            }
          }
        },
        "required": [
          "name",
          "description",
          "type",
          "detection_only",
          "cooldown_minutes",
          "target",
          "microservice_id",
          "conditions"
        ]
      },
      "FlowConditionInputV2": {
        "type": "object",
        "properties": {
          "condition_type_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$"
          },
          "operator": {
            "type": "string",
            "enum": [
              "eq",
              "gt",
              "lt",
              "gte",
              "lte",
              "startsWith",
              "endsWith",
              "contains",
              "at"
            ]
          },
          "compare_to": {
            "type": "string",
            "maxLength": 512
          },
          "period": {
            "type": "number",
            "nullable": true
          },
          "check_every": {
            "type": "number"
          }
        },
        "required": [
          "condition_type_id",
          "operator",
          "compare_to",
          "check_every"
        ]
      },
      "CreateOperationV2Request": {
        "type": "object",
        "required": [
          "type",
          "target"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "execute_microservice",
              "delete_workspaces",
              "shutdown_workspaces",
              "restart_workspaces",
              "suspend_workspaces"
            ]
          },
          "target": {
            "type": "object",
            "required": [
              "type",
              "ids"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "workspaces",
                  "sessions"
                ]
              },
              "ids": {
                "type": "array",
                "minItems": 1,
                "maxItems": 20000,
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64
                }
              }
            },
            "additionalProperties": false
          },
          "expiration_in_seconds": {
            "type": "integer",
            "maximum": 84600,
            "minimum": 600
          },
          "payload": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": false
      },
      "CreateOperationV2Response": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/GetOperationByIdResponseV1"
            }
          }
        }
      },
      "GetOperationByIdResponseV1": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da execução da operação."
          },
          "name": {
            "type": "string",
            "description": "Nome da operação."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização proprietária da operação."
          },
          "description": {
            "type": "string",
            "description": "Descrição da operação. Retorna uma cadeia vazia quando não existe na origem."
          },
          "status": {
            "type": "string",
            "enum": [
              "finished",
              "unknown",
              "error",
              "pending",
              "in-progress",
              "timeout",
              "cancelled",
              "scheduled"
            ],
            "description": "Estado atual da operação."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Marcação temporal de criação."
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Marcação temporal de início."
          },
          "ended_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Marcação temporal de finalização."
          },
          "microservice_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do microsserviço relacionado, quando existir."
          },
          "flow_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do fluxo relacionado, quando existir."
          },
          "remote_support": {
            "$ref": "#/components/schemas/GetOperationByIdRemoteSupportV1"
          }
        },
        "required": [
          "id",
          "organization_id",
          "name",
          "description",
          "status",
          "created_at"
        ]
      },
      "GetOperationByIdRemoteSupportV1": {
        "type": "object",
        "nullable": true,
        "properties": {
          "start_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data de início do suporte remoto."
          },
          "end_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data de término do suporte remoto."
          },
          "type": {
            "type": "string",
            "nullable": true,
            "description": "Tipo de sessão de suporte remoto."
          }
        }
      },
      "CreateReportingGroupMagicLinkRequestV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "description": "Data e hora de expiração em UTC (ISO 8601, por exemplo, com sufixo Z). Deve estar no futuro e não mais de 91 dias à frente.",
            "example": "2026-03-15T12:00:00.000Z"
          },
          "installer": {
            "$ref": "#/components/schemas/ReportingGroupMagicLinkInstallerV2"
          }
        },
        "required": [
          "expires_at",
          "installer"
        ],
        "description": "Corpo de solicitação para criar um link mágico do Grupo de relatório."
      },
      "ReportingGroupMagicLinkInstallerV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "enum": [
              "latest"
            ],
            "description": "Versão do instalador.",
            "example": "latest"
          },
          "platform": {
            "type": "string",
            "enum": [
              "windows"
            ],
            "description": "Plataforma do instalador.",
            "example": "windows"
          },
          "arch": {
            "type": "string",
            "enum": [
              "x64"
            ],
            "description": "Arquitetura do instalador.",
            "example": "x64"
          },
          "type": {
            "type": "string",
            "enum": [
              "fxxone"
            ],
            "description": "Tipo de instalador.",
            "example": "fxxone"
          }
        },
        "required": [
          "version",
          "platform",
          "arch",
          "type"
        ],
        "description": "Seleção de instalador para o link mágico."
      },
      "CreateReportingGroupMagicLinkResponseV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do link mágico",
            "example": "507f1f77bcf86cd799439099"
          },
          "token": {
            "type": "string",
            "description": "Token associado com o link mágico.",
            "example": "2ab46558-3c40-4b72-8fce-08b7b596f624"
          },
          "link": {
            "type": "string",
            "description": "URL do link mágico.",
            "example": "https://portal.example.com/magic-link?key=2ab46558-3c40-4b72-8fce-08b7b596f624"
          }
        },
        "required": [
          "id",
          "token",
          "link"
        ]
      },
      "CreateReportingGroupRequestV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 512,
            "description": "O nome do grupo de relatório. Deve ser único dentro da organização.",
            "example": "Grupo de reporte de Producción"
          },
          "product_config_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "O identificador único da configuração de produto que será associado a este grupo de relatório. A configuração de produto deve existir e pertencer à organização.",
            "example": "507f1f77bcf86cd799439030"
          },
          "patch_policy_target_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Opcional. O identificador único do destino da política de patches que será associado a este grupo de relatório.",
            "example": "507f1f77bcf86cd799439040"
          },
          "fishing_pattern": {
            "type": "string",
            "maxLength": 250,
            "description": "Opcional. Um padrão de expressão regular usado para correspondência de dispositivos. Deve ser um padrão regex válido. Se fornecido, também deve ser especificado fishing_pattern_field.",
            "example": "Estaciones de trabajo Windows"
          },
          "fishing_pattern_field": {
            "type": "string",
            "enum": [
              "full_name",
              "description",
              "ou",
              "current_subnet"
            ],
            "description": "Opcional. Campo ao qual se aplica fishing_pattern. Obrigatório se fishing_pattern for fornecido. Valores válidos: full_name (nome completo do dispositivo), description (descrição do dispositivo), ou (unidade organizacional), current_subnet (sub-rede atual).",
            "example": "full_name"
          },
          "intermediate_device_1_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Opcional. O identificador único do primeiro Workspace de dispositivo intermediário. Dispositivos intermediários são usados para ações Wake on LAN em redes seguras, permitindo o ligamento remoto de dispositivos alvo através de gateways intermediários. Dispositivos intermediários devem ser definidos sequencialmente sem lacunas. Se intermediate_device_2_id ou intermediate_device_3_id forem fornecidos, este campo é obrigatório.",
            "example": "507f1f77bcf86cd799439050"
          },
          "intermediate_device_2_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Opcional. O identificador único do segundo Workspace de dispositivo intermediário. É usado para ações de Wake on LAN em redes seguras. Requer que o intermediate_device_1_id seja fornecido. Se intermediate_device_3_id for fornecido, este campo é obrigatório.",
            "example": "507f1f77bcf86cd799439051"
          },
          "intermediate_device_3_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Opcional. O identificador único do terceiro Workspace de dispositivo intermediário. É usado para ações de Wake on LAN em redes seguras. Requer que intermediate_device_1_id e intermediate_device_2_id sejam fornecidos.",
            "example": "507f1f77bcf86cd799439052"
          }
        },
        "required": [
          "name",
          "product_config_id"
        ],
        "description": "Corpo de solicitação para criar um novo grupo de relatório. Os grupos de relatório organizam dispositivos e gerenciam configurações, políticas de patches e roteamento de dispositivos intermediários."
      },
      "ReportingGroupByIdV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID do grupo de relatório"
          },
          "name": {
            "type": "string",
            "description": "Nome do grupo de relatório"
          },
          "organization_id": {
            "type": "string",
            "nullable": true,
            "description": "Identificador da organização"
          },
          "product_config_id": {
            "type": "string",
            "nullable": true,
            "description": "Identificador da configuração do produto"
          },
          "fishing_pattern": {
            "type": "string",
            "nullable": true,
            "description": "Nome do fishing pattern"
          },
          "fishing_pattern_field": {
            "type": "string",
            "enum": [
              "full_name",
              "description",
              "ou",
              "current_subnet"
            ],
            "nullable": true,
            "description": "Campo ao qual se aplica fishing_pattern. Valores possíveis: full_name, description, ou, current_subnet."
          },
          "patch_policy_target_id": {
            "type": "string",
            "nullable": true,
            "description": "Identificador do destino de política de patches"
          },
          "policy_reporting_group": {
            "type": "string",
            "nullable": true,
            "description": "Identificador do grupo de relatório de política"
          },
          "overridden_agent_settings": {
            "$ref": "#/components/schemas/ReportingGroupAgentSettingsV2",
            "nullable": true,
            "description": "Configurações do agente sobrescritas a nível de grupo de relatório"
          },
          "effective_agent_settings": {
            "$ref": "#/components/schemas/ReportingGroupEffectiveAgentSettingsV2",
            "nullable": true,
            "description": "Configurações efetivas do agente (combinadas a partir da configuração de produto e substituições)"
          },
          "execute_flexx_analyzer_agent": {
            "type": "boolean",
            "description": "Se a execução do agente Flexx Analyzer está habilitada"
          },
          "intermediate_device_1_id": {
            "type": "string",
            "nullable": true,
            "description": "ID do Workspace do primeiro dispositivo intermediário (procurado por sysId)"
          },
          "intermediate_device_2_id": {
            "type": "string",
            "nullable": true,
            "description": "ID do Workspace do segundo dispositivo intermediário (procurado por sysId)"
          },
          "intermediate_device_3_id": {
            "type": "string",
            "nullable": true,
            "description": "ID do Workspace do terceiro dispositivo intermediário (procurado por sysId)"
          }
        },
        "required": [
          "id",
          "name",
          "execute_flexx_analyzer_agent"
        ]
      },
      "ReportingGroupAgentSettingsV2": {
        "type": "object",
        "properties": {
          "remote_support": {
            "type": "string",
            "nullable": true,
            "description": "Configuração de suporte remoto"
          },
          "collect_device_location": {
            "type": "boolean",
            "nullable": true,
            "description": "Se a coleta de localização do dispositivo está habilitada"
          },
          "auto_update_agents": {
            "type": "boolean",
            "nullable": true,
            "description": "Se a atualização automática de agentes está habilitada"
          },
          "collect_event_logs": {
            "type": "boolean",
            "nullable": true,
            "description": "Se a coleta de logs de eventos está habilitada"
          },
          "event_log_ids": {
            "type": "string",
            "nullable": true,
            "description": "IDs de logs de eventos"
          },
          "event_logs_recurrence": {
            "type": "number",
            "nullable": true,
            "description": "Recorrência de logs de eventos"
          },
          "collect_disks": {
            "type": "boolean",
            "nullable": true,
            "description": "Se a coleta de discos está habilitada"
          },
          "collect_services": {
            "type": "boolean",
            "nullable": true,
            "description": "Se a coleta de serviços está habilitada"
          },
          "collect_pnp_events": {
            "type": "boolean",
            "nullable": true,
            "description": "Se a coleta de eventos PnP está habilitada"
          },
          "collect_public_ip": {
            "type": "boolean",
            "nullable": true,
            "description": "Se a coleta de IP público está habilitada"
          },
          "fra_system_actions_role": {
            "type": "string",
            "nullable": true,
            "description": "Papel das ações do sistema FRA"
          },
          "unified_reporting": {
            "type": "string",
            "nullable": true,
            "description": "Configuração de relatório unificado"
          },
          "unified_operations": {
            "type": "string",
            "nullable": true,
            "description": "Configuração de operações unificadas"
          },
          "uninstall_protection": {
            "type": "string",
            "nullable": true,
            "enum": [
              "off",
              "on"
            ],
            "description": "Valores possíveis: off, on. Se não houver um estado aplicável, retorna null."
          },
          "web_apps": {
            "type": "boolean",
            "nullable": true,
            "description": "Se as web apps estão habilitadas"
          }
        }
      },
      "ReportingGroupEffectiveAgentSettingsV2": {
        "type": "object",
        "description": "Configurações efetivas do agente (inclui campos de configuração de produto mais sobrescrições)",
        "properties": {
          "remote_support": {
            "type": "string",
            "nullable": true
          },
          "collect_device_location": {
            "type": "boolean",
            "nullable": true
          },
          "auto_update_agents": {
            "type": "boolean",
            "nullable": true
          },
          "collect_event_logs": {
            "type": "boolean",
            "nullable": true
          },
          "event_log_ids": {
            "type": "string",
            "nullable": true
          },
          "event_logs_recurrence": {
            "type": "number",
            "nullable": true
          },
          "collect_disks": {
            "type": "boolean",
            "nullable": true
          },
          "collect_services": {
            "type": "boolean",
            "nullable": true
          },
          "collect_pnp_events": {
            "type": "boolean",
            "nullable": true
          },
          "collect_public_ip": {
            "type": "boolean",
            "nullable": true
          },
          "fra_system_actions_role": {
            "type": "string",
            "nullable": true
          },
          "unified_reporting": {
            "type": "string",
            "nullable": true
          },
          "uninstall_protection": {
            "type": "string",
            "nullable": true,
            "enum": [
              "off",
              "on"
            ],
            "description": "Valores possíveis: off, on. Se não houver um estado aplicável, retorna null."
          },
          "resources_report_recurrence": {
            "type": "number",
            "nullable": true
          },
          "profile_storage_report_recurrence": {
            "type": "number",
            "nullable": true
          },
          "sync_broker_recurrence": {
            "type": "number",
            "nullable": true
          },
          "detect_new_citrix_subscriptions": {
            "type": "boolean",
            "nullable": true
          },
          "proxy_type": {
            "type": "string",
            "nullable": true
          },
          "can_enable_flexx_agent_per_group": {
            "type": "boolean",
            "nullable": true
          },
          "web_apps": {
            "type": "boolean",
            "nullable": true
          },
          "fra_simplified_security": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateRoleRequestV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Nome do papel do usuário."
          },
          "permissions": {
            "type": "array",
            "minItems": 1,
            "description": "Entradas de permissões atribuídas ao papel.",
            "items": {
              "$ref": "#/components/schemas/CreateRolePermissionRequestItemV2"
            }
          }
        },
        "required": [
          "name",
          "permissions"
        ]
      },
      "CreateRolePermissionRequestItemV2": {
        "type": "object",
        "properties": {
          "portal_permission": {
            "type": "string",
            "enum": [
              "admin",
              "organization_admin",
              "organization_admin_read_only",
              "user",
              "platform",
              "l1_support_team",
              "l1_support_team_read_only",
              "l2_support_team",
              "l2_support_team_read_only",
              "l3_engineering_team",
              "l3_engineering_team_read_only",
              "billing"
            ],
            "description": "Nível de permissão do Portal."
          },
          "workspaces_permission": {
            "type": "string",
            "enum": [
              "no_access",
              "l1_support_team_read_only",
              "l1_support_team",
              "l2_support_team_read_only",
              "l2_support_team",
              "l3_engineering_team_read_only",
              "l3_engineering_team",
              "admin_read_only",
              "admin"
            ],
            "description": "Nível de permissão do Workspaces."
          },
          "analyzer_permission": {
            "type": "string",
            "enum": [
              "no_access",
              "access",
              "admin"
            ],
            "description": "Nível de permissão do Analyzer."
          },
          "target_organization": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "all"
                ]
              },
              {
                "type": "string",
                "pattern": "^[0-9a-f]{24}$",
                "minLength": 24,
                "maxLength": 24
              }
            ],
            "description": "Âmbito de organização da permissão: `all` para todas as organizações ou um `organization_id` específico."
          },
          "target_reporting_groups": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "all"
                ]
              },
              {
                "type": "array",
                "minItems": 1,
                "items": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{24}$",
                  "minLength": 24,
                  "maxLength": 24
                }
              }
            ],
            "description": "Âmbito dos grupos de relatório da permissão: `all` para todos os grupos ou lista de `reporting_group_id` específicos."
          }
        },
        "required": [
          "portal_permission",
          "workspaces_permission",
          "analyzer_permission",
          "target_organization",
          "target_reporting_groups"
        ]
      },
      "RoleV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do papel."
          },
          "name": {
            "type": "string",
            "description": "Nome do papel."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização associada a este papel."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Carimbo de tempo de criação do papel em formato ISO 8601."
          },
          "created_by": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do usuário que criou o papel."
          },
          "permissions": {
            "type": "array",
            "nullable": true,
            "description": "Entradas de permissões configuradas para este papel.",
            "items": {
              "$ref": "#/components/schemas/GetRolePermissionItemV2"
            }
          }
        },
        "required": [
          "id",
          "name",
          "organization_id",
          "created_at",
          "created_by"
        ]
      },
      "GetRolePermissionItemV2": {
        "type": "object",
        "properties": {
          "portal_permission": {
            "type": "string",
            "nullable": true,
            "enum": [
              "admin",
              "organization_admin",
              "organization_admin_read_only",
              "user",
              "platform",
              "l1_support_team",
              "l1_support_team_read_only",
              "l2_support_team",
              "l2_support_team_read_only",
              "l3_engineering_team",
              "l3_engineering_team_read_only",
              "billing"
            ],
            "description": "Nível de permissão do Portal."
          },
          "workspaces_permission": {
            "type": "string",
            "nullable": true,
            "enum": [
              "no_access",
              "l1_support_team_read_only",
              "l1_support_team",
              "l2_support_team_read_only",
              "l2_support_team",
              "l3_engineering_team_read_only",
              "l3_engineering_team",
              "admin_read_only",
              "admin"
            ],
            "description": "Nível de permissão do Workspaces."
          },
          "analyzer_permission": {
            "type": "string",
            "nullable": true,
            "enum": [
              "no_access",
              "access",
              "admin"
            ],
            "description": "Nível de permissão do Analyzer."
          },
          "target_organization": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "all"
                ]
              },
              {
                "type": "string",
                "pattern": "^[0-9a-f]{24}$",
                "minLength": 24,
                "maxLength": 24
              }
            ],
            "description": "Âmbito de organização da permissão: `all` para todas as organizações ou um `organization_id` específico."
          },
          "target_reporting_groups": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "all"
                ]
              },
              {
                "type": "array",
                "minItems": 1,
                "items": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{24}$",
                  "minLength": 24,
                  "maxLength": 24
                }
              }
            ],
            "description": "Âmbito dos grupos de relatório da permissão: `all` para todos os grupos ou lista de `reporting_group_id` específicos."
          }
        },
        "required": [
          "target_organization",
          "target_reporting_groups"
        ]
      },
      "CreateTenantRequestV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "tenant",
              "organization"
            ],
            "description": "Tipo de criação. `tenant` para CLIENTE FINAL, `organization` para PARCEIRO/ATACADISTA."
          },
          "name": {
            "type": "string",
            "maxLength": 512
          },
          "tenant_config": {
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "description": "Configuração específica para `type=tenant`.",
            "properties": {
              "product_config_id": {
                "type": "string",
                "maxLength": 24,
                "pattern": "^[0-9a-f]{24}$"
              },
              "analyzer": {
                "type": "string",
                "enum": [
                  "existing",
                  "new"
                ]
              }
            },
            "required": [
              "product_config_id",
              "analyzer"
            ]
          },
          "organization_config": {
            "type": "object",
            "additionalProperties": false,
            "nullable": true,
            "description": "Configuração específica para `type=organization`.",
            "properties": {
              "product_id": {
                "type": "string",
                "maxLength": 24,
                "pattern": "^[0-9a-f]{24}$"
              },
              "region": {
                "type": "string",
                "maxLength": 128
              }
            },
            "required": [
              "product_id",
              "region"
            ]
          },
          "policy_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$"
          },
          "organization_email": {
            "type": "string",
            "maxLength": 512
          },
          "organization_language": {
            "type": "string",
            "maxLength": 512
          },
          "organization_country": {
            "type": "string",
            "maxLength": 512
          },
          "organization_industry": {
            "type": "string",
            "maxLength": 512
          }
        },
        "required": [
          "type",
          "name",
          "organization_email",
          "organization_language",
          "organization_country",
          "organization_industry"
        ],
        "description": "Corpo único de criação com campos condicionais por `type`: se `type=tenant`, requer `tenant_config`; se `type=organization`, requer `organization_config`."
      },
      "TenantByIdV2": {
        "type": "object",
        "required": [
          "id",
          "organization_id",
          "created_at",
          "name",
          "region"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "organization_id": {
            "type": "string",
            "description": "ID da organização do tenant"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "product_id": {
            "type": "string",
            "nullable": true,
            "description": "ID do produto"
          },
          "policy_id": {
            "type": "string",
            "nullable": true,
            "description": "ID da política"
          }
        }
      },
      "CreateUserRequestV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Nome do usuário."
          },
          "surname": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Sobrenome do usuário."
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Endereço de e-mail do usuário."
          },
          "language": {
            "type": "string",
            "enum": [
              "en-EN",
              "es-ES",
              "pt-BR",
              "ca-ES",
              "eu-ES"
            ],
            "description": "Código de idioma preferido."
          },
          "role_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do papel atribuído ao usuário."
          },
          "department": {
            "type": "string",
            "nullable": true,
            "description": "Departamento do usuário."
          },
          "email_login_enabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Se o login por e-mail está habilitado para o usuário."
          }
        },
        "required": [
          "name",
          "surname",
          "email",
          "language",
          "role_id"
        ]
      },
      "UserByIdV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do usuário."
          },
          "organization_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização associada ao usuário."
          },
          "name": {
            "type": "string",
            "description": "Nome do usuário."
          },
          "surname": {
            "type": "string",
            "description": "Sobrenome do usuário."
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Endereço de e-mail do usuário."
          },
          "language": {
            "type": "string",
            "enum": [
              "en-EN",
              "es-ES",
              "pt-BR",
              "ca-ES",
              "eu-ES"
            ],
            "description": "Código de idioma preferido para o usuário."
          },
          "created_at": {
            "type": "string",
            "description": "Data de criação em formato ISO 8601."
          },
          "department": {
            "type": "string",
            "nullable": true,
            "description": "Departamento do usuário."
          },
          "role_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do papel atribuído ao usuário."
          },
          "created_by": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do usuário que criou o registro do usuário."
          },
          "email_login_enabled": {
            "type": "boolean",
            "nullable": true,
            "description": "Indica se o login por e-mail está habilitado para o usuário."
          }
        },
        "required": [
          "id",
          "name",
          "surname",
          "email",
          "language",
          "created_at"
        ]
      },
      "CreateWorkspaceGroupScheduleRequestV2": {
        "type": "object",
        "properties": {
          "cron_expression": {
            "type": "string",
            "description": "Expressão cron que define quando o cronograma deve ser executado. Formato: minuto hora dia-do-mês mês dia-da-semana. Exemplos: '0 8 * * 1-5' (8 da manhã em dias de semana), '0 0 * * 0' (meia-noite do domingo), '30 14 * * *' (2:30 da tarde diariamente). Dia-da-semana: 0=domingo, 1=segunda-feira, ..., 6=sábado. Suporta intervalos (1-5), listas (1,3,5) e curingas (*). Deve ser um formato de expressão cron válido com 5 campos separados por espaços.",
            "example": "0 8 * * 1-5"
          },
          "time_zone": {
            "type": "string",
            "description": "Zona horária para a execução do cronograma. Suporta identificadores IANA (por exemplo, 'America/New_York') e Windows (por exemplo, 'Pacific Standard Time').",
            "example": "Eastern Standard Time"
          },
          "type": {
            "type": "string",
            "enum": [
              "start",
              "stop",
              "restart"
            ],
            "description": "Tipo de operação de energia a ser realizada. START: Liga os Workspaces do grupo. STOP: Desliga os Workspaces do grupo. RESTART: Reinicia os Workspaces do grupo.",
            "example": "start"
          },
          "intermediate_device": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Opcional. O identificador único do Workspace de dispositivo intermediário. Se fornecido, indica que um dispositivo intermediário deve ser usado para operações Wake on LAN. Aplicável apenas a programações START. É usado para ações Wake on LAN em redes seguras. O Workspace deve existir e pertencer à organização.",
            "example": "507f1f77bcf86cd799439050"
          }
        },
        "required": [
          "cron_expression",
          "time_zone",
          "type"
        ]
      },
      "WorkspaceGroupScheduleV2": {
        "type": "object",
        "required": [
          "id",
          "cron_expression",
          "time_zone",
          "type"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "description": "O identificador único da programação",
            "example": "507f1f77bcf86cd799439060"
          },
          "cron_expression": {
            "type": "string",
            "description": "Expressão cron que define quando a programação é executada. Formato: minuto hora dia-do-mês mês dia-da-semana.",
            "example": "0 8 * * 1-5"
          },
          "time_zone": {
            "type": "string",
            "description": "Zona horária para a execução do cronograma. Suporta identificadores IANA (por exemplo, 'America/New_York') e Windows (por exemplo, 'Pacific Standard Time').",
            "example": "Eastern Standard Time"
          },
          "type": {
            "type": "string",
            "enum": [
              "start",
              "stop",
              "restart"
            ],
            "description": "Tipo de operação de energia: START (liga), STOP (desliga), RESTART (reinicia Workspaces)"
          },
          "intermediate_device": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "nullable": true,
            "description": "O identificador único do workspace do dispositivo intermediário, se estiver configurado. É usado para ações de Wake on LAN em redes seguras.",
            "example": "507f1f77bcf86cd799439050"
          },
          "created_by": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "nullable": true,
            "description": "ID do usuário que criou a programação",
            "example": "507f1f77bcf86cd799439070"
          }
        }
      },
      "WorkspacegroupsCreateRequestV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 512
          },
          "description": {
            "type": "string",
            "maxLength": 512
          },
          "type": {
            "type": "string",
            "enum": [
              "static"
            ],
            "default": "static"
          },
          "location": {
            "$ref": "#/components/schemas/WorkspaceGroupBaseUpdateLocationInputV2"
          }
        },
        "required": [
          "name"
        ]
      },
      "WorkspaceGroupBaseUpdateLocationInputV2": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "address": {
            "type": "string",
            "maxLength": 512
          },
          "description": {
            "type": "string",
            "maxLength": 512
          }
        },
        "required": [
          "latitude",
          "longitude",
          "address"
        ]
      },
      "WorkspaceGroupDetailResponseV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "description": "ID do grupo de workspaces"
          },
          "name": {
            "type": "string",
            "description": "Nome do grupo de workspaces"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Descrição do grupo de workspaces"
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "description": "Identificador da organização"
          },
          "created_by": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "description": "ID do usuário que criou o grupo de workspaces"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Marca temporal de criação"
          },
          "type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "static",
              "dynamic",
              "entra_id"
            ],
            "description": "Tipo de grupo de workspaces"
          },
          "filter": {
            "type": "string",
            "nullable": true,
            "description": "Cadeia de filtro para grupo de workspaces dinâmicos"
          },
          "location": {
            "$ref": "#/components/schemas/WorkspaceLocationV2",
            "nullable": true,
            "description": "Informação de localização do grupo de workspaces"
          },
          "entra_id_source": {
            "$ref": "#/components/schemas/WorkspaceGroupEntraIdSourceV2",
            "nullable": true,
            "description": "Informação de origem do Entra ID para o grupo de workspaces"
          }
        },
        "required": [
          "id",
          "name",
          "organization_id",
          "created_at"
        ]
      },
      "WorkspaceGroupEntraIdSourceV2": {
        "type": "object",
        "properties": {
          "resource_id": {
            "type": "string",
            "description": "ID de recurso do Entra ID"
          },
          "resource_type": {
            "type": "string",
            "enum": [
              "group",
              "administrative_unit"
            ],
            "description": "Tipo de recurso do Entra ID"
          },
          "resource_name": {
            "type": "string",
            "description": "Nome do recurso do Entra ID"
          }
        },
        "required": [
          "resource_id",
          "resource_type",
          "resource_name"
        ]
      },
      "WorkspaceLocationV2": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Coordenada de latitude"
          },
          "longitude": {
            "type": "number",
            "description": "Coordenada de longitude"
          },
          "address": {
            "type": "string",
            "description": "Cadeia de endereço"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Descrição da localização"
          }
        },
        "required": [
          "latitude",
          "longitude",
          "address"
        ]
      },
      "GetOperationByIdResponseV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da execução da operação."
          },
          "name": {
            "type": "string",
            "description": "Nome da operação."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização proprietária da operação."
          },
          "description": {
            "type": "string",
            "description": "Descrição da operação. Retorna uma cadeia vazia quando não existe na origem."
          },
          "status": {
            "type": "string",
            "enum": [
              "finished",
              "unknown",
              "error",
              "pending",
              "in-progress",
              "timeout",
              "cancelled",
              "scheduled"
            ],
            "description": "Estado atual da operação."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Marcação temporal de criação."
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Marcação temporal de início."
          },
          "ended_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Marcação temporal de finalização."
          },
          "microservice_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do microsserviço relacionado, quando existir."
          },
          "flow_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do fluxo relacionado, quando existir."
          },
          "remote_support": {
            "$ref": "#/components/schemas/GetOperationByIdRemoteSupportV2"
          }
        },
        "required": [
          "id",
          "organization_id",
          "name",
          "description",
          "status",
          "created_at"
        ]
      },
      "GetOperationByIdRemoteSupportV2": {
        "type": "object",
        "nullable": true,
        "properties": {
          "start_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data de início do suporte remoto."
          },
          "end_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data de término do suporte remoto."
          },
          "type": {
            "type": "string",
            "nullable": true,
            "description": "Tipo de sessão de suporte remoto."
          }
        }
      },
      "GetAuditsResponseV2": {
        "type": "object",
        "required": [
          "has_next",
          "data"
        ],
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se existe uma próxima página."
          },
          "data": {
            "type": "array",
            "description": "Lista de auditorias.",
            "items": {
              "$ref": "#/components/schemas/AuditItemV2"
            }
          }
        }
      },
      "AuditItemV2": {
        "type": "object",
        "required": [
          "id",
          "audited_at",
          "action",
          "entity_type",
          "entity_id",
          "trigger_type",
          "trigger_id",
          "trigger_name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador da auditoria.",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24
          },
          "audited_at": {
            "type": "string",
            "format": "date-time",
            "description": "Data em que a auditoria é registrada."
          },
          "organization_id": {
            "type": "string",
            "nullable": true,
            "description": "Identificador da organização associada ao registro.",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24
          },
          "action": {
            "type": "string",
            "description": "Ação auditada.",
            "enum": [
              "insert",
              "update",
              "delete",
              "recover",
              "soft_delete"
            ]
          },
          "entity_type": {
            "type": "string",
            "description": "Tipo de entidade sobre a qual a ação é executada."
          },
          "entity_id": {
            "type": "string",
            "description": "Identificador da entidade afetada."
          },
          "trigger_type": {
            "type": "string",
            "description": "Tipo de ator que desencadeia a ação.",
            "enum": [
              "api",
              "user"
            ]
          },
          "trigger_id": {
            "type": "string",
            "description": "Identificador do ator.",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24
          },
          "trigger_name": {
            "type": "string",
            "description": "Nome visível do ator."
          }
        }
      },
      "ConditionTypeV2ListResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há mais resultados disponíveis na próxima página"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConditionTypeV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "ConditionTypeV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "frequency_values": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "value_type": {
            "type": "string"
          },
          "value_placeholder": {
            "type": "string",
            "nullable": true
          },
          "period": {
            "type": "boolean"
          },
          "op_values": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "eq",
                "gt",
                "lt",
                "gte",
                "lte",
                "startsWith",
                "endsWith",
                "contains",
                "at"
              ]
            },
            "description": "Valores de operador permitidos para o value_type deste tipo de condição. Campo calculado baseado em value_type: string → [\"eq\", \"startsWith\", \"endsWith\", \"contains\"], int/double → [\"eq\", \"gt\", \"lt\", \"gte\", \"lte\"], id/bool → [\"eq\"], cron → [\"at\"]"
          }
        },
        "required": [
          "id"
        ]
      },
      "ListDigitalActivityCoreProcessGroupCoreProcessesResponseV2": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetDigitalActivityCoreProcessResponseV2"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "GetDigitalActivityCoreProcessResponseV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Nome funcional do processo principal."
          },
          "process_name": {
            "type": "string",
            "description": "Nome do processo do sistema operacional."
          }
        },
        "required": [
          "name",
          "process_name"
        ]
      },
      "ListDigitalActivityCoreProcessGroupsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se existe uma próxima página."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetDigitalActivityCoreProcessGroupResponseV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "ListDigitalActivityCoreProcessMetricsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se existe uma próxima página."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetDigitalActivityCoreProcessMetricsResponseV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetDigitalActivityCoreProcessMetricsResponseV2": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do espaço de trabalho."
          },
          "core_process_group_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do grupo de processos principais."
          },
          "reporting_group_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do grupo de relatórios associado."
          },
          "organization_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização associada ao registro."
          },
          "core_activity_time_hours": {
            "type": "number",
            "description": "Horas de atividade principal."
          },
          "reporting_time_hours": {
            "type": "number",
            "description": "Horas de tempo reportado."
          },
          "opened_session_time_hours": {
            "type": "number",
            "description": "Horas de sessão aberta."
          },
          "user_active_time_hours": {
            "type": "number",
            "description": "Horas de atividade de usuário."
          },
          "month": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12,
            "description": "Mês da métrica."
          },
          "year": {
            "type": "integer",
            "minimum": 2000,
            "maximum": 2100,
            "description": "Ano da métrica."
          },
          "deleted_date": {
            "type": "string",
            "nullable": true,
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Data de eliminação do workspace quando aplicável."
          }
        }
      },
      "ListDigitalActivityHybridWorkMetricsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se existe uma próxima página."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetDigitalActivityHybridWorkMetricsResponseV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetDigitalActivityHybridWorkMetricsResponseV2": {
        "type": "object",
        "properties": {
          "user_name": {
            "type": "string",
            "description": "Identificador legível do usuário na métrica."
          },
          "office_active_time_hours": {
            "type": "number",
            "description": "Horas de atividade no escritório."
          },
          "remote_active_time_hours": {
            "type": "number",
            "description": "Horas de atividade remota."
          },
          "ambiguous_active_time_hours": {
            "type": "number",
            "description": "Horas de atividade sem classificação de ambiente."
          },
          "total_active_time_hours": {
            "type": "number",
            "description": "Horas totais de atividade."
          },
          "month": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12,
            "description": "Mês da métrica."
          },
          "year": {
            "type": "integer",
            "minimum": 2000,
            "maximum": 2100,
            "description": "Ano da métrica."
          },
          "organization_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização associada à linha."
          }
        }
      },
      "ListDigitalActivityUserMetricsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se existe uma próxima página."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetDigitalActivityUserMetricsResponseV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetDigitalActivityUserMetricsResponseV2": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do espaço de trabalho."
          },
          "user_name": {
            "type": "string",
            "description": "Identificador legível do usuário na métrica."
          },
          "reporting_group_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do grupo de relatórios associado."
          },
          "reporting_time_hours": {
            "type": "number",
            "description": "Horas de tempo reportado."
          },
          "opened_session_time_hours": {
            "type": "number",
            "description": "Horas de sessão aberta."
          },
          "user_active_time_hours": {
            "type": "number",
            "description": "Horas de atividade do usuário."
          },
          "month": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12,
            "description": "Mês da métrica."
          },
          "year": {
            "type": "integer",
            "minimum": 2000,
            "maximum": 2100,
            "description": "Ano da métrica."
          },
          "deleted_date": {
            "type": "string",
            "nullable": true,
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Data de eliminação do workspace quando aplicável."
          },
          "organization_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização associada à linha."
          }
        }
      },
      "ListDigitalActivityWorkspaceMetricsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se existe uma próxima página."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetDigitalActivityWorkspaceMetricsResponseV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetDigitalActivityWorkspaceMetricsResponseV2": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do espaço de trabalho."
          },
          "reporting_group_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do grupo de relatórios associado."
          },
          "reporting_time_hours": {
            "type": "number",
            "description": "Horas de tempo reportado."
          },
          "opened_session_time_hours": {
            "type": "number",
            "description": "Horas de sessão aberta."
          },
          "user_active_time_hours": {
            "type": "number",
            "description": "Horas de atividade do usuário."
          },
          "core_activity_time_hours": {
            "type": "number",
            "nullable": true,
            "description": "Horas de atividade principal."
          },
          "month": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12,
            "description": "Mês da métrica."
          },
          "year": {
            "type": "integer",
            "minimum": 2000,
            "maximum": 2100,
            "description": "Ano da métrica."
          },
          "deleted_date": {
            "type": "string",
            "nullable": true,
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Data de eliminação do workspace quando aplicável."
          }
        }
      },
      "FlowListItemV2ListResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlowListItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "FlowListItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "session",
              "workspace"
            ]
          },
          "detection_only": {
            "type": "boolean"
          },
          "cooldown_minutes": {
            "type": "number",
            "description": "Tempo de espera em minutos"
          },
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ]
      },
      "GetInstalledAppByIdResponseV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do aplicativo instalado."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização associada ao aplicativo instalado."
          },
          "name": {
            "type": "string",
            "description": "Nome do aplicativo instalado."
          },
          "publisher": {
            "type": "string",
            "nullable": true,
            "description": "Fornecedor do aplicativo instalado."
          },
          "operating_system": {
            "type": "string",
            "enum": [
              "windows",
              "linux",
              "android",
              "mac_os",
              "chrome_os",
              "other"
            ],
            "description": "Sistema operacional onde o aplicativo é observado."
          },
          "notes": {
            "type": "string",
            "description": "Notas associadas ao aplicativo instalado."
          },
          "discovered_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Marca de tempo da primeira descoberta."
          },
          "reported_at": {
            "type": "string",
            "format": "date-time",
            "description": "Marca de tempo do último relatório."
          },
          "installations": {
            "type": "integer",
            "minimum": 0,
            "description": "Número de instalações observadas para o aplicativo."
          }
        },
        "required": [
          "id",
          "organization_id",
          "name",
          "operating_system",
          "notes",
          "reported_at",
          "installations"
        ]
      },
      "GetInstalledAppVersionsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetInstalledAppVersionsItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetInstalledAppVersionsItemV2": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string",
            "nullable": true,
            "description": "Versão do aplicativo instalado."
          },
          "reported_at": {
            "type": "string",
            "format": "date-time",
            "description": "Marca de tempo do último relatório para esta versão."
          },
          "discovered_at": {
            "type": "string",
            "format": "date-time",
            "description": "Marca de tempo da primeira observação para esta versão."
          }
        },
        "required": [
          "reported_at",
          "discovered_at"
        ]
      },
      "GetInstalledAppWorkspacesResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetInstalledAppWorkspacesItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetInstalledAppWorkspacesItemV2": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do Workspace."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador de organização."
          },
          "version": {
            "type": "string",
            "nullable": true,
            "description": "Versão do aplicativo instalado reportado para o Workspace."
          },
          "reported_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data e hora do último relatório de instalação para o Workspace."
          },
          "install_location": {
            "type": "string",
            "nullable": true,
            "description": "Caminho de instalação reportado para o aplicativo no Workspace."
          },
          "installed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data e hora de instalação reportada para o Workspace."
          }
        },
        "required": [
          "workspace_id",
          "organization_id"
        ]
      },
      "GetInstalledAppsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetInstalledAppsItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetInstalledAppsItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do aplicativo instalado."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização associado a este item de aplicativo instalado."
          },
          "name": {
            "type": "string",
            "description": "Nome do aplicativo instalado."
          },
          "discovered_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Marca de tempo da primeira descoberta."
          },
          "reported_at": {
            "type": "string",
            "format": "date-time",
            "description": "Marca de tempo do último relatório."
          },
          "operating_system": {
            "type": "string",
            "enum": [
              "windows",
              "linux",
              "android",
              "mac_os",
              "chrome_os",
              "other"
            ],
            "description": "Sistema operacional onde o aplicativo é observado."
          },
          "publisher": {
            "type": "string",
            "nullable": true,
            "description": "Publicador do aplicativo."
          },
          "installations": {
            "type": "integer",
            "minimum": 0,
            "description": "Número de instalações observadas para o aplicativo."
          }
        },
        "required": [
          "id",
          "organization_id",
          "name",
          "reported_at",
          "operating_system",
          "installations"
        ]
      },
      "GetMeResponseV2": {
        "type": "object",
        "properties": {
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização autenticada."
          },
          "token_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da chave API autenticada."
          },
          "token_name": {
            "type": "string",
            "nullable": true,
            "description": "Nome do token autenticado."
          },
          "token_created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Data de criação do token."
          },
          "token_expires_at": {
            "type": "string",
            "format": "date-time",
            "description": "Data de expiração do token."
          }
        },
        "required": [
          "organization_id",
          "token_id",
          "token_name",
          "token_created_at",
          "token_expires_at"
        ]
      },
      "GetMicroserviceByIdResponseV2": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MicroserviceItemV2"
          }
        },
        "required": [
          "data"
        ]
      },
      "MicroserviceItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do microserviço."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização associada ao microserviço."
          },
          "name": {
            "type": "string",
            "description": "Nome do microserviço resolvido no idioma solicitado."
          },
          "description": {
            "type": "string",
            "description": "Descrição do microserviço resolvida no idioma solicitado."
          },
          "category": {
            "type": "string",
            "description": "Categoria do microserviço resolvida no idioma solicitado."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Data e hora de criação do microserviço."
          },
          "archived_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data e hora de arquivamento, quando aplicável."
          },
          "type": {
            "type": "string",
            "enum": [
              "standard",
              "condition"
            ],
            "nullable": true,
            "description": "Tipo funcional do microserviço."
          },
          "context": {
            "type": "string",
            "nullable": true,
            "description": "Contexto de visibilidade do microserviço."
          },
          "is_ai_enhanced": {
            "type": "boolean",
            "nullable": true,
            "description": "Indica se o microserviço tem capacidades de IA habilitadas."
          },
          "enabled": {
            "type": "boolean",
            "description": "Indica se o microserviço está habilitado para a organização."
          },
          "enabled_configuration": {
            "type": "object",
            "nullable": true,
            "description": "Configuração habilitada do microserviço para a organização.",
            "properties": {
              "enabled_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "Data e hora em que a configuração foi habilitada."
              },
              "efficiency": {
                "type": "number",
                "description": "Valor de eficiência da configuração habilitada."
              },
              "workspace_group_execution": {
                "type": "string",
                "enum": [
                  "l1",
                  "l2",
                  "l3"
                ],
                "description": "Modo de execução por grupos de workspace."
              },
              "individual_execution": {
                "type": "string",
                "enum": [
                  "l1",
                  "l2",
                  "l3"
                ],
                "description": "Modo de execução individual."
              },
              "end_user_execution_workspace_group_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{24}$",
                  "minLength": 24,
                  "maxLength": 24
                },
                "description": "Identificadores de grupos de workspace habilitados para execução de usuário final."
              }
            },
            "required": [
              "enabled_at",
              "efficiency",
              "workspace_group_execution",
              "individual_execution",
              "end_user_execution_workspace_group_ids"
            ]
          }
        },
        "required": [
          "id",
          "organization_id",
          "name",
          "description",
          "category",
          "created_at",
          "archived_at",
          "type",
          "context",
          "is_ai_enhanced",
          "enabled",
          "enabled_configuration"
        ]
      },
      "GetMicroservicesResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se existe uma próxima página."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MicroserviceItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetOperationResultsResponseV2": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetOperationResultItemV2"
            }
          },
          "has_next": {
            "type": "boolean",
            "description": "Indica se existem mais resultados na próxima página."
          }
        },
        "required": [
          "data",
          "has_next"
        ]
      },
      "GetOperationResultItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do resultado."
          },
          "operation_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da operação associada."
          },
          "workspace_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do workspace associado."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização associada."
          },
          "status": {
            "type": "string",
            "description": "Estado de execução do resultado.",
            "enum": [
              "scheduled",
              "pending",
              "in-progress",
              "completed",
              "error",
              "timeout",
              "cancelled",
              "unknown"
            ]
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Nome da máquina associado à sessão quando existir."
          },
          "start_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data e hora de início da execução."
          },
          "end_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data e hora de término da execução."
          },
          "script_detail": {
            "type": "string",
            "nullable": true,
            "description": "Detalhe da execução do script quando existir."
          },
          "script_duration": {
            "type": "number",
            "nullable": true,
            "description": "Duração do script em segundos quando existir."
          },
          "script_response": {
            "type": "array",
            "nullable": true,
            "description": "Saída estruturada do script com timestamp e linha.",
            "items": {
              "$ref": "#/components/schemas/GetOperationResultScriptResponseLineV2"
            }
          }
        },
        "required": [
          "id",
          "operation_id",
          "workspace_id",
          "status"
        ]
      },
      "GetOperationResultScriptResponseLineV2": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Timestamp ISO-8601 da linha ou nulo quando não estiver disponível."
          },
          "line": {
            "type": "string",
            "description": "Conteúdo da linha ou bloco de saída."
          }
        },
        "required": [
          "timestamp",
          "line"
        ]
      },
      "GetOperationsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se existe uma próxima página."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetOperationItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetOperationItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da execução da operação."
          },
          "name": {
            "type": "string",
            "description": "Nome da operação."
          },
          "description": {
            "type": "string",
            "description": "Descrição da operação. Retorna uma cadeia vazia quando não existe na origem."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização proprietária da operação."
          },
          "status": {
            "type": "string",
            "enum": [
              "finished",
              "unknown",
              "error",
              "pending",
              "in-progress",
              "timeout",
              "cancelled",
              "scheduled"
            ],
            "description": "Estado atual da operação."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Marcação temporal de criação."
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Marcação temporal de início."
          },
          "ended_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Marcação temporal de finalização."
          },
          "microservice_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do microsserviço relacionado, quando existir."
          },
          "flow_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do fluxo relacionado, quando existir."
          },
          "remote_support": {
            "$ref": "#/components/schemas/GetOperationRemoteSupportV2"
          }
        },
        "required": [
          "id",
          "organization_id",
          "name",
          "description",
          "status",
          "created_at"
        ]
      },
      "GetOperationRemoteSupportV2": {
        "type": "object",
        "nullable": true,
        "properties": {
          "start_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data de início do suporte remoto."
          },
          "end_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data de término do suporte remoto."
          },
          "type": {
            "type": "string",
            "nullable": true,
            "description": "Tipo de sessão de suporte remoto."
          }
        }
      },
      "GetOrganizationEntityLimitsResponseV2": {
        "type": "object",
        "properties": {
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização a que se aplicam os limites."
          },
          "limits": {
            "$ref": "#/components/schemas/OrganizationEntityLimitsV2"
          }
        },
        "required": [
          "organization_id",
          "limits"
        ]
      },
      "OrganizationEntityLimitsV2": {
        "type": "object",
        "properties": {
          "tenants": {
            "type": "integer",
            "minimum": 1
          },
          "reporting_groups": {
            "type": "integer",
            "minimum": 1
          },
          "workspace_groups": {
            "type": "integer",
            "minimum": 1
          },
          "workspace_group_schedules_per_group": {
            "type": "integer",
            "minimum": 1
          },
          "flows": {
            "type": "integer",
            "minimum": 1
          },
          "microservices": {
            "type": "integer",
            "minimum": 1
          },
          "reports": {
            "type": "integer",
            "minimum": 1
          },
          "webapps": {
            "type": "integer",
            "minimum": 1
          },
          "webhooks": {
            "type": "integer",
            "minimum": 1
          },
          "licenses": {
            "type": "integer",
            "minimum": 1
          },
          "alert_settings": {
            "type": "integer",
            "minimum": 1
          },
          "roles": {
            "type": "integer",
            "minimum": 1
          },
          "users": {
            "type": "integer",
            "minimum": 1
          },
          "patching_policies": {
            "type": "integer",
            "minimum": 1
          },
          "patching_targets": {
            "type": "integer",
            "minimum": 1
          },
          "policies": {
            "type": "integer",
            "minimum": 1
          },
          "microservice_categories": {
            "type": "integer",
            "minimum": 1
          },
          "domains": {
            "type": "integer",
            "minimum": 1
          },
          "sso_integrations": {
            "type": "integer",
            "minimum": 1
          },
          "product_configs": {
            "type": "integer",
            "minimum": 1
          },
          "modules": {
            "type": "integer",
            "minimum": 1
          },
          "api_keys": {
            "type": "integer",
            "minimum": 1
          }
        },
        "required": [
          "tenants",
          "reporting_groups",
          "workspace_groups",
          "workspace_group_schedules_per_group",
          "flows",
          "microservices",
          "reports",
          "webapps",
          "webhooks",
          "licenses",
          "alert_settings",
          "roles",
          "users",
          "patching_policies",
          "patching_targets",
          "policies",
          "microservice_categories",
          "domains",
          "sso_integrations",
          "product_configs",
          "modules",
          "api_keys"
        ]
      },
      "PatchPolicyTargetV2ListResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há mais resultados disponíveis na próxima página"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PatchPolicyTargetV2"
            },
            "description": "Array de objetos de destino de política de patches"
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "PatchPolicyTargetV2": {
        "type": "object",
        "description": "Recurso de destino de política de patches",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "O identificador único do destino de política de patches",
            "example": "66ab6cf4d4d2e709bafd404c"
          },
          "name": {
            "type": "string",
            "description": "Nome do destino de política de patches",
            "example": "Base"
          },
          "created_by": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "ID do usuário que criou o objetivo de política de patches",
            "example": "6439606652fc0c0051f1787b"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Data e hora de criação do objetivo de política de patches (datetime ISO 8601)",
            "example": "2024-08-01T11:09:40.719Z"
          },
          "timezone": {
            "type": "string",
            "description": "Zona horária para o cronograma da política de patches. Identificador de zona horária IANA ou nome de zona horária do Windows.",
            "example": "UTC"
          },
          "should_restart": {
            "type": "boolean",
            "description": "Se os Workspaces devem ser reiniciados após o patching",
            "example": true
          },
          "wake_on_lan": {
            "type": "boolean",
            "description": "Se deve usar Wake on LAN para aplicar patches",
            "example": true
          },
          "force_patching_configuration": {
            "type": "boolean",
            "description": "Se a configuração de patching deve ser forçada",
            "example": false
          },
          "is_in_maintenance": {
            "type": "boolean",
            "description": "Se o destino de política de patches está atualmente em modo de manutenção",
            "example": false
          },
          "weeks": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 4
            },
            "description": "Array de números de semana (1-4) nos quais o patching deve ocorrer",
            "example": [
              1,
              2
            ]
          },
          "schedule": {
            "type": "object",
            "description": "Cronograma que define quando ocorre o patching. As chaves são nomes de dias (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY). Os valores são objetos vazios ou objetos com chaves de hora (como cordas) que contêm arrays de números de minuto.",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 59
                }
              }
            },
            "example": {
              "MONDAY": {},
              "TUESDAY": {},
              "WEDNESDAY": {},
              "THURSDAY": {
                "9": [
                  15,
                  30,
                  45
                ],
                "10": [
                  0,
                  15,
                  30,
                  45
                ],
                "11": [
                  0,
                  15,
                  30,
                  45
                ]
              },
              "FRIDAY": {},
              "SATURDAY": {},
              "SUNDAY": {}
            }
          },
          "patch_policy_target_type": {
            "type": "string",
            "enum": [
              "windows",
              "linux",
              null
            ],
            "nullable": true,
            "description": "Tipo de destino de política de patches ('windows', 'linux' ou null).",
            "example": "windows"
          },
          "patch_policy_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "nullable": true,
            "description": "O identificador único da política de patches associada. Null se não houver uma política de patches atribuída.",
            "example": "507f1f77bcf86cd799439011"
          }
        },
        "required": [
          "id"
        ]
      },
      "ProductConfigV2ListResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há mais páginas disponíveis"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductConfigV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "ProductConfigV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Identificador único da configuração de produto",
            "example": "507f1f77bcf86cd799439011"
          },
          "environment": {
            "type": "string",
            "description": "Tipo de ambiente para a configuração de produto (por exemplo, PRODUCTION, STAGING, DEVELOPMENT)",
            "example": "PRODUCTION"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Data e hora de criação da configuração de produto (data e hora ISO 8601)",
            "example": "2024-01-15T10:30:00.000Z"
          },
          "active": {
            "type": "boolean",
            "description": "Indica se a configuração de produto está ativa.",
            "example": true
          },
          "product_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Identificador único do produto associado a essa configuração",
            "example": "507f1f77bcf86cd799439001"
          },
          "region": {
            "type": "string",
            "nullable": true,
            "description": "Nome da região onde a configuração de produto é implantada. Nulo se não houver região atribuída.",
            "example": "us-east"
          }
        },
        "required": [
          "id"
        ]
      },
      "GetReportingGroupAgentVersionsCatalogResponseV2": {
        "type": "object",
        "properties": {
          "windows_cp": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "windows": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "macos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "linux": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "windows_cp",
          "windows",
          "macos",
          "linux"
        ]
      },
      "GetReportingGroupAgentVersionsResponseV2": {
        "type": "object",
        "properties": {
          "agent_auto_update": {
            "type": "boolean"
          },
          "versions": {
            "$ref": "#/components/schemas/ReportingGroupAgentVersionsV2"
          }
        },
        "required": [
          "agent_auto_update",
          "versions"
        ]
      },
      "ReportingGroupAgentVersionsV2": {
        "type": "object",
        "properties": {
          "windows_cp": {
            "$ref": "#/components/schemas/ReportingGroupAgentVersionChannelPairV2"
          },
          "windows": {
            "$ref": "#/components/schemas/ReportingGroupAgentVersionChannelPairV2"
          },
          "macos": {
            "$ref": "#/components/schemas/ReportingGroupAgentVersionChannelPairV2"
          },
          "linux": {
            "$ref": "#/components/schemas/ReportingGroupAgentVersionChannelPairV2"
          }
        },
        "required": [
          "windows_cp",
          "windows",
          "macos",
          "linux"
        ]
      },
      "ReportingGroupAgentVersionChannelPairV2": {
        "type": "object",
        "properties": {
          "early": {
            "type": "string"
          },
          "production": {
            "type": "string"
          }
        },
        "required": [
          "early",
          "production"
        ]
      },
      "ReportingGroupListItemV2ListResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportingGroupListItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "ReportingGroupListItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID do grupo de relatório"
          },
          "name": {
            "type": "string",
            "description": "Nome do grupo de relatório"
          },
          "organization_id": {
            "type": "string",
            "nullable": true,
            "description": "Identificador da organização"
          },
          "product_config_id": {
            "type": "string",
            "nullable": true,
            "description": "Identificador de configuração de produto"
          },
          "fishing_pattern": {
            "type": "string",
            "nullable": true,
            "description": "Nome do padrão de fishing"
          },
          "fishing_pattern_field": {
            "type": "string",
            "enum": [
              "full_name",
              "description",
              "ou",
              "current_subnet"
            ],
            "nullable": true,
            "description": "Campo ao qual se aplica fishing_pattern. Valores possíveis: full_name, description, ou, current_subnet."
          },
          "patch_policy_target_id": {
            "type": "string",
            "nullable": true,
            "description": "Identificador de destino da política de patches"
          },
          "policy_reporting_group": {
            "type": "string",
            "nullable": true,
            "description": "Identificador de grupo de relatório de política"
          },
          "overridden_agent_settings": {
            "$ref": "#/components/schemas/ReportingGroupAgentSettingsV2",
            "nullable": true,
            "description": "Configuração do agente sobrescrita a nível de grupo de relatório"
          },
          "effective_agent_settings": {
            "$ref": "#/components/schemas/ReportingGroupEffectiveAgentSettingsV2",
            "nullable": true,
            "description": "Configuração eficaz do agente"
          },
          "execute_flexx_analyzer_agent": {
            "type": "boolean",
            "description": "Se a execução do agente FlexxAnalyzer está habilitada"
          },
          "can_manage_agent_versions": {
            "type": "boolean",
            "description": "Indica se o grupo de relatório permite a autogestão de versões de agente conforme sua configuração de produto associada"
          },
          "flexx_agent_portal_download": {
            "type": "boolean",
            "description": "Se o download do FlexxAgent do portal está habilitado para a organização do grupo"
          },
          "intermediate_device_1_id": {
            "type": "string",
            "nullable": true,
            "description": "ID do Workspace do primeiro dispositivo intermediário"
          },
          "intermediate_device_2_id": {
            "type": "string",
            "nullable": true,
            "description": "ID do Workspace do segundo dispositivo intermediário"
          },
          "intermediate_device_3_id": {
            "type": "string",
            "nullable": true,
            "description": "ID do Workspace do terceiro dispositivo intermediário"
          }
        },
        "required": [
          "id"
        ]
      },
      "GetReportingGroupMonthlyReportResponseV2": {
        "type": "object",
        "description": "Relatório mensal de suporte de um grupo de relatório.",
        "properties": {
          "reporting_group_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do grupo de relatório."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização."
          },
          "period_year": {
            "type": "integer",
            "minimum": 1,
            "description": "Ano do relatório."
          },
          "period_month": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12,
            "description": "Mês do relatório."
          },
          "applied_patches": {
            "type": "integer",
            "description": "Número de patches aplicados."
          },
          "critical_patches": {
            "type": "integer",
            "description": "Número de patches críticos."
          },
          "security_patches": {
            "type": "integer",
            "description": "Número de patches de segurança."
          },
          "other_patches": {
            "type": "integer",
            "description": "Número de outros patches."
          },
          "total_used_apps": {
            "type": "integer",
            "description": "Quantidade total de aplicativos usados no período."
          },
          "top_apps": {
            "type": "array",
            "description": "Aplicativos mais usados no período.",
            "items": {
              "$ref": "#/components/schemas/ReportingGroupMonthlyTopAppV2"
            }
          },
          "automatic_remediations": {
            "$ref": "#/components/schemas/ReportingGroupMonthlyAutomaticRemediationsV2"
          },
          "current_reporting_group_name": {
            "type": "string",
            "description": "Nome atual do grupo de relatório."
          },
          "current_total_workspaces": {
            "type": "integer",
            "description": "Total atual de workspaces do grupo."
          },
          "current_total_workspace_users": {
            "type": "integer",
            "description": "Total atual de usuários em workspaces do grupo."
          },
          "current_workspace_antivirus_statistics": {
            "$ref": "#/components/schemas/ReportingGroupMonthlyCurrentWorkspaceAntivirusStatisticsV2"
          }
        },
        "required": [
          "reporting_group_id",
          "organization_id",
          "period_year",
          "period_month",
          "applied_patches",
          "critical_patches",
          "security_patches",
          "other_patches",
          "total_used_apps",
          "top_apps",
          "automatic_remediations",
          "current_reporting_group_name",
          "current_total_workspaces",
          "current_total_workspace_users",
          "current_workspace_antivirus_statistics"
        ]
      },
      "ReportingGroupMonthlyTopAppV2": {
        "type": "object",
        "description": "Aplicativo e número de dias de uso durante o período.",
        "properties": {
          "app_name": {
            "type": "string",
            "description": "Nome do aplicativo."
          },
          "usage_days": {
            "type": "integer",
            "description": "Dias de uso do aplicativo."
          }
        },
        "required": [
          "app_name",
          "usage_days"
        ]
      },
      "ReportingGroupMonthlyAutomaticRemediationsV2": {
        "type": "object",
        "description": "Contagem de remediações automáticas.",
        "properties": {
          "microservices": {
            "type": "integer",
            "description": "Quantidade de remediações por microsserviços."
          },
          "flows": {
            "type": "integer",
            "description": "Quantidade de remediações por fluxos."
          }
        },
        "required": [
          "microservices",
          "flows"
        ]
      },
      "ReportingGroupMonthlyCurrentWorkspaceAntivirusStatisticsV2": {
        "type": "object",
        "description": "Estado atual do antivírus em workspaces do grupo.",
        "properties": {
          "workspaces_without_antivirus": {
            "type": "integer",
            "description": "Quantidade de workspaces sem antivírus."
          },
          "workspaces_with_antivirus": {
            "$ref": "#/components/schemas/ReportingGroupMonthlyWorkspacesWithAntivirusV2"
          }
        },
        "required": [
          "workspaces_without_antivirus",
          "workspaces_with_antivirus"
        ]
      },
      "ReportingGroupMonthlyWorkspacesWithAntivirusV2": {
        "type": "object",
        "description": "Resumo de workspaces com antivírus.",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total de workspaces com antivírus."
          },
          "by_status": {
            "$ref": "#/components/schemas/ReportingGroupMonthlyWorkspacesWithAntivirusByStatusV2"
          }
        },
        "required": [
          "total",
          "by_status"
        ]
      },
      "ReportingGroupMonthlyWorkspacesWithAntivirusByStatusV2": {
        "type": "object",
        "description": "Distribuição por estado do antivírus.",
        "properties": {
          "unknown": {
            "type": "integer",
            "description": "Workspaces com estado desconhecido."
          },
          "not_installed": {
            "type": "integer",
            "description": "Workspaces com antivírus não instalado."
          },
          "installed_stopped": {
            "type": "integer",
            "description": "Workspaces com antivírus instalado e parado."
          },
          "installed_working": {
            "type": "integer",
            "description": "Workspaces com antivírus instalado e operacional."
          }
        },
        "required": [
          "unknown",
          "not_installed",
          "installed_stopped",
          "installed_working"
        ]
      },
      "GetRolesResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoleV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetSessionByIdResponseV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$",
            "minLength": 36,
            "maxLength": 36,
            "description": "Identificador da sessão."
          },
          "user_name": {
            "type": "string",
            "description": "Conta de usuário para a sessão."
          },
          "session_type": {
            "type": "string",
            "enum": [
              "vdi_desktop",
              "application",
              "sdi_desktop",
              "device"
            ],
            "description": "Tipo de sessão."
          },
          "windows_session_id": {
            "type": "integer",
            "description": "Identificador de sessão do Windows."
          },
          "connection_state": {
            "type": "string",
            "enum": [
              "unknown",
              "connected",
              "disconnected",
              "terminated",
              "preparing_session",
              "active",
              "reconnecting",
              "non_broker_session",
              "other",
              "pending"
            ],
            "description": "Estado de conexão da sessão."
          },
          "start_date": {
            "type": "string",
            "description": "Marca de tempo de início da sessão."
          },
          "session_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "empty",
              "active_notifications",
              "active_notifications_ack_accepted",
              "active_notifications_ack_pending"
            ],
            "description": "Estado da sessão."
          },
          "platform_type": {
            "type": "string",
            "enum": [
              "windows",
              "mac",
              "linux",
              "android",
              "chrome_os",
              "unknown"
            ],
            "description": "Tipo de plataforma."
          },
          "connected": {
            "type": "boolean",
            "description": "Indica se a sessão está conectada atualmente."
          },
          "current_session_id": {
            "type": "integer",
            "description": "Identificador atual da sessão de conexão."
          },
          "current_dc_name": {
            "type": "string",
            "description": "Nome atual do data center."
          },
          "last_connection_time": {
            "type": "string",
            "description": "String de marca de tempo da última conexão."
          },
          "log_on_duration": {
            "type": "number",
            "description": "Duração do início da sessão."
          },
          "session_key": {
            "type": "string",
            "format": "uuid",
            "pattern": "^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$",
            "minLength": 36,
            "maxLength": 36,
            "description": "Chave de sessão."
          },
          "flexx_analyzer_executed": {
            "type": "boolean",
            "description": "Indica se a execução do analisador foi concluída."
          },
          "cpu_usage": {
            "type": "number",
            "nullable": true,
            "description": "Uso atual de CPU."
          },
          "ram_usage_gb": {
            "type": "number",
            "nullable": true,
            "description": "Uso atual de RAM em gigabytes."
          },
          "rtt_usage": {
            "type": "number",
            "nullable": true,
            "description": "Uso atual de RTT."
          },
          "current_uid_usage": {
            "type": "number",
            "nullable": true,
            "description": "Uso atual de UID."
          },
          "ram_usage": {
            "type": "number",
            "nullable": true,
            "description": "Uso atual de RAM."
          },
          "ram_percentage": {
            "type": "number",
            "nullable": true,
            "description": "Porcentagem atual de uso de RAM."
          },
          "number_alerts_user": {
            "type": "number",
            "nullable": true,
            "description": "Número de alertas de usuário."
          },
          "number_alerts_vm": {
            "type": "number",
            "nullable": true,
            "description": "Número de alertas de Workspace."
          },
          "workspace_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador MongoDB (_id) do Workspace relacionado com a sessão, resolvido a partir da relação de sessão."
          }
        },
        "required": [
          "id",
          "user_name",
          "session_type",
          "windows_session_id",
          "connection_state",
          "start_date",
          "current_session_id",
          "current_dc_name",
          "last_connection_time",
          "log_on_duration",
          "session_key",
          "connected",
          "flexx_analyzer_executed"
        ]
      },
      "GetSessionsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Se outra página está disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSessionItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetSessionItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$",
            "minLength": 36,
            "maxLength": 36,
            "description": "Identificador da sessão."
          },
          "user_name": {
            "type": "string",
            "description": "Conta de usuário da sessão."
          },
          "session_type": {
            "type": "string",
            "enum": [
              "vdi_desktop",
              "application",
              "sdi_desktop",
              "device"
            ],
            "description": "Tipo de sessão."
          },
          "windows_session_id": {
            "type": "integer",
            "description": "Identificador de sessão do Windows."
          },
          "connection_state": {
            "type": "string",
            "enum": [
              "unknown",
              "connected",
              "disconnected",
              "terminated",
              "preparing_session",
              "active",
              "reconnecting",
              "non_broker_session",
              "other",
              "pending"
            ],
            "description": "Estado de conexão da sessão."
          },
          "start_date": {
            "type": "string",
            "description": "Marca de tempo de início da sessão."
          },
          "cpu_usage": {
            "type": "number",
            "nullable": true,
            "description": "Uso atual de CPU."
          },
          "ram_usage_gb": {
            "type": "number",
            "nullable": true,
            "description": "Uso atual de RAM em gigabytes."
          },
          "rtt_usage": {
            "type": "number",
            "nullable": true,
            "description": "Uso atual de RTT."
          },
          "session_status": {
            "type": "string",
            "description": "Estado da sessão."
          },
          "platform_type": {
            "type": "string",
            "enum": [
              "windows",
              "mac",
              "linux",
              "android",
              "chrome_os",
              "unknown"
            ],
            "description": "Tipo de plataforma."
          },
          "connected": {
            "type": "boolean",
            "description": "Indicador de conexão atual."
          },
          "current_session_id": {
            "type": "integer",
            "description": "Identificador de sessão de conexão atual."
          },
          "current_dc_name": {
            "type": "string",
            "description": "Nome atual do data center."
          },
          "current_uid_usage": {
            "type": "number",
            "nullable": true,
            "description": "Uso atual de UID."
          },
          "flexx_analyzer_executed": {
            "type": "boolean",
            "description": "Se a execução do analisador foi finalizada."
          },
          "last_connection_time": {
            "type": "string",
            "description": "String de marca de tempo da última conexão."
          },
          "log_on_duration": {
            "type": "number",
            "description": "Duração do início da sessão."
          },
          "number_alerts_user": {
            "type": "number",
            "nullable": true,
            "description": "Número de alertas de usuário."
          },
          "number_alerts_vm": {
            "type": "number",
            "nullable": true,
            "description": "Número de alertas de Workspace."
          },
          "ram_usage": {
            "type": "number",
            "nullable": true,
            "description": "Uso atual de RAM."
          },
          "ram_percentage": {
            "type": "number",
            "nullable": true,
            "description": "Porcentagem atual de uso de RAM."
          },
          "session_key": {
            "type": "string",
            "format": "uuid",
            "pattern": "^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$",
            "minLength": 36,
            "maxLength": 36,
            "description": "Chave de sessão."
          },
          "workspace_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador MongoDB (_id) do Workspace associado com a sessão, resolvido a partir da relação de sessão."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador da organização associado com a sessão."
          }
        },
        "required": [
          "id",
          "user_name",
          "session_type",
          "windows_session_id",
          "connection_state",
          "start_date",
          "cpu_usage",
          "ram_usage_gb",
          "rtt_usage",
          "session_status",
          "platform_type",
          "connected",
          "current_session_id",
          "current_dc_name",
          "current_uid_usage",
          "flexx_analyzer_executed",
          "last_connection_time",
          "log_on_duration",
          "number_alerts_user",
          "number_alerts_vm",
          "ram_usage",
          "ram_percentage",
          "session_key",
          "workspace_id",
          "organization_id"
        ]
      },
      "TenantListItemV2ListResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há mais páginas disponíveis"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TenantListItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "TenantListItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID do tenant"
          },
          "organization_id": {
            "type": "string",
            "description": "ID da organização do tenant"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Data de criação (data e hora ISO 8601)"
          },
          "name": {
            "type": "string",
            "description": "Nome do tenant"
          },
          "region": {
            "type": "string",
            "description": "Região/ID de região"
          },
          "product_id": {
            "type": "string",
            "nullable": true,
            "description": "Identificador do produto (nullable se o tenant não tiver produto atribuído)"
          },
          "policy_id": {
            "type": "string",
            "nullable": true,
            "description": "Identificador da política (nullable se o tenant não tem política atribuída)"
          }
        },
        "required": [
          "id"
        ]
      },
      "GetUsersResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserByIdV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "WorkspacePublicV2": {
        "type": "object",
        "description": "Recurso Workspace.",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$"
          },
          "organization_id": {
            "type": "string",
            "nullable": true,
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "related_environment": {
            "type": "string",
            "nullable": true
          },
          "operating_system": {
            "type": "string",
            "nullable": true
          },
          "serial_number": {
            "type": "string",
            "nullable": true
          },
          "ip_address": {
            "type": "string",
            "nullable": true
          },
          "os_update_num_pending": {
            "type": "number",
            "nullable": true
          },
          "reporting_group_id": {
            "type": "string",
            "nullable": true
          },
          "flxmid": {
            "type": "string",
            "nullable": true
          },
          "os_update_num_days_since_last": {
            "type": "number",
            "nullable": true
          },
          "total_ram": {
            "type": "number",
            "nullable": true
          },
          "altitude": {
            "type": "number",
            "nullable": true
          },
          "antivirus": {
            "type": "string",
            "nullable": true
          },
          "antivirus_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "unknown",
              "not_installed",
              "installed_stopped",
              "installed_working"
            ],
            "description": "Estado do antivírus."
          },
          "bios_manufacturer": {
            "type": "string",
            "nullable": true
          },
          "bios_mode": {
            "type": "string",
            "nullable": true
          },
          "bios_version": {
            "type": "string",
            "nullable": true
          },
          "bios_smbversion": {
            "type": "string",
            "nullable": true
          },
          "bios_serialnumber": {
            "type": "string",
            "nullable": true
          },
          "base_board_manufacturer": {
            "type": "string",
            "nullable": true
          },
          "base_board_product": {
            "type": "string",
            "nullable": true
          },
          "base_board_version": {
            "type": "string",
            "nullable": true
          },
          "broker": {
            "type": "string",
            "nullable": true,
            "enum": [
              "no_broker_detected",
              "azure_virtual_desktop",
              "citrix_on-premises",
              "citrix_daas",
              "amazon_workspaces",
              "vmware_horizon",
              "parallels_ras",
              "windows_365",
              "rdsh",
              "uds",
              "unknown"
            ],
            "description": "Tipo de broker."
          },
          "public_ip_city": {
            "type": "string",
            "nullable": true
          },
          "flexxagent_version": {
            "type": "string",
            "nullable": true
          },
          "compliance_result": {
            "type": "string",
            "nullable": true,
            "enum": [
              "not_evaluated",
              "compliant",
              "not_compliant"
            ],
            "description": "Resultado de conformidade."
          },
          "compliance_last_execution": {
            "type": "string",
            "nullable": true
          },
          "domain_name": {
            "type": "string",
            "nullable": true
          },
          "public_ip_country": {
            "type": "string",
            "nullable": true
          },
          "cores_count": {
            "type": "string",
            "nullable": true
          },
          "edr_active_detections": {
            "type": "boolean",
            "nullable": true
          },
          "edr_host_id": {
            "type": "string",
            "nullable": true
          },
          "edr_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "unknown",
              "not_installed",
              "installed_stopped",
              "installed_working"
            ],
            "description": "Estado do agente EDR."
          },
          "edr_version": {
            "type": "string",
            "nullable": true
          },
          "current_subnet": {
            "type": "string",
            "nullable": true
          },
          "default_gateway": {
            "type": "string",
            "nullable": true
          },
          "device_kind": {
            "type": "string",
            "nullable": true,
            "enum": [
              "virtual",
              "physical"
            ],
            "description": "Tipo de dispositivo (Virtual/Físico)."
          },
          "edr": {
            "type": "string",
            "nullable": true
          },
          "ema_agent_version": {
            "type": "string",
            "nullable": true
          },
          "ema_endpoint_id": {
            "type": "string",
            "nullable": true
          },
          "embedded_controller_version": {
            "type": "string",
            "nullable": true
          },
          "os_fast_startup": {
            "type": "boolean",
            "nullable": true
          },
          "flexxanalyzer_config": {
            "type": "string",
            "nullable": true,
            "enum": [
              "not_configured",
              "disabled_in_workspace",
              "configured",
              "installed",
              "not_compatible"
            ],
            "description": "Configuração de FlexxAnalyzer."
          },
          "flexxanalyzer_version": {
            "type": "string",
            "nullable": true
          },
          "hypervisor": {
            "type": "string",
            "nullable": true,
            "enum": [
              "unknown",
              "physical",
              "microsoft_azure",
              "microsoft_hyper-v",
              "vmware_vsphere",
              "amazon_web_services",
              "nutanix",
              "citrix_hypervisor",
              "oracle_cloud",
              "google_cloud"
            ],
            "description": "Tipo de hipervisor."
          },
          "ip_version": {
            "type": "string",
            "nullable": true
          },
          "public_ip_isp": {
            "type": "string",
            "nullable": true
          },
          "iot_hub_config_sync_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "unknown",
              "does_not_apply",
              "synced",
              "unsynced"
            ],
            "description": "Estado de sincronização de configuração do IoT Hub."
          },
          "is_amt_supported": {
            "type": "boolean",
            "nullable": true
          },
          "is_laptop": {
            "type": "boolean",
            "nullable": true
          },
          "is_physical": {
            "type": "boolean",
            "nullable": true
          },
          "last_boot_duration": {
            "type": "number",
            "nullable": true
          },
          "last_restart_time": {
            "type": "string",
            "nullable": true
          },
          "last_time": {
            "type": "string",
            "nullable": true
          },
          "last_windows_update": {
            "type": "string",
            "nullable": true
          },
          "last_autorepair": {
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "nullable": true
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "nullable": true
          },
          "mac_address": {
            "type": "string",
            "nullable": true
          },
          "network_interface_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "unknown",
              "ethernet",
              "wifi",
              "mobile_network",
              "other"
            ],
            "description": "Tipo de interface de rede."
          },
          "os_build_number": {
            "type": "string",
            "nullable": true
          },
          "os_manufacturer": {
            "type": "string",
            "nullable": true
          },
          "os_version": {
            "type": "string",
            "nullable": true
          },
          "ou": {
            "type": "string",
            "nullable": true
          },
          "os_page_file": {
            "type": "string",
            "nullable": true
          },
          "os_page_file_space": {
            "type": "number",
            "nullable": true
          },
          "platform_role": {
            "type": "string",
            "nullable": true
          },
          "platform_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "windows",
              "mac",
              "android",
              "linux",
              "chromebook",
              "ios",
              "unknown"
            ],
            "description": "Tipo de plataforma."
          },
          "processor": {
            "type": "string",
            "nullable": true
          },
          "public_ip": {
            "type": "string",
            "nullable": true
          },
          "os_reboot_pending": {
            "type": "boolean",
            "nullable": true
          },
          "secure_boot_state": {
            "type": "string",
            "nullable": true
          },
          "system_model": {
            "type": "string",
            "nullable": true
          },
          "system_type": {
            "type": "string",
            "nullable": true
          },
          "os_time_zone": {
            "type": "string",
            "nullable": true
          },
          "user_name": {
            "type": "string",
            "nullable": true
          },
          "vm_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "hidden",
              "workspace_or_avd_session_host",
              "desktop_template_definition",
              "vcc_role",
              "template_definition_surrogate",
              "workspace",
              "server",
              "vdi_appliance",
              "application_template_definition",
              "application_server",
              "endpoint"
            ],
            "description": "Tipo de VM."
          },
          "windows_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "unknown",
              "workstation",
              "domain_controller",
              "server"
            ],
            "description": "Tipo de Windows."
          },
          "created_at": {
            "type": "string",
            "nullable": true
          },
          "last_deregistration_time": {
            "type": "string",
            "nullable": true
          },
          "delete_scheduled_at": {
            "type": "string",
            "nullable": true
          },
          "encrypted_harddisks": {
            "type": "string",
            "nullable": true,
            "enum": [
              "no",
              "yes",
              "partial",
              "na"
            ],
            "description": "Estado de criptografia do disco rígido."
          },
          "custom_field_01": {
            "type": "string",
            "nullable": true
          },
          "custom_field_02": {
            "type": "string",
            "nullable": true
          },
          "custom_field_03": {
            "type": "string",
            "nullable": true
          },
          "custom_field_04": {
            "type": "string",
            "nullable": true
          },
          "custom_field_05": {
            "type": "string",
            "nullable": true
          },
          "custom_field_06": {
            "type": "string",
            "nullable": true
          },
          "custom_field_07": {
            "type": "string",
            "nullable": true
          },
          "custom_field_08": {
            "type": "string",
            "nullable": true
          },
          "custom_field_09": {
            "type": "string",
            "nullable": true
          },
          "custom_field_10": {
            "type": "string",
            "nullable": true
          },
          "flexxagent_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "unified",
              "mac",
              "linux",
              "universal"
            ],
            "description": "Tipo de FlexxAgent."
          },
          "antivirus_version_number": {
            "type": "string",
            "nullable": true
          },
          "related_location": {
            "type": "string",
            "nullable": true
          },
          "area": {
            "type": "string",
            "nullable": true
          },
          "custom_field_11": {
            "type": "string",
            "nullable": true
          },
          "custom_field_12": {
            "type": "string",
            "nullable": true
          },
          "custom_field_13": {
            "type": "string",
            "nullable": true
          },
          "custom_field_14": {
            "type": "string",
            "nullable": true
          },
          "custom_field_15": {
            "type": "string",
            "nullable": true
          },
          "custom_field_16": {
            "type": "string",
            "nullable": true
          },
          "custom_field_17": {
            "type": "string",
            "nullable": true
          },
          "custom_field_18": {
            "type": "string",
            "nullable": true
          },
          "custom_field_19": {
            "type": "string",
            "nullable": true
          },
          "custom_field_20": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "office": {
            "type": "string",
            "nullable": true
          },
          "last_custom_fields_update": {
            "type": "string",
            "nullable": true
          },
          "workspace_id": {
            "type": "string",
            "nullable": true,
            "minLength": 25,
            "pattern": "^[0-9a-f]{25,}$"
          },
          "flexxanalyzer_proxy_uri": {
            "type": "string",
            "nullable": true
          },
          "iot_hub_name": {
            "type": "string",
            "nullable": true
          },
          "flexxagent_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "unknown",
              "working",
              "stopped",
              "not_reporting",
              "service_stopped",
              "service_disabled",
              "communication_error",
              "other_error",
              "not_installed",
              "update_requested",
              "updating",
              "update_error"
            ],
            "description": "Estado do FlexxAgent / cliente VDI."
          },
          "boot_hard_disk_used_percentage": {
            "type": "number",
            "nullable": true
          },
          "last_connection_time": {
            "type": "string",
            "nullable": true
          },
          "network_signal": {
            "type": "number",
            "nullable": true
          },
          "num_alerts": {
            "type": "number",
            "nullable": true
          },
          "percent_cpu": {
            "type": "number",
            "nullable": true,
            "description": "Uso de CPU do Workspace em porcentagem."
          },
          "percent_ram": {
            "type": "number",
            "nullable": true
          },
          "power_state": {
            "type": "string",
            "nullable": true,
            "enum": [
              "unmanaged",
              "unknown",
              "dev_express",
              "off",
              "on",
              "suspended",
              "turning_on",
              "turning_off",
              "suspending",
              "resuming",
              "non_reporting"
            ],
            "description": "Estado de energia."
          },
          "sessions_count": {
            "type": "number",
            "nullable": true
          },
          "used_system_disk_c": {
            "type": "number",
            "nullable": true
          },
          "wake_on_lan_mac": {
            "type": "string",
            "nullable": true
          },
          "wake_on_lan_subnet": {
            "type": "string",
            "nullable": true
          },
          "broker_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "warning",
              "other",
              "preparing_session",
              "connected",
              "active",
              "disconnected",
              "reconnecting",
              "non_brokered_session",
              "error",
              "unmanaged",
              "unknown",
              "unavailable",
              "off",
              "on",
              "suspended",
              "turning_on",
              "turning_off",
              "suspending",
              "resuming",
              "not_reporting",
              "unregistered",
              "available",
              "inuse",
              "maintenance_or_drain_mode"
            ],
            "description": "Estado do broker."
          },
          "status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "online",
              "offline"
            ],
            "description": "Estado de conectividade do workspace."
          }
        },
        "required": [
          "id"
        ]
      },
      "WorkspaceGroupScheduleV2ListResponseV2": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkspaceGroupScheduleV2"
            },
            "description": "Array de programações cron para o grupo de workspaces"
          }
        },
        "required": [
          "data"
        ]
      },
      "WorkspaceGroupWorkspaceItemV2": {
        "type": "object",
        "description": "Elemento Workspace na lista de Workspaces do grupo de workspaces (projeção reduzida).",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$"
          },
          "organization_id": {
            "type": "string",
            "nullable": true,
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "related_environment": {
            "type": "string",
            "nullable": true
          },
          "operating_system": {
            "type": "string",
            "nullable": true
          },
          "ip_address": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "last_user": {
            "type": "string",
            "nullable": true
          },
          "total_ram": {
            "type": "number",
            "nullable": true
          }
        },
        "required": [
          "id"
        ]
      },
      "WorkspaceGroupWorkspaceListResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkspaceGroupWorkspaceItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "WorkspaceGroupListItemV2ListResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkspaceGroupListItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "WorkspaceGroupListItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "description": "ID do grupo de workspaces"
          },
          "name": {
            "type": "string",
            "description": "Nome do grupo de workspaces"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Descrição do grupo de workspaces"
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "description": "Identificador da organização"
          },
          "created_by": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "description": "ID do usuário que criou o grupo de workspaces"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Marca temporal de criação"
          },
          "type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "static",
              "dynamic",
              "entra_id"
            ],
            "description": "Tipo de grupos de workspaces"
          },
          "filter": {
            "type": "string",
            "nullable": true,
            "description": "Cadeia de filtro para grupos de workspaces dinâmicos"
          },
          "location": {
            "$ref": "#/components/schemas/WorkspaceLocationV2",
            "nullable": true,
            "description": "Informação de localização do grupo de workspaces"
          },
          "entra_id_source": {
            "$ref": "#/components/schemas/WorkspaceGroupEntraIdSourceV2",
            "nullable": true,
            "description": "Informação de origem do Entra ID para o grupo de workspaces"
          }
        },
        "required": [
          "id"
        ]
      },
      "WorkspaceListResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkspacePublicV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "ReplaceDigitalActivityCoreProcessGroupCoreProcessesRequestV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "core_processes": {
            "type": "array",
            "description": "Coleção completa de processos principais que substitui o estado atual do grupo.",
            "items": {
              "$ref": "#/components/schemas/ReplaceDigitalActivityCoreProcessItemV2"
            }
          }
        },
        "required": [
          "core_processes"
        ],
        "description": "Corpo de substituição completa dos processos principais do grupo."
      },
      "ReplaceDigitalActivityCoreProcessItemV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "Nome funcional do processo principal."
          },
          "process_name": {
            "type": "string",
            "description": "Nome do processo do sistema operacional."
          }
        },
        "required": [
          "name",
          "process_name"
        ]
      },
      "GetCoreProcessGroupCoreProcessesResponseV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReplaceDigitalActivityCoreProcessItemV2"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "UpdateDigitalActivityCoreProcessGroupRequestV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "Nome do grupo de processos principais."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Descrição do grupo de processos principais."
          },
          "workspace_group_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do grupo de workspaces associado."
          }
        },
        "required": [
          "name",
          "description",
          "workspace_group_id"
        ],
        "description": "Corpo de atualização completa do grupo de processos principais."
      },
      "UpdateFlowV2Request": {
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/MultilangField",
            "description": "Nome do fluxo. É necessário pelo menos uma chave de idioma; cada valor entre 1 e 512 caracteres."
          },
          "description": {
            "$ref": "#/components/schemas/MultilangField",
            "description": "Descrição do fluxo. Pelo menos uma chave de idioma é necessário; cada valor entre 1 e 512 caracteres."
          },
          "detection_only": {
            "type": "boolean"
          },
          "cooldown_minutes": {
            "type": "number",
            "minimum": 10,
            "maximum": 1440,
            "description": "Tempo de espera em minutos. Deve estar entre 10 e 1440."
          },
          "enabled": {
            "type": "boolean",
            "description": "Indica se o fluxo está habilitado. PUT espera uma definição completa; este campo é obrigatório."
          },
          "init_text": {
            "$ref": "#/components/schemas/MultilangField",
            "nullable": true,
            "description": "Mensagem de texto inicial. Obrigatório em PUT. Enviar null para limpar; caso contrário, objeto com pelo menos uma chave de idioma; cada valor entre 1 e 512 caracteres."
          },
          "ok_text": {
            "$ref": "#/components/schemas/MultilangField",
            "nullable": true,
            "description": "Mensagem de texto de sucesso. Obrigatório no PUT. Envia null para limpar; caso contrário, objeto com pelo menos uma chave de idioma; cada valor entre 1 e 512 caracteres."
          },
          "ko_text": {
            "$ref": "#/components/schemas/MultilangField",
            "nullable": true,
            "description": "Mensagem de texto de erro. Obrigatório em PUT. Enviar null para limpar; caso contrário, objeto com pelo menos uma chave de idioma; cada valor entre 1 e 512 caracteres."
          },
          "target": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "all_workspaces",
                  "workspaces",
                  "workspace_groups",
                  "reporting_groups"
                ]
              },
              "ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 512
                }
              }
            },
            "required": [
              "type"
            ]
          },
          "microservice_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlowConditionInputV2"
            }
          }
        },
        "required": [
          "name",
          "description",
          "detection_only",
          "cooldown_minutes",
          "enabled",
          "init_text",
          "ok_text",
          "ko_text",
          "target",
          "microservice_id",
          "conditions"
        ]
      },
      "UpdateReportingGroupAgentVersionsRequestV2": {
        "type": "object",
        "properties": {
          "agent_auto_update": {
            "type": "boolean"
          },
          "versions": {
            "$ref": "#/components/schemas/ReportingGroupAgentVersionsV2"
          }
        },
        "required": [
          "agent_auto_update",
          "versions"
        ]
      },
      "UpdateReportingGroupRequestV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 512,
            "description": "O nome do grupo de relatório. Deve ser único dentro da organização.",
            "example": "Grupo de reporte de producción actualizado"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "description": "Opcional. Uma descrição do propósito e uso do grupo de relatório.",
            "example": "Grupo de reporte actualizado para entornos de producción"
          },
          "patch_policy_target_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Opcional. O identificador único do destino da política de patches que será associado a este grupo de relatório. Defina como nulo ou omita para remover a associação.",
            "example": "507f1f77bcf86cd799439040"
          },
          "fishing_pattern": {
            "type": "string",
            "maxLength": 250,
            "description": "Opcional. Um padrão de expressão regular usado para correspondência de dispositivos. Deve ser um padrão regex válido. Se fornecido, também deve ser especificado fishing_pattern_field. Omitir para excluir o padrão.",
            "example": "Estaciones de trabajo Windows"
          },
          "fishing_pattern_field": {
            "type": "string",
            "enum": [
              "full_name",
              "description",
              "ou",
              "current_subnet"
            ],
            "description": "Opcional. Campo ao qual se aplica fishing_pattern. Obrigatório se fishing_pattern for fornecido. Valores válidos: full_name (nome completo do dispositivo), description (descrição do dispositivo), ou (unidade organizacional), current_subnet (sub-rede atual).",
            "example": "full_name"
          },
          "intermediate_device_1_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Opcional. O identificador único do Workspace do primeiro dispositivo intermediário. Dispositivos intermediários são usadas para ações Wake-on-LAN em redes seguras, permitindo o ligamento remoto dos dispositivos alvo através de gateways intermediários. Dispositivos intermediários devem ser definidos sequencialmente e sem lacunas. Se omitido, todos os dispositivos intermediários serão limpos. Se intermediate_device_2_id ou intermediate_device_3_id forem fornecidos, este campo é obrigatório.",
            "example": "507f1f77bcf86cd799439050"
          },
          "intermediate_device_2_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Opcional. O identificador único do Workspace do segundo dispositivo intermediário. É usado para ações Wake-on-LAN em redes seguras. Requer que intermediate_device_1_id seja fornecido. Se omitido enquanto intermediate_device_1_id está fornecido, este e intermediate_device_3_id serão limpos. Se intermediate_device_3_id for fornecido, este campo é obrigatório.",
            "example": "507f1f77bcf86cd799439051"
          },
          "intermediate_device_3_id": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Opcional. O identificador único do Workspace do terceiro dispositivo intermediário. É usado para ações Wake on LAN em redes seguras. Requer que intermediate_device_1_id e intermediate_device_2_id sejam fornecidos. Se omitido enquanto intermediate_device_1_id e intermediate_device_2_id estão fornecidos, este campo será limpo.",
            "example": "507f1f77bcf86cd799439052"
          }
        },
        "required": [
          "name"
        ],
        "description": "Corpo da solicitação para atualizar um grupo de relatório existente. Este endpoint implementa semântica de substituição completa: todos os campos atualizáveis devem ser incluídos. Omissão de campos opcionais irá limpá-los (comportamento idempotente). Dispositivos intermediários são usados para ações Wake on LAN em redes seguras, permitindo o ligamento remoto de dispositivos através de gateways intermediários. Dispositivos intermediários devem ser definidos sequencialmente: você não pode definir intermediate_device_2_id sem intermediate_device_1_id, nem definir intermediate_device_3_id sem intermediate_device_2_id. Todos os IDs de Workspace de dispositivos intermediários devem existir e pertencer à organização."
      },
      "UpdateRoleRequestV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Nome do papel do usuário."
          },
          "permissions": {
            "type": "array",
            "minItems": 1,
            "description": "Entradas completas de permissões que definem o estado final do papel.",
            "items": {
              "$ref": "#/components/schemas/UpdateRolePermissionItemV2"
            }
          }
        },
        "required": [
          "name",
          "permissions"
        ]
      },
      "UpdateRolePermissionItemV2": {
        "type": "object",
        "properties": {
          "target_organization": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "all"
                ]
              },
              {
                "type": "string",
                "pattern": "^[0-9a-f]{24}$",
                "minLength": 24,
                "maxLength": 24
              }
            ],
            "description": "Âmbito de organização da permissão. Use all para todas as organizações ou um organization_id específico."
          },
          "portal_permission": {
            "type": "string",
            "enum": [
              "admin",
              "organization_admin",
              "organization_admin_read_only",
              "user",
              "platform",
              "l1_support_team",
              "l1_support_team_read_only",
              "l2_support_team",
              "l2_support_team_read_only",
              "l3_engineering_team",
              "l3_engineering_team_read_only",
              "billing"
            ],
            "description": "Nível de permissão do Portal."
          },
          "workspaces_permission": {
            "type": "string",
            "enum": [
              "no_access",
              "l1_support_team_read_only",
              "l1_support_team",
              "l2_support_team_read_only",
              "l2_support_team",
              "l3_engineering_team_read_only",
              "l3_engineering_team",
              "admin_read_only",
              "admin"
            ],
            "description": "Nível de permissão do Workspaces."
          },
          "analyzer_permission": {
            "type": "string",
            "enum": [
              "no_access",
              "access",
              "admin"
            ],
            "description": "Nível de permissão do Analyzer."
          },
          "target_reporting_groups": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "all"
                ]
              },
              {
                "type": "array",
                "minItems": 1,
                "items": {
                  "type": "string",
                  "pattern": "^[0-9a-f]{24}$",
                  "minLength": 24,
                  "maxLength": 24
                }
              }
            ],
            "description": "Âmbito dos grupos de relatório da permissão. Use all para todos os grupos ou uma lista de reporting_group_id."
          }
        },
        "required": [
          "target_organization",
          "portal_permission",
          "workspaces_permission",
          "analyzer_permission",
          "target_reporting_groups"
        ]
      },
      "UpdateTenantRequestV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 512
          }
        },
        "required": [
          "name"
        ]
      },
      "UpdateUserRequestV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Nome do usuário."
          },
          "surname": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Sobrenome do usuário."
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Endereço de e-mail do usuário."
          },
          "department": {
            "type": "string",
            "nullable": true,
            "description": "Departamento do usuário."
          },
          "role_id": {
            "type": "string",
            "nullable": true,
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do papel atribuído ao usuário."
          }
        },
        "required": [
          "name",
          "surname",
          "email",
          "department",
          "role_id"
        ]
      },
      "UpdateWorkspaceGroupScheduleRequestV2": {
        "type": "object",
        "properties": {
          "cron_expression": {
            "type": "string",
            "description": "Expressão cron que define quando a programação deve ser executada. Formato: minuto hora dia-do-mês mês dia-da-semana. Exemplos: '0 8 * * 1-5' (8 AM dias úteis), '0 0 * * 0' (meia-noite de domingo), '30 14 * * *' (2:30 PM diariamente). Dia-da-semana: 0=domingo, 1=segunda-feira, ..., 6=sábado. Suporta intervalos (1-5), listas (1,3,5) e curingas (*). Deve ser um formato de expressão cron válido com 5 campos separados por espaços.",
            "example": "0 8 * * 1-5"
          },
          "time_zone": {
            "type": "string",
            "description": "Zona horária para a execução do cronograma. Suporta identificadores IANA (por exemplo, 'America/New_York') e Windows (por exemplo, 'Pacific Standard Time').",
            "example": "Eastern Standard Time"
          },
          "type": {
            "type": "string",
            "enum": [
              "start",
              "stop",
              "restart"
            ],
            "description": "Tipo de operação de energia a ser realizada. START: Liga os Workspaces do grupo. STOP: Desliga os Workspaces do grupo. RESTART: Reinicia os Workspaces do grupo.",
            "example": "start"
          },
          "intermediate_device": {
            "type": "string",
            "maxLength": 24,
            "pattern": "^[0-9a-f]{24}$",
            "description": "Opcional. O identificador único do Workspace de dispositivo intermediário. Se fornecido, indica que deve ser usado um dispositivo intermediário para operações Wake-on-LAN. Aplica-se apenas a programações START. É usado para ações Wake-on-LAN em redes seguras. O Workspace deve existir e pertencer à organização. Para remover um dispositivo intermediário, omita este campo.",
            "example": "507f1f77bcf86cd799439050"
          }
        },
        "required": [
          "cron_expression",
          "time_zone",
          "type"
        ]
      },
      "WorkspaceGroupUpdateRequestV2": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 512
          },
          "description": {
            "type": "string",
            "maxLength": 512
          },
          "location": {
            "$ref": "#/components/schemas/WorkspaceGroupBaseUpdateLocationInputV2"
          }
        },
        "required": [
          "name",
          "description",
          "location"
        ]
      },
      "UpdateWorkspaceGroupWorkspacesResponseV2": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "Mensagem de confirmação da atualização"
          },
          "total_in_group": {
            "type": "integer",
            "description": "Total de Workspaces no grupo após aplicar a atualização"
          }
        },
        "required": [
          "message",
          "total_in_group"
        ]
      },
      "WorkspacesUpdateRequestV2": {
        "type": "object",
        "properties": {
          "workspace_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 24,
              "pattern": "^[0-9a-f]{24}$"
            },
            "description": "Array de IDs de Workspace"
          }
        },
        "required": [
          "workspace_ids"
        ]
      },
      "WorkspaceAgentVersionItemV2": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "discovered_at",
          "version"
        ],
        "properties": {
          "discovered_at": {
            "type": "string",
            "format": "date-time",
            "description": "Data em que a versão do agente foi detectada."
          },
          "version": {
            "type": "string",
            "description": "Versão do agente detectada no workspace."
          }
        }
      },
      "GetWorkspaceAgentVersionsResponseV2": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "has_next"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkspaceAgentVersionItemV2"
            }
          },
          "has_next": {
            "type": "boolean",
            "description": "Indica se existem mais resultados na próxima página."
          }
        }
      },
      "GetWorkspaceAlertsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Se outra página está disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetWorkspaceAlertItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetWorkspaceAlertItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do alerta."
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Nome do alerta."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Descrição do alerta."
          },
          "severity": {
            "type": "string",
            "enum": [
              "critical",
              "warning",
              "informational"
            ],
            "nullable": true,
            "description": "Severidade do alerta em minúsculas. Será nulo quando os dados originais não forem válidos."
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Carimbo de tempo de início do alerta."
          },
          "authorized_minutes": {
            "type": "number",
            "nullable": true,
            "description": "Duração autorizada em minutos."
          },
          "notified_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Carimbo de tempo de notificação."
          },
          "information": {
            "type": "string",
            "nullable": true,
            "description": "Informação adicional do alerta."
          },
          "threshold_unit_name": {
            "type": "string",
            "nullable": true,
            "description": "Nome da unidade do critério."
          },
          "threshold_value": {
            "type": "number",
            "nullable": true,
            "description": "Valor do critério."
          },
          "element": {
            "type": "string",
            "nullable": true,
            "description": "Elemento afetado."
          },
          "category": {
            "type": "string",
            "nullable": true,
            "description": "Categoria do alerta."
          }
        },
        "required": [
          "id"
        ]
      },
      "GetWorkspaceDisksResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetWorkspaceDiskItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetWorkspaceDiskItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do registro de disco."
          },
          "name": {
            "type": "string",
            "description": "Nome do disco."
          },
          "device_id": {
            "type": "string",
            "description": "Cadeia identificadora do dispositivo de disco."
          },
          "encrypted": {
            "type": "string",
            "enum": [
              "not_encrypted",
              "encrypted",
              "partially_encrypted",
              "na"
            ],
            "description": "Estado de criptografia do disco."
          },
          "encryption_method": {
            "type": "string",
            "description": "Etiqueta do método de criptografia."
          },
          "location": {
            "type": "string",
            "description": "Etiqueta de localização do disco."
          },
          "media_type": {
            "type": "string",
            "description": "Tipo de mídia do disco."
          },
          "os_drive": {
            "type": "boolean",
            "nullable": true,
            "description": "Se o disco está marcado como unidade do SO."
          },
          "partition": {
            "type": "string",
            "description": "Descritor de partição."
          },
          "physical_disk_size": {
            "type": "number",
            "description": "Valor do tamanho físico do disco."
          },
          "total_size": {
            "type": "number",
            "description": "Valor do tamanho total do disco."
          },
          "last_updated_at": {
            "type": "string",
            "description": "Data da última atualização do registro de disco."
          },
          "used_size": {
            "type": "number",
            "description": "Valor do tamanho usado do disco."
          },
          "volume_label": {
            "type": "string",
            "description": "Etiqueta de volume."
          }
        },
        "required": [
          "id",
          "name",
          "device_id",
          "encrypted",
          "encryption_method",
          "location",
          "partition",
          "physical_disk_size",
          "total_size"
        ]
      },
      "GetWorkspaceInstalledAppsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetWorkspaceInstalledAppItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetWorkspaceInstalledAppItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do aplicativo instalado."
          },
          "product_name": {
            "type": "string",
            "description": "Nome do aplicativo instalado."
          },
          "publisher": {
            "type": "string",
            "nullable": true,
            "description": "Publicador do aplicativo instalado."
          },
          "version": {
            "type": "string",
            "nullable": true,
            "description": "Versão do aplicativo instalado."
          },
          "installed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Carimbo de tempo de instalação."
          },
          "install_location": {
            "type": "string",
            "nullable": true,
            "description": "Local de instalação."
          },
          "last_reported_at": {
            "type": "string",
            "format": "date-time",
            "description": "Carimbo de tempo do último relatório."
          }
        },
        "required": [
          "id",
          "product_name",
          "last_reported_at"
        ]
      },
      "GetWorkspaceOperationsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetOperationByIdResponseV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetWorkspacePatchesResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetWorkspacePatchItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetWorkspacePatchItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do registro do patch."
          },
          "kb": {
            "type": "string",
            "description": "Código KB do patch."
          },
          "title": {
            "type": "string",
            "description": "Título do patch."
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "installed"
            ],
            "description": "Estado do patch."
          },
          "product": {
            "type": "string",
            "description": "Produto associado ao patch."
          },
          "severity": {
            "type": "string",
            "description": "Severidade do patch."
          },
          "arrived_at": {
            "type": "string",
            "description": "Data de chegada ou publicação do patch."
          },
          "category": {
            "type": "string",
            "description": "Categoria do patch."
          },
          "installed_at": {
            "type": "string",
            "nullable": true,
            "description": "Data de instalação do patch."
          },
          "additional_information_url": {
            "type": "string",
            "description": "URL com informações adicionais do patch."
          }
        },
        "required": [
          "id",
          "kb",
          "title",
          "status",
          "product",
          "severity",
          "arrived_at",
          "category",
          "additional_information_url"
        ]
      },
      "GetWorkspacePnpErrorsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetWorkspacePnpErrorItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetWorkspacePnpErrorItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do registro de erro de PnP."
          },
          "name": {
            "type": "string",
            "description": "Nome do erro."
          },
          "status": {
            "type": "string",
            "description": "Estado do erro."
          },
          "class": {
            "type": "string",
            "description": "Classe do dispositivo."
          },
          "device_id": {
            "type": "string",
            "description": "Identificador do dispositivo."
          },
          "error_description": {
            "type": "string",
            "description": "Descrição do erro."
          },
          "error_code": {
            "type": "string",
            "description": "Código do erro."
          },
          "properties": {
            "type": "string",
            "description": "Propriedades adicionais."
          },
          "last_updated_at": {
            "type": "string",
            "description": "Data da última atualização."
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "class",
          "device_id",
          "error_description",
          "error_code",
          "properties",
          "last_updated_at"
        ]
      },
      "GetWorkspacePnpEventsResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetWorkspacePnpEventItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetWorkspacePnpEventItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do evento."
          },
          "action": {
            "type": "string",
            "description": "Etiqueta da ação."
          },
          "created_at": {
            "type": "string",
            "description": "Cadeia de data do evento."
          },
          "user_name": {
            "type": "string",
            "description": "Usuário associado ao evento."
          },
          "caption": {
            "type": "string",
            "description": "Legenda do evento."
          },
          "device_id": {
            "type": "string",
            "description": "Identificador do dispositivo associado ao evento."
          }
        },
        "required": [
          "id",
          "action",
          "created_at",
          "user_name",
          "caption",
          "device_id"
        ]
      },
      "GetWorkspaceServicesResponseV2": {
        "type": "object",
        "properties": {
          "has_next": {
            "type": "boolean",
            "description": "Indica se há outra página disponível."
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetWorkspaceServiceItemV2"
            }
          }
        },
        "required": [
          "has_next",
          "data"
        ]
      },
      "GetWorkspaceServiceItemV2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador do serviço."
          },
          "name": {
            "type": "string",
            "description": "Nome do serviço."
          },
          "description": {
            "type": "string",
            "description": "Descrição do serviço."
          },
          "status": {
            "type": "string",
            "description": "Estado do serviço."
          },
          "accept_stop": {
            "type": "boolean",
            "nullable": true,
            "description": "Indica se o serviço aceita solicitações de parada."
          },
          "display_name": {
            "type": "string",
            "description": "Nome para exibição do serviço."
          },
          "log_on_as": {
            "type": "string",
            "description": "Conta usada para executar o serviço."
          },
          "path": {
            "type": "string",
            "description": "Caminho executável do serviço."
          },
          "organization_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador de organização associado ao serviço."
          },
          "reporting_group_id": {
            "type": "string",
            "description": "Identificador do Grupo de relatório associado ao serviço."
          },
          "startup_type": {
            "type": "string",
            "description": "Tipo de inicialização do serviço."
          },
          "last_updated_at": {
            "type": "string",
            "description": "Cadeia de carimbo de tempo da última atualização."
          },
          "workspace_id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$",
            "minLength": 24,
            "maxLength": 24,
            "description": "Identificador de Workspace associado ao serviço."
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "status",
          "display_name",
          "log_on_as",
          "path",
          "organization_id",
          "reporting_group_id",
          "startup_type",
          "last_updated_at",
          "workspace_id"
        ]
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Solicitação incorreta",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Não autorizado",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "NotFound": {
        "description": "Não encontrado",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "TooManyRequests": {
        "description": "Solicitações em excesso",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Erro interno do servidor",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "UnprocessableEntity": {
        "description": "Entidade não processável",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "Conflict": {
        "description": "Conflito",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ]
}
