> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Criar automação

> Crie uma nova automação com gatilhos e ações.

<div id="permissions">
  ## Permissões
</div>

Requer um usuário de serviço com a permissão `ManageOrgAutomations` no nível da organização.

<div id="run-identity">
  ## Identidade de execução
</div>

O campo `run_as` é obrigatório. As automações criadas por usuários de serviço devem usar
`organization`; usuários humanos que fazem chamadas à API e têm a
permissão `UsePersonalAutomations` podem usar `creator` para executar sessões com as permissões do criador.

<div id="triggers-and-actions">
  ## Gatilhos e ações
</div>

Uma automação é acionada quando qualquer um dos seus `triggers` corresponde a um evento e, em seguida, executa suas `actions` (por exemplo, iniciando uma sessão do Devin com um prompt). Use o [endpoint de esquemas de eventos](/pt-BR/api-reference/v3/automations/get-organizations-automations-schemas) para identificar os tipos de eventos de gatilho compatíveis, seus campos e operadores de condição e os verbos de resposta aceitos por cada tipo de evento.

As `conditions` de gatilho usam uma estrutura de dois níveis — `{"any": [{"all": [...]}]}` — com condições no formato `{field, operator, value}`; um objeto de condições `null` corresponde a todos os eventos.

<div id="webhook-triggers">
  ## Gatilhos de webhook
</div>

Uma automação com um gatilho `webhook:incoming` (no máximo um) recebe uma URL de entrada e um segredo no momento da criação. O segredo é gerado novamente e retornado quando um gatilho de webhook é readicionado durante uma atualização; ele não pode ser recuperado novamente, portanto, guarde-o ao recebê-lo. Sistemas externos o enviam no cabeçalho `X-Webhook-Secret`.


## OpenAPI

````yaml pt-BR/v3-openapi.yaml POST /v3/organizations/{org_id}/automations
openapi: 3.1.0
info:
  description: API Devin v3 com autenticação de usuário de serviço e RBAC
  title: Devin API v3
  version: 3.0.0
servers: []
security:
  - bearerAuth: []
