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

# Guia de integração

> Esta página cobre ferramentas e conceitos-chave para integrar os endpoints de Lists. Referência para o nível standard da X API v2 sobre manage lists.

export const Button = ({href, children}) => {
  return <div className="not-prose">
    <a href={href}>
      <button className="x-btn">
        <span>{children}</span>
        <svg width="3" height="24" viewBox="0 -9 3 24" class="h-6 rotate-0 overflow-visible"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg>
      </button>
    </a>
  </div>;
};

Esta página cobre ferramentas e conceitos-chave para integrar os endpoints de Lists.

## Ferramentas úteis

Antes de mergulharmos em alguns conceitos-chave que irão ajudar você a integrar este endpoint, recomendamos que você se familiarize com:

#### Postman

Postman é uma ótima ferramenta que você pode usar para testar um endpoint. Cada requisição do Postman inclui todos os parâmetros de caminho e de corpo para ajudá-lo a entender rapidamente o que está disponível. Para saber mais sobre nossas coleções do Postman, visite nossa página ["Usando o Postman"](/tutorials/postman-getting-started).

#### Exemplos de código

Está interessado em começar a usar este endpoint com código na sua linguagem de programação preferida? Temos vários exemplos de código diferentes que você pode usar como ponto de partida na nossa [página do Github](https://github.com/xdevplatform/Twitter-API-v2-sample-code).

#### Bibliotecas de terceiros

Aproveite uma das [bibliotecas de terceiros](/tools-and-libraries) da nossa comunidade para ajudar você a começar. Você pode encontrar uma biblioteca que funcione com os endpoints v2 procurando pela tag de versão correta.

### Conceitos-chave

#### Autenticação

Todos os endpoints da X API v2 exigem que você autentique suas requisições com um conjunto de credenciais, também conhecidas como chaves e tokens.

Esses endpoints específicos exigem o uso de [OAuth 1.0a User Context](/resources/fundamentals/authentication), o que significa que você deve usar um conjunto de API keys e user Access Tokens para fazer uma requisição bem-sucedida. Os Access Tokens devem estar associados ao usuário em nome de quem você está fazendo a requisição. Se quiser gerar um conjunto de Access Tokens para outro usuário, ele deve autorizar ou autenticar seu App usando o [fluxo 3-legged OAuth](/resources/fundamentals/authentication#obtaining-access-tokens-using-3-legged-oauth-flow).

Observe que o OAuth 1.0a pode ser complicado de usar. Se você não estiver familiarizado com esse método de autenticação, recomendamos que use uma [biblioteca](/tools-and-libraries) ou uma ferramenta como o Postman para autenticar suas requisições corretamente.

#### Developer Console, Projects e developer Apps

Para obter um conjunto de credenciais de autenticação que funcione com os endpoints da X API v2, você precisa [criar uma conta de desenvolvedor](https://developer.x.com/en/portal/petition/essential/basic-info), configurar um [Project](/resources/fundamentals/developer-apps) dentro dessa conta e criar um [App de desenvolvedor](/resources/fundamentals/developer-apps) dentro desse Project. Você poderá então encontrar suas chaves e tokens dentro do seu App de desenvolvedor.

#### Rate limits

Todos os dias, milhares de desenvolvedores fazem requisições à X API. Para ajudar a gerenciar o grande volume dessas requisições, [rate limits](/x-api/fundamentals/rate-limits) são aplicados a cada endpoint, limitando o número de requisições que você pode fazer em nome do seu app ou em nome de um usuário autenticado.

Esses endpoints têm rate limit no nível do usuário, o que significa que o usuário autenticado em nome de quem você está fazendo a requisição só pode chamar o endpoint um certo número de vezes em qualquer App de desenvolvedor.

A tabela abaixo mostra os rate limits para cada endpoint.

|              |                 |                                |
| :----------- | :-------------- | :----------------------------- |
| **Endpoint** | **Método HTTP** | **Rate limit**                 |
| /2/lists     | POST            | 300 requisições por 15 minutos |
| /2/lists/:id | DELETE / PUT    | 300 requisições por 15 minutos |

***

### Exemplos de código

#### Criar uma List

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl -X POST "https://api.x.com/2/lists" \
    -H "Authorization: OAuth ..." \
    -H "Content-Type: application/json" \
    -d '{"name": "My List", "description": "A list of interesting accounts"}'
  ```

  ```python title="Python SDK" lines wrap icon="python" theme={null}
  from xdk import Client
  from xdk.oauth1_auth import OAuth1

  oauth1 = OAuth1(
      api_key="YOUR_API_KEY",
      api_secret="YOUR_API_SECRET",
      access_token="YOUR_ACCESS_TOKEN",
      access_token_secret="YOUR_ACCESS_TOKEN_SECRET"
  )

  client = Client(auth=oauth1)

  # Criar uma nova List
  response = client.lists.create(
      name="My List",
      description="A list of interesting accounts"
  )
  print(response.data)
  ```

  ```javascript title="JavaScript SDK" lines wrap icon="square-js" theme={null}
  import { Client, OAuth1 } from "@xdevplatform/xdk";

  const oauth1 = new OAuth1({
    apiKey: "YOUR_API_KEY",
    apiSecret: "YOUR_API_SECRET",
    accessToken: "YOUR_ACCESS_TOKEN",
    accessTokenSecret: "YOUR_ACCESS_TOKEN_SECRET",
  });

  const client = new Client({ oauth1 });

  // Criar uma nova List
  const response = await client.lists.create({
    name: "My List",
  });
  console.log(response.data);
  ```
</CodeGroup>

#### Atualizar uma List

<CodeGroup dropdown>
  ```bash cURL theme={null}
  curl -X PUT "https://api.x.com/2/lists/123456789" \
    -H "Authorization: OAuth ..." \
    -H "Content-Type: application/json" \
    -d '{"name": "Updated List Name"}'
  ```

  ```python title="Python SDK" lines wrap icon="python" theme={null}
  from xdk import Client
  from xdk.oauth1_auth import OAuth1

  oauth1 = OAuth1(
      api_key="YOUR_API_KEY",
      api_secret="YOUR_API_SECRET",
      access_token="YOUR_ACCESS_TOKEN",
      access_token_secret="YOUR_ACCESS_TOKEN_SECRET"
  )

  client = Client(auth=oauth1)

  # Atualizar uma List
  response = client.lists.update(
      list_id="123456789",
      name="Updated List Name"
  )
  print(response.data)
  ```

  ```javascript title="JavaScript SDK" lines wrap icon="square-js" theme={null}
  import { Client, OAuth1 } from "@xdevplatform/xdk";

  const oauth1 = new OAuth1({
    apiKey: "YOUR_API_KEY",
    apiSecret: "YOUR_API_SECRET",
    accessToken: "YOUR_ACCESS_TOKEN",
    accessTokenSecret: "YOUR_ACCESS_TOKEN_SECRET",
  });

  const client = new Client({ oauth1 });

  // Atualizar uma List
  const response = await client.lists.update("123456789", {
    name: "Updated List Name",
  });
  console.log(response.data);
  ```
</CodeGroup>
