# Playground GraphiQL

import DocButton from '~/components/webkit/DocButton.vue';

Você pode ver como acessar o Playground GraphiQL na documentação dos primeiros passos da API GraphQL.

<DocButton href="/pt-br/documentacao/devtools/graphql-api/primeiros-passos/#acessar-o-playground-graphql" label="Como acessar o playground" kind="secondary" size="medium" />

Você pode usar o playground para executar queries ou explorar como construí-las. Se você está recém começando, você pode copiar e colar essas queries no playground e descobrir o que cada campo representa, os operadores disponíveis e até mesmo obter validação em tempo real para erros.

:::tip
Após executar uma query, o caminho da URL é atualizado com um parâmetro codificado da query específica que você está utilizando. Você pode copiar e compartilhar a URL com outros usuários para que usem a mesma query que você.
:::

Esta primeira query é um tipo de consulta de introspecção, que fornece informações sobre os campos para conjuntos de dados:

```graphql
query IntrospectionQuery {
    __schema {
        queryType { name }
        mutationType { name }
        subscriptionType { name }
        types {
            ...FullType       
        }
        directives {
            name
            description
            locations
            args {
                ...InputValue        
            }
        }
    }
}

fragment FullType on __Type {
    kind
    name
    description
    fields(includeDeprecated: true) {
        name
        description
        args {
            ...InputValue
        }
        type {
            ...TypeRef
        }
        isDeprecated
        deprecationReason
    }
    inputFields {
        ...InputValue
    }
    interfaces {
        ...TypeRef
    }
    enumValues(includeDeprecated: true) {
        name
        description
        isDeprecated
        deprecationReason
    }
    possibleTypes {
        ...TypeRef
    }
}

fragment InputValue on __InputValue {
    name
    description
    type {
        ...TypeRef
    }
    defaultValue
}

fragment TypeRef on __Type {
    name
    ofType {
        kind
        name
        ofType {
            kind
            name
            ofType {
                kind
                name
                ofType {
                    kind
                    name
                    ofType {
                        kind
                        name
                        ofType {
                            kind
                            name
                            ofType {
                                kind
                                name
                            }
                        }
                    }
                }
            }
        }
    }
}
```

Esta segunda query usa o conjunto de dados **httpMetrics**, com dados de application:

```graphql
query HttpCalculatedDataTransferred {
  httpMetrics(
    limit: 2000
    filter: {
      tsRange: {begin:"2023-01-26T10:00:00", end:"2023-01-26T20:00:00"}
    }
    groupBy:[ts]
    orderBy:[ts_ASC]
  )
  {
    ts
    dataTransferredIn
    dataTransferredOut
    dataTransferredTotal
  }
}
```

:::tip
Modifique os campos e os valores para explorar como a API GraphQL e o playground funcionam.
:::

Você também pode testar esta query para filtrar os IPs que mais geraram requisições identificadas pelo WAF como ataque para explorar mais possibilidades do playground: 

```graphql
query TOP5IPsWAFRequests {
  workloadEvents(
    limit: 5
    filter: {
      tsRange: {
        begin:"2025-01-15T00:00:00"
        end:"2025-01-15T20:00:00"
      },
      wafMatchNe: "-"
      wafAttackFamilyNe: "-"
    }
    aggregate: {
      count: rows
    }
    groupBy:[remoteAddress, wafAttackFamily]
    orderBy:[count_DESC]
  )
  {
    remoteAddress
    wafAttackFamily
    count
  }
}
```

:::tip
Para mais detalhes, consulte o guia [Como identificar os principais IPs gerando tráfego de ataque com a API GraphQL](/pt-br/documentacao/produtos/guias/consultar-top-ips-gerando-trafego-de-ataque-com-graphql/).
:::

Ou use esta query para filtrar os principais tipos de ataques, classificados por ocorrência.

```graphql
query Top5Attacks {
  httpMetrics(
    limit: 5
    filter: {
      tsRange: {
        begin:"2025-01-15T00:00:00"
        end:"2025-01-15T20:00:00"
      }
    }
    groupBy:[wafAttackFamily]
    orderBy:[wafRequestsThreat_DESC]
  )
  {
    wafAttackFamily
    wafRequestsThreat
  }
}
```

:::tip
Visite a [página de Guias](/pt-br/documentacao/produtos/guias/#graphql-api) e a [documentação da GraphQL API](/pt-br/documentacao/devtools/graphql-api/) para explorar mais opções de consulta de dados.
:::