paths:
  /v3/organizations/{org_id}/automations:
    post:
      tags:
        - automations
      summary: Criar automação
      description: Crie uma nova automação com gatilhos e ações.
      operationId: handle_create_automation_v3_organizations__org_id__automations_post
      parameters:
        - description: 'ID da organização (prefixo: org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutomationCreateRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationResponse'
          description: Resposta bem-sucedida
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Não autorizado
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Proibido
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Não encontrado
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflito
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conteúdo não processável
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Excesso de requisições
components:
  schemas:
    AutomationCreateRequest:
      additionalProperties: false
      properties:
        actions:
          description: >-
            Não vazio. Limites: no máximo um start_session; monitor_session deve
            ser a única ação.
          items:
            discriminator:
              mapping:
                message_session:
                  $ref: '#/components/schemas/AutomationMessageSessionAction'
                monitor_session:
                  $ref: '#/components/schemas/AutomationMonitorSessionAction'
                start_session:
                  $ref: '#/components/schemas/AutomationStartSessionAction-Input'
              propertyName: type
            oneOf:
              - $ref: '#/components/schemas/AutomationStartSessionAction-Input'
              - $ref: '#/components/schemas/AutomationMessageSessionAction'
              - $ref: '#/components/schemas/AutomationMonitorSessionAction'
          title: Actions
          type: array
        concurrency:
          anyOf:
            - $ref: '#/components/schemas/AutomationConcurrency'
            - type: 'null'
        enabled:
          default: true
          title: Enabled
          type: boolean
        limits:
          anyOf:
            - $ref: '#/components/schemas/AutomationLimits'
            - type: 'null'
        metadata:
          additionalProperties:
            type: string
          default: {}
          description: >-
            Rótulos de chave-valor visíveis na organização para organizar e
            filtrar automações. No máximo 16 pares; chaves com no máximo 32
            caracteres; valores com no máximo 128.
          title: Metadata
          type: object
        name:
          maxLength: 500
          minLength: 1
          title: Name
          type: string
        notifications:
          anyOf:
            - $ref: '#/components/schemas/AutomationNotifications'
            - type: 'null'
        run_as:
          description: >-
            Obrigatório: escolha explicitamente a identidade sob a qual as
            sessões geradas são executadas (organização ou criador).
          discriminator:
            mapping:
              creator:
                $ref: '#/components/schemas/AutomationRunAsCreator'
              organization:
                $ref: '#/components/schemas/AutomationRunAsOrganization'
            propertyName: type
          oneOf:
            - $ref: '#/components/schemas/AutomationRunAsOrganization'
            - $ref: '#/components/schemas/AutomationRunAsCreator'
          title: Run As
        security_profile:
          anyOf:
            - $ref: '#/components/schemas/AutomationSecurityProfileSelection'
            - type: 'null'
          description: >-
            A associação da automação ao perfil de segurança; se omitida, herda
            da organização/Enterprise. Requer a permissão de gerenciamento de
            perfis de segurança.
        session_settings:
          anyOf:
            - $ref: '#/components/schemas/AutomationSessionSettings-Input'
            - type: 'null'
          description: Aplicado às sessões geradas por esta automação.
        template_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Marcador de procedência exclusivo da criação; resolva IDs por meio
            do endpoint de templates. Quando definido e tools.mcp_servers é
            omitido, os required_mcps do template são aplicados.
          title: Template Id
        tools:
          anyOf:
            - $ref: '#/components/schemas/AutomationTools'
            - type: 'null'
        triggers:
          description: >-
            É acionada quando qualquer acionador corresponde, uma vez por
            evento. No máximo um acionador webhook:incoming.
          items:
            $ref: '#/components/schemas/AutomationTriggerRequest-Input'
          title: Triggers
          type: array
      required:
        - name
        - triggers
        - actions
        - run_as
      title: AutomationCreateRequest
      type: object
    AutomationResponse:
      additionalProperties: false
      properties:
        actions:
          items:
            discriminator:
              mapping:
                message_session:
                  $ref: '#/components/schemas/AutomationMessageSessionAction'
                monitor_session:
                  $ref: '#/components/schemas/AutomationMonitorSessionAction'
                start_session:
                  $ref: '#/components/schemas/AutomationStartSessionAction-Output'
              propertyName: type
            oneOf:
              - $ref: '#/components/schemas/AutomationStartSessionAction-Output'
              - $ref: '#/components/schemas/AutomationMessageSessionAction'
              - $ref: '#/components/schemas/AutomationMonitorSessionAction'
          title: Actions
          type: array
        automation_id:
          title: Automation Id
          type: string
        concurrency:
          anyOf:
            - $ref: '#/components/schemas/AutomationConcurrency'
            - type: 'null'
        created_at:
          title: Created At
          type: integer
        created_by:
          $ref: '#/components/schemas/ActorResponse'
        enabled:
          title: Enabled
          type: boolean
        last_edited_by:
          anyOf:
            - $ref: '#/components/schemas/ActorResponse'
            - type: 'null'
        last_invocation:
          anyOf:
            - $ref: '#/components/schemas/AutomationLastInvocation'
            - type: 'null'
        limits:
          anyOf:
            - $ref: '#/components/schemas/AutomationLimits'
            - type: 'null'
        metadata:
          additionalProperties:
            type: string
          default: {}
          title: Metadata
          type: object
        name:
          title: Name
          type: string
        notifications:
          anyOf:
            - $ref: '#/components/schemas/AutomationNotifications'
            - type: 'null'
        run_as:
          description: >-
            Identidade sob a qual as sessões geradas são executadas.
            organization: a identidade de automação da organização (o Usuário do
            sistema no app) — as sessões usam permissões do sistema; portanto,
            servidores MCP instalados com uma conexão pessoal (com escopo de
            usuário) não podem ser selecionados, e alterar uma automação para
            organization os remove da seleção. creator: automação pessoal — é
            executada com as permissões do próprio criador e fica visível apenas
            para o criador e administradores da organização; rejeitada para
            automações criadas por usuário de serviço. Obrigatório na criação;
            null na atualização redefine para organization.
          discriminator:
            mapping:
              creator:
                $ref: '#/components/schemas/AutomationRunAsCreator'
              organization:
                $ref: '#/components/schemas/AutomationRunAsOrganization'
            propertyName: type
          oneOf:
            - $ref: '#/components/schemas/AutomationRunAsOrganization'
            - $ref: '#/components/schemas/AutomationRunAsCreator'
          title: Run As
        security_profile:
          anyOf:
            - $ref: '#/components/schemas/AutomationSecurityProfileResponse'
            - type: 'null'
          description: >-
            A associação da automação ao perfil de segurança e os perfis
            aplicáveis determinados. null quando os perfis de segurança não
            estão ativados para a organização.
        session_settings:
          anyOf:
            - $ref: '#/components/schemas/AutomationSessionSettings-Output'
            - type: 'null'
        template_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Template Id
        tools:
          anyOf:
            - $ref: '#/components/schemas/AutomationTools'
            - type: 'null'
        triggers:
          items:
            $ref: '#/components/schemas/AutomationTriggerResponse'
          title: Triggers
          type: array
        updated_at:
          title: Updated At
          type: integer
      required:
        - automation_id
        - name
        - enabled
        - triggers
        - actions
        - created_by
        - created_at
        - updated_at
      title: AutomationResponse
      type: object
    ProblemDetail:
      description: >-
        Corpo de erro RFC 9457 application/problem+json da API v3.


        detail é mantido do corpo legado {"detail": ...} por
        retrocompatibilidade; os

        outros membros são aditivos. errors contém falhas de validação em nível
        de campo

        (apenas 422).
      properties:
        detail:
          anyOf:
            - type: string
            - type: 'null'
          description: Uma explicação legível por humanos específica para esta ocorrência.
          title: Detail
        errors:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          description: Erros de validação no nível do campo (apenas respostas 422).
          title: Errors
        instance:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Uma referência de URI (o caminho da requisição) para esta
            ocorrência.
          title: Instance
        status:
          description: O código de status HTTP.
          title: Status
          type: integer
        title:
          description: Um breve resumo do tipo de problema, legível para humanos.
          title: Title
          type: string
        type:
          default: about:blank
          description: Uma referência de URI que identifica o tipo de problema.
          title: Type
          type: string
      required:
        - title
        - status
      title: ProblemDetail
      type: object
    AutomationMessageSessionAction:
      additionalProperties: false
      properties:
        auto_create:
          default: false
          description: >-
            Quando true, o primeiro acionador cria uma nova sessão de longa
            duração pertencente à automação, e os acionadores subsequentes
            enviam mensagens a ela.
          title: Auto Create
          type: boolean
        prompt:
          description: O payload do evento acionador é anexado automaticamente.
          title: Prompt
          type: string
        target_devin_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Deve pertencer à organização; editar uma automação que contém esta
            ação requer acesso de gravação à sessão de destino (edições apenas
            de ativação/desativação são isentas). Obrigatório, a menos que
            auto_create seja true; nesse caso, é definido no servidor quando o
            primeiro acionamento cria a sessão. Valores fornecidos pelo cliente
            são ignorados.
          title: Target Devin Id
        type:
          const: message_session
          default: message_session
          title: Type
          type: string
      required:
        - prompt
      title: AutomationMessageSessionAction
      type: object
    AutomationMonitorSessionAction:
      additionalProperties: false
      properties:
        setup_prompt:
          description: >-
            Injetado no prompt de sistema da sessão. Mesma gramática de token de
            referência usada por prompt.
          title: Setup Prompt
          type: string
        slack_monitor_config:
          $ref: '#/components/schemas/AutomationSlackMonitorConfig'
          description: Requer exatamente um acionador slack:message no mesmo canal.
        type:
          const: monitor_session
          default: monitor_session
          title: Type
          type: string
      required:
        - setup_prompt
        - slack_monitor_config
      title: AutomationMonitorSessionAction
      type: object
    AutomationStartSessionAction-Input:
      additionalProperties: false
      properties:
        prompt:
          description: >-
            A única fonte de verdade: texto simples com tokens de referência
            inline (@{owner}/{repo}, @{path}, @playbook:{id}, @skills:{name},
            !{macro}, ${SECRET_NAME}). Tokens prefixados por tipo são validados
            ao salvar; IDs desconhecidos resultam em erro 400. O payload do
            evento que aciona a automação é acrescentado automaticamente.
          title: Prompt
          type: string
        session:
          $ref: '#/components/schemas/AutomationSessionConfig-Input'
          description: Configuração da sessão gerada.
        type:
          const: start_session
          default: start_session
          title: Type
          type: string
      required:
        - prompt
      title: AutomationStartSessionAction
      type: object
    AutomationConcurrency:
      additionalProperties: false
      properties:
        max_concurrent_runs:
          anyOf:
            - minimum: 1
              type: integer
            - type: 'null'
          description: >-
            Máximo de execuções em andamento para esta automação; eventos
            acionados adicionais aguardam na fila. Uma execução deixa de contar
            para o limite quando sua sessão termina e aguarda mais instruções,
            não apenas quando a sessão é interrompida. null = ilimitado.
          title: Max Concurrent Runs
        max_queue_depth:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          description: >-
            Máximo de eventos acionados aguardando execução na fila da
            automação; eventos além desse limite são descartados. Requer que
            max_concurrent_runs seja definido. null = ilimitado.
          title: Max Queue Depth
      title: AutomationConcurrency
      type: object
    AutomationLimits:
      additionalProperties: false
      properties:
        invocations:
          anyOf:
            - $ref: '#/components/schemas/AutomationInvocationLimits'
            - type: 'null'
          description: Limita a frequência com que a automação é acionada.
        max_acu_limit:
          anyOf:
            - maximum: 1000
              minimum: 1
              type: integer
            - type: 'null'
          description: Por sessão gerada (mesmo nome da API de sessões).
          title: Max Acu Limit
      title: AutomationLimits
      type: object
    AutomationNotifications:
      additionalProperties: false
      properties:
        email:
          anyOf:
            - $ref: '#/components/schemas/AutomationEmailNotification'
            - type: 'null'
        slack:
          anyOf:
            - $ref: '#/components/schemas/AutomationSlackNotification'
            - type: 'null'
      title: AutomationNotifications
      type: object
    AutomationRunAsCreator:
      additionalProperties: false
      properties:
        type:
          const: creator
          default: creator
          title: Type
          type: string
      title: AutomationRunAsCreator
      type: object
    AutomationRunAsOrganization:
      additionalProperties: false
      properties:
        type:
          const: organization
          default: organization
          title: Type
          type: string
      title: AutomationRunAsOrganization
      type: object
    AutomationSecurityProfileSelection:
      additionalProperties: false
      description: A própria associação da automação ao perfil de segurança.
      properties:
        profile_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Perfil de segurança a ser associado a esta automação. null registra
            uma desativação explícita (sem perfil, mesmo quando a organização ou
            Enterprise tem um padrão recomendado). Gravar este campo requer a
            permissão de gerenciamento de perfis de segurança; uma desativação
            não pode contornar um perfil obrigatório da organização ou
            Enterprise.
          title: Profile Id
      title: AutomationSecurityProfileSelection
      type: object
    AutomationSessionSettings-Input:
      additionalProperties: false
      description: >-
        Aplicado a todas as sessões geradas por esta automação (incluindo
        sessões de monitoramento).
      properties:
        devin_mode:
          anyOf:
            - enum:
                - normal
                - fast
                - lite
                - ultra
                - fusion
              type: string
            - type: 'null'
          description: null = padrão da organização.
          title: Devin Mode
        net_policy:
          anyOf:
            - $ref: '#/components/schemas/AutomationNetPolicy'
            - type: 'null'
      title: AutomationSessionSettings
      type: object
    AutomationTools:
      additionalProperties: false
      properties:
        linear_enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          description: Concede acesso às ferramentas do Linear.
          title: Linear Enabled
        mcp_servers:
          default: []
          description: >-
            Slugs do Marketplace (o campo slug do recurso mcp-servers, por
            exemplo, 'github', 'notion') ativados para sessões geradas.
            Servidores instalados com uma conexão pessoal (no escopo do usuário)
            exigem run_as creator; selecioná-los com run_as organization é
            rejeitado, pois a identidade de serviço da automação não tem um
            token pessoal para eles, e mudar o run_as de uma automação para
            organization os remove da seleção armazenada.
          items:
            type: string
          title: Mcp Servers
          type: array
        slack_channels:
          default: []
          description: Canais nos quais as ferramentas do Slack da sessão podem publicar.
          items:
            $ref: '#/components/schemas/AutomationSlackChannel'
          title: Slack Channels
          type: array
        slack_dm_scope:
          anyOf:
            - enum:
                - org_members
                - workspace
              type: string
            - type: 'null'
          description: >-
            Permite que sessões geradas abram DMs individuais no Slack nos
            workspaces conectados da organização. 'org_members' (somente para
            contas Enterprise) restringe os destinatários das DMs aos membros da
            organização; 'workspace' (somente para contas não Enterprise)
            permite qualquer membro qualificado do workspace. Omita ou use null
            para desativar as DMs.
          title: Slack Dm Scope
      title: AutomationTools
      type: object
    AutomationTriggerRequest-Input:
      additionalProperties: false
      properties:
        conditions:
          anyOf:
            - $ref: '#/components/schemas/AutomationConditions-Input'
            - type: 'null'
          description: null corresponde a todos os eventos.
        event_type:
          description: Tipo de evento de acionamento, por exemplo, 'github:pull_request'.
          enum:
            - github:issue_comment
            - github:issues
            - github:pull_request
            - github:pull_request_review
            - github:pull_request_review_comment
            - github:check_run
            - github:push
            - gitlab:merge_request
            - gitlab:note
            - gitlab:issue
            - gitlab:issue_note
            - gitlab:push
            - gitlab:pipeline
            - schedule:recurring
            - slack:message
            - slack:reaction_added
            - linear:create
            - linear:label_added
            - linear:assigned
            - linear:status_changed
            - linear:priority_changed
            - linear:moved
            - jira:issue_created
            - jira:label_added
            - jira:status_changed
            - jira:assigned
            - pylon:issue_created
            - pylon:issue_tag_added
            - pylon:issue_status_changed
            - incident_io:incident_created
            - incident_io:status_changed
            - incident_io:severity_changed
            - incident_io:follow_up_created
            - webhook:incoming
            - snapshot_build:completed
          title: Event Type
          type: string
        replies:
          default: []
          description: >-
            Onde a sessão deste acionamento é associada e onde sua resposta é
            entregue. Apenas as respostas do acionamento correspondente são
            executadas; todas as entradas são independentes e duplicatas são
            removidas.
          items:
            $ref: '#/components/schemas/AutomationReply'
          title: Replies
          type: array
      required:
        - event_type
      title: AutomationTriggerRequest
      type: object
    AutomationStartSessionAction-Output:
      additionalProperties: false
      properties:
        prompt:
          description: >-
            A única fonte de verdade: texto simples com tokens de referência
            inline (@{owner}/{repo}, @{path}, @playbook:{id}, @skills:{name},
            !{macro}, ${SECRET_NAME}). Tokens prefixados por tipo são validados
            ao salvar; IDs desconhecidos resultam em erro 400. O payload do
            evento que aciona a automação é acrescentado automaticamente.
          title: Prompt
          type: string
        session:
          $ref: '#/components/schemas/AutomationSessionConfig-Output'
          description: Configuração da sessão gerada.
        type:
          const: start_session
          default: start_session
          title: Type
          type: string
      required:
        - prompt
      title: AutomationStartSessionAction
      type: object
    ActorResponse:
      description: >-
        Um principal de usuário ou de usuário de serviço atribuído a uma ação ou
        recurso.
      properties:
        id:
          description: ID de usuário ou de usuário de serviço.
          title: Id
          type: string
        name:
          anyOf:
            - type: string
            - type: 'null'
          description: Nome de exibição, resolvido pelo servidor; null quando excluído.
          title: Name
        type:
          description: Tipo de principal.
          enum:
            - user
            - service_user
          title: Type
          type: string
      required:
        - type
        - id
      title: ActorResponse
      type: object
    AutomationLastInvocation:
      additionalProperties: false
      properties:
        fired_at:
          title: Fired At
          type: integer
        status:
          description: >-
            succeeded | failed | skipped — enumeração aberta; os clientes devem
            aceitar novos valores.
          title: Status
          type: string
      required:
        - fired_at
        - status
      title: AutomationLastInvocation
      type: object
    AutomationSecurityProfileResponse:
      additionalProperties: false
      properties:
        profile_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Profile Id
        selection:
          description: >-
            A própria associação da automação: inherit (sem associação), none
            (desativação explícita) ou profile (fixa profile_id). As sessões
            resolvem toda a cadeia Enterprise -> organização -> automação: a
            política de rede da automação apenas restringe ainda mais as
            políticas dos perfis aplicáveis, e uma desativação não pode
            contornar um perfil obrigatório da organização ou Enterprise.
          enum:
            - inherit
            - none
            - profile
          title: Selection
          type: string
        warnings:
          default: []
          description: >-
            Conflitos de configuração não bloqueantes, por exemplo, um servidor
            MCP recomendado cujo hostname de endpoint é bloqueado pelo perfil
            aplicável (as sessões geradas não poderão se conectar a esse
            servidor). Apenas hostnames de endpoints MCP remotos são
            verificados; uma lista vazia não garante que todos os destinos MCP
            ou de rede funcionarão. Preenchido em leituras e gravações de uma
            única automação; vazio nas respostas de lista.
          items:
            type: string
          title: Warnings
          type: array
      required:
        - selection
      title: AutomationSecurityProfileResponse
      type: object
    AutomationSessionSettings-Output:
      additionalProperties: false
      description: >-
        Aplicado a todas as sessões geradas por esta automação (incluindo
        sessões de monitoramento).
      properties:
        devin_mode:
          anyOf:
            - enum:
                - normal
                - fast
                - lite
                - ultra
                - fusion
              type: string
            - type: 'null'
          description: null = padrão da organização.
          title: Devin Mode
        net_policy:
          anyOf:
            - $ref: '#/components/schemas/AutomationNetPolicy'
            - type: 'null'
      title: AutomationSessionSettings
      type: object
    AutomationTriggerResponse:
      additionalProperties: false
      properties:
        conditions:
          anyOf:
            - $ref: '#/components/schemas/AutomationConditions-Output'
            - type: 'null'
        event_type:
          title: Event Type
          type: string
        replies:
          default: []
          items:
            $ref: '#/components/schemas/AutomationReply'
          title: Replies
          type: array
        trigger_id:
          description: >-
            Gerado novamente quando triggers é substituído — não é estável entre
            edições.
          title: Trigger Id
          type: string
        webhook:
          anyOf:
            - $ref: '#/components/schemas/AutomationWebhookResponse'
            - type: 'null'
          description: Somente em gatilhos webhook:incoming.
      required:
        - trigger_id
        - event_type
      title: AutomationTriggerResponse
      type: object
    AutomationSlackMonitorConfig:
      additionalProperties: false
      properties:
        source_channel_id:
          title: Source Channel Id
          type: string
        team_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Team Id
      required:
        - source_channel_id
      title: AutomationSlackMonitorConfig
      type: object
    AutomationSessionConfig-Input:
      additionalProperties: false
      properties:
        bypass_approval:
          default: false
          description: >-
            Aprova automaticamente a criação de sessões filhas (a única
            verificação que este sinalizador ignora); qualquer futura
            verificação que possa ser ignorada exige um novo campo.
          title: Bypass Approval
          type: boolean
        notifications:
          anyOf:
            - $ref: '#/components/schemas/AutomationSessionNotificationsConfig'
            - type: 'null'
          description: Notificações de conteúdo da sessão (atualmente, apenas Slack).
        platform:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Plataforma de VM da sessão. Quando null, a sessão usa a plataforma
            padrão da organização no momento da invocação.
          title: Platform
        playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          description: 'Somente leitura: derivado do primeiro token @playbook: no prompt.'
          title: Playbook Id
        repos:
          default: []
          description: 'Somente leitura: derivado dos tokens de repo no prompt.'
          items:
            type: string
          title: Repos
          type: array
        tags:
          default: []
          description: >-
            Tags de sessão. Para contas Enterprise que exigem tags, é necessário
            exatamente um valor permitido.
          items:
            type: string
          title: Tags
          type: array
      title: AutomationSessionConfig
      type: object
    AutomationInvocationLimits:
      additionalProperties: false
      properties:
        max_per_window:
          minimum: 1
          title: Max Per Window
          type: integer
        window_seconds:
          minimum: 60
          title: Window Seconds
          type: integer
      required:
        - max_per_window
        - window_seconds
      title: AutomationInvocationLimits
      type: object
    AutomationEmailNotification:
      additionalProperties: false
      properties:
        recipients:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          description: >-
            null = o criador da automação; obrigatório para automações criadas
            por usuário de serviço.
          title: Recipients
        when:
          enum:
            - always
            - dispatch_failed
            - dispatch_succeeded
          title: When
          type: string
      required:
        - when
      title: AutomationEmailNotification
      type: object
    AutomationSlackNotification:
      additionalProperties: false
      properties:
        channel_id:
          title: Channel Id
          type: string
        when:
          enum:
            - always
            - dispatch_failed
            - dispatch_succeeded
          title: When
          type: string
      required:
        - when
        - channel_id
      title: AutomationSlackNotification
      type: object
    AutomationNetPolicy:
      additionalProperties: false
      properties:
        allow:
          items:
            anyOf:
              - $ref: '#/components/schemas/AutomationHostnameDestination'
              - $ref: '#/components/schemas/AutomationIpv4Destination'
              - $ref: '#/components/schemas/AutomationIpv6Destination'
          title: Allow
          type: array
      required:
        - allow
      title: AutomationNetPolicy
      type: object
    AutomationSlackChannel:
      additionalProperties: false
      properties:
        channel_id:
          title: Channel Id
          type: string
        team_id:
          title: Team Id
          type: string
      required:
        - team_id
        - channel_id
      title: AutomationSlackChannel
      type: object
    AutomationConditions-Input:
      additionalProperties: false
      properties:
        any:
          description: OR de grupos AND (DNF fixa de dois níveis).
          items:
            $ref: '#/components/schemas/AutomationConditionGroup'
          title: Any
          type: array
      required:
        - any
      title: AutomationConditions
      type: object
    AutomationReply:
      additionalProperties: false
      properties:
        type:
          description: >-
            notify_thread: marcador unidirecional de "sessão iniciada" no
            momento do disparo, na thread acionadora (gatilhos do Slack).
            attach_thread: associação bidirecional no momento do disparo à
            thread acionadora (gatilhos do Slack). post_response: entrega a
            resposta do agente ao contexto acionador.
          enum:
            - notify_thread
            - attach_thread
            - post_response
          title: Type
          type: string
      required:
        - type
      title: AutomationReply
      type: object
    AutomationSessionConfig-Output:
      additionalProperties: false
      properties:
        bypass_approval:
          default: false
          description: >-
            Aprova automaticamente a criação de sessões filhas (a única
            verificação que este sinalizador ignora); qualquer futura
            verificação que possa ser ignorada exige um novo campo.
          title: Bypass Approval
          type: boolean
        notifications:
          anyOf:
            - $ref: '#/components/schemas/AutomationSessionNotificationsConfig'
            - type: 'null'
          description: Notificações de conteúdo da sessão (atualmente, apenas Slack).
        platform:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Plataforma de VM da sessão. Quando null, a sessão usa a plataforma
            padrão da organização no momento da invocação.
          title: Platform
        playbook_id:
          anyOf:
            - type: string
            - type: 'null'
          description: 'Somente leitura: derivado do primeiro token @playbook: no prompt.'
          title: Playbook Id
        repos:
          default: []
          description: 'Somente leitura: derivado dos tokens de repo no prompt.'
          items:
            type: string
          title: Repos
          type: array
        tags:
          default: []
          description: >-
            Tags de sessão. Para contas Enterprise que exigem tags, é necessário
            exatamente um valor permitido.
          items:
            type: string
          title: Tags
          type: array
      title: AutomationSessionConfig
      type: object
    AutomationConditions-Output:
      additionalProperties: false
      properties:
        any:
          description: OR de grupos AND (DNF fixa de dois níveis).
          items:
            $ref: '#/components/schemas/AutomationConditionGroup'
          title: Any
          type: array
      required:
        - any
      title: AutomationConditions
      type: object
    AutomationWebhookResponse:
      additionalProperties: false
      properties:
        secret:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Presente somente quando criado (na criação ou readição); nunca mais
            pode ser recuperado. Substituir triggers preserva o segredo
            existente.
          title: Secret
        url:
          description: >-
            A caixa de entrada para a qual sistemas externos enviam requisições
            POST (cabeçalho X-Webhook-Secret).
          title: Url
          type: string
      required:
        - url
      title: AutomationWebhookResponse
      type: object
    AutomationSessionNotificationsConfig:
      additionalProperties: false
      description: >-
        Para onde vai o conteúdo da sessão gerada, em vez do

        grupo ``notifications`` no nível da automação (pings de status de
        despacho).
      properties:
        slack:
          anyOf:
            - $ref: '#/components/schemas/AutomationSessionSlackConfig'
            - type: 'null'
          description: >-
            Define um local para a sessão no Slack: comunicação bidirecional
            para post_updates/forward_thread e post_response após a entrega
            inicial vincular a thread.
      title: AutomationSessionNotificationsConfig
      type: object
    AutomationHostnameDestination:
      additionalProperties: false
      properties:
        hostname:
          title: Hostname
          type: string
      required:
        - hostname
      title: AutomationHostnameDestination
      type: object
    AutomationIpv4Destination:
      additionalProperties: false
      properties:
        ipv4:
          title: Ipv4
          type: string
      required:
        - ipv4
      title: AutomationIpv4Destination
      type: object
    AutomationIpv6Destination:
      additionalProperties: false
      properties:
        ipv6:
          title: Ipv6
          type: string
      required:
        - ipv6
      title: AutomationIpv6Destination
      type: object
    AutomationConditionGroup:
      additionalProperties: false
      properties:
        all:
          description: 'AND: todas as condições do grupo devem corresponder.'
          items:
            discriminator:
              mapping:
                between:
                  $ref: '#/components/schemas/AutomationRangeCondition'
                contains:
                  $ref: '#/components/schemas/AutomationStringCondition'
                ends_with:
                  $ref: '#/components/schemas/AutomationStringCondition'
                eq:
                  $ref: '#/components/schemas/AutomationComparisonCondition'
                globs:
                  $ref: '#/components/schemas/AutomationGlobCondition'
                gt:
                  $ref: '#/components/schemas/AutomationNumericCondition'
                gte:
                  $ref: '#/components/schemas/AutomationNumericCondition'
                in:
                  $ref: '#/components/schemas/AutomationListCondition'
                is_empty:
                  $ref: '#/components/schemas/AutomationEmptyCondition'
                is_not_empty:
                  $ref: '#/components/schemas/AutomationEmptyCondition'
                lt:
                  $ref: '#/components/schemas/AutomationNumericCondition'
                lte:
                  $ref: '#/components/schemas/AutomationNumericCondition'
                matches:
                  $ref: '#/components/schemas/AutomationMatchCondition'
                neq:
                  $ref: '#/components/schemas/AutomationComparisonCondition'
                not_contains:
                  $ref: '#/components/schemas/AutomationStringCondition'
                not_ends_with:
                  $ref: '#/components/schemas/AutomationStringCondition'
                not_globs:
                  $ref: '#/components/schemas/AutomationGlobCondition'
                not_in:
                  $ref: '#/components/schemas/AutomationListCondition'
                not_matches:
                  $ref: '#/components/schemas/AutomationMatchCondition'
                not_starts_with:
                  $ref: '#/components/schemas/AutomationStringCondition'
                recurrence:
                  $ref: '#/components/schemas/AutomationRecurrenceCondition'
                starts_with:
                  $ref: '#/components/schemas/AutomationStringCondition'
              propertyName: operator
            oneOf:
              - $ref: '#/components/schemas/AutomationComparisonCondition'
              - $ref: '#/components/schemas/AutomationStringCondition'
              - $ref: '#/components/schemas/AutomationNumericCondition'
              - $ref: '#/components/schemas/AutomationEmptyCondition'
              - $ref: '#/components/schemas/AutomationRangeCondition'
              - $ref: '#/components/schemas/AutomationListCondition'
              - $ref: '#/components/schemas/AutomationMatchCondition'
              - $ref: '#/components/schemas/AutomationRecurrenceCondition'
              - $ref: '#/components/schemas/AutomationGlobCondition'
          title: All
          type: array
      required:
        - all
      title: AutomationConditionGroup
      type: object
    AutomationSessionSlackConfig:
      additionalProperties: false
      properties:
        channel_id:
          title: Channel Id
          type: string
        mode:
          description: >-
            post_updates: a sessão conversa em uma thread no canal (disponível
            para acionamentos que não são do Slack). forward_thread: o mesmo,
            além de um link de retorno publicado na thread que aciona a
            automação (requer um acionamento do Slack). post_response: a
            resposta final da sessão é publicada no canal como mensagem de nível
            superior, e então sua thread é vinculada para respostas e mensagens
            de acompanhamento (disponível para qualquer acionamento).
          enum:
            - post_updates
            - forward_thread
            - post_response
          title: Mode
          type: string
      required:
        - mode
        - channel_id
      title: AutomationSessionSlackConfig
      type: object
    AutomationRangeCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          const: between
          title: Operator
          type: string
        value:
          description: Intervalo inclusivo [inferior, superior].
          maxItems: 2
          minItems: 2
          prefixItems:
            - anyOf:
                - type: integer
                - type: number
            - anyOf:
                - type: integer
                - type: number
          title: Value
          type: array
      required:
        - field
        - operator
        - value
      title: AutomationRangeCondition
      type: object
    AutomationStringCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - contains
            - not_contains
            - starts_with
            - not_starts_with
            - ends_with
            - not_ends_with
          title: Operator
          type: string
        value:
          title: Value
          type: string
      required:
        - field
        - operator
        - value
      title: AutomationStringCondition
      type: object
    AutomationComparisonCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - eq
            - neq
          title: Operator
          type: string
        value:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: boolean
          title: Value
      required:
        - field
        - operator
        - value
      title: AutomationComparisonCondition
      type: object
    AutomationGlobCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - globs
            - not_globs
          title: Operator
          type: string
        value:
          description: >-
            Padrões glob; corresponde a qualquer caminho alterado (github:push,
            gitlab:push).
          items:
            type: string
          title: Value
          type: array
      required:
        - field
        - operator
        - value
      title: AutomationGlobCondition
      type: object
    AutomationNumericCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - gt
            - lt
            - gte
            - lte
          title: Operator
          type: string
        value:
          anyOf:
            - type: integer
            - type: number
          title: Value
      required:
        - field
        - operator
        - value
      title: AutomationNumericCondition
      type: object
    AutomationListCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - in
            - not_in
          title: Operator
          type: string
        value:
          items:
            type: string
          title: Value
          type: array
      required:
        - field
        - operator
        - value
      title: AutomationListCondition
      type: object
    AutomationEmptyCondition:
      additionalProperties: false
      description: >-
        Operador unário: corresponde se o campo estiver vazio; `value` não
        contém dados.
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - is_empty
            - is_not_empty
          title: Operator
          type: string
        value:
          title: Value
          type: 'null'
      required:
        - field
        - operator
      title: AutomationEmptyCondition
      type: object
    AutomationMatchCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          enum:
            - matches
            - not_matches
          title: Operator
          type: string
        value:
          description: Expressão regular.
          title: Value
          type: string
      required:
        - field
        - operator
        - value
      title: AutomationMatchCondition
      type: object
    AutomationRecurrenceCondition:
      additionalProperties: false
      properties:
        field:
          title: Field
          type: string
        operator:
          const: recurrence
          title: Operator
          type: string
        value:
          description: >-
            RRULE do iCalendar para o campo rrule de schedule:recurring, por
            exemplo, FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0
          title: Value
          type: string
      required:
        - field
        - operator
        - value
      title: AutomationRecurrenceCondition
      type: object
  securitySchemes:
    bearerAuth:
      description: 'Credencial de usuário de serviço (prefixo: cog_)'
      scheme: bearer
      type: http

````