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

# Criar Assinaturas em Massa

> Cria múltiplas assinaturas de uma só vez para beneficiários.

## Visão Geral

Este endpoint permite que parceiros criem assinaturas em massa para múltiplos beneficiários em uma única requisição. É ideal para onboarding de grupos de usuários ou empresas.

## Autenticação

<ParamField header="x-api-key" type="string" required>
  Sua chave de API fornecida pela Zentek. Exemplo: `ztk_live_...`
</ParamField>

## Request Body

O corpo da requisição deve ser um **array de objetos**, onde cada objeto representa uma assinatura.

<ParamField body="start_date" type="string" required>
  Data de início da assinatura no formato ISO 8601. Exemplo: `2024-01-01`
</ParamField>

<ParamField body="expiry_date" type="string" required>
  Data de expiração da assinatura no formato ISO 8601. Deixe vazio para assinatura sem data de término.
</ParamField>

<ParamField body="plan_id" type="string" required>
  Identificador único do plano. Exemplo: `plan_10000`
</ParamField>

<ParamField body="is_group_plan" type="boolean" required>
  Define se é uma assinatura em grupo (true/false).
</ParamField>

<ParamField body="group_size" type="string">
  Tamanho do grupo. Mínimo: 50. Obrigatório se `is_group_plan` for true.
</ParamField>

<ParamField body="benefit_holder" type="string">
  CNPJ do titular do benefício (empresa). Obrigatório se `is_group_plan` for true.
</ParamField>

<ParamField body="beneficiary" type="object" required>
  Objeto contendo os dados do beneficiário.

  <Expandable title="Campos do Beneficiário">
    <ParamField body="beneficiary.primary_card" type="string" required>
      Número do cartão principal. Exemplo: `27030474015`
    </ParamField>

    <ParamField body="beneficiary.user_card" type="string" required>
      Número do cartão do usuário.
    </ParamField>

    <ParamField body="beneficiary.name" type="string" required>
      Nome completo do beneficiário.
    </ParamField>

    <ParamField body="beneficiary.cpf" type="string" required>
      CPF do beneficiário (apenas números).
    </ParamField>

    <ParamField body="beneficiary.birth_date" type="string" required>
      Data de nascimento no formato ISO 8601. Exemplo: `1990-02-22`
    </ParamField>

    <ParamField body="beneficiary.gender" type="string" required>
      Gênero: `M` (masculino) ou `F` (feminino).
    </ParamField>

    <ParamField body="beneficiary.email" type="string" required>
      E-mail do beneficiário.
    </ParamField>

    <ParamField body="beneficiary.phone_number" type="string" required>
      Telefone com código do país. Exemplo: `+5511996042491`
    </ParamField>

    <ParamField body="beneficiary.address" type="object" required>
      Endereço completo do beneficiário.

      <Expandable title="Campos do Endereço">
        <ParamField body="beneficiary.address.zipcode" type="string" required>
          CEP (apenas números).
        </ParamField>

        <ParamField body="beneficiary.address.street" type="string" required>
          Nome da rua.
        </ParamField>

        <ParamField body="beneficiary.address.number" type="string" required>
          Número do imóvel.
        </ParamField>

        <ParamField body="beneficiary.address.complement" type="string">
          Complemento (opcional).
        </ParamField>

        <ParamField body="beneficiary.address.neighborhood" type="string" required>
          Bairro.
        </ParamField>

        <ParamField body="beneficiary.address.city" type="string" required>
          Cidade.
        </ParamField>

        <ParamField body="beneficiary.address.state" type="string" required>
          Sigla do estado (2 letras). Exemplo: `SP`
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="partner_metadata" type="string">
  String JSON contendo metadados adicionais do parceiro (opcional).
</ParamField>

<ParamField body="partner_internal_id" type="string">
  ID interno do parceiro para referência (opcional).
</ParamField>

## Exemplo de Request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.partner.zentek.com.br/v1/subscriptions" \
    -H "Content-Type: application/json" \
    -H "x-api-key: SUA_API_KEY" \
    -d '[
      {
        "start_date": "2024-01-01",
        "expiry_date": "2025-01-01",
        "plan_id": "plan_10000",
        "is_group_plan": false,
        "group_size": "",
        "benefit_holder": "",
        "beneficiary": {
          "primary_card": "27030474015",
          "user_card": "27030474015",
          "name": "João Silva",
          "cpf": "34567898233",
          "birth_date": "1990-02-22",
          "gender": "M",
          "email": "joao.silva@example.com",
          "address": {
            "zipcode": "06454040",
            "street": "Rua Exemplo",
            "number": "123",
            "complement": "Apto 45",
            "neighborhood": "Centro",
            "city": "São Paulo",
            "state": "SP"
          },
          "phone_number": "+5511996042491"
        },
        "partner_metadata": "{\"customer_id\": \"12345\"}"
      }
    ]'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.partner.zentek.com.br/v1/subscriptions', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': 'SUA_API_KEY'
    },
    body: JSON.stringify([
      {
        start_date: '2024-01-01',
        expiry_date: '2025-01-01',
        plan_id: 'plan_10000',
        is_group_plan: false,
        beneficiary: {
          primary_card: '27030474015',
          user_card: '27030474015',
          name: 'João Silva',
          cpf: '34567898233',
          birth_date: '1990-02-22',
          gender: 'M',
          email: 'joao.silva@example.com',
          address: {
            zipcode: '06454040',
            street: 'Rua Exemplo',
            number: '123',
            neighborhood: 'Centro',
            city: 'São Paulo',
            state: 'SP'
          },
          phone_number: '+5511996042491'
        }
      }
    ])
  });
  ```
</CodeGroup>

## Response

<ResponseField name="result" type="string">
  Resultado geral da operação.
</ResponseField>

<ResponseField name="total_created_items" type="number">
  Número total de assinaturas criadas com sucesso.
</ResponseField>

<ResponseField name="total_not_created_items" type="number">
  Número total de assinaturas que falharam.
</ResponseField>

<ResponseField name="not_created_items" type="array">
  Lista de itens que não foram criados, com detalhes dos erros.

  <Expandable title="Estrutura do Erro">
    <ResponseField name="cpf" type="string">
      CPF do beneficiário que falhou.
    </ResponseField>

    <ResponseField name="benefit_holder" type="string">
      CNPJ do titular (se aplicável).
    </ResponseField>

    <ResponseField name="plan_id" type="string">
      ID do plano.
    </ResponseField>

    <ResponseField name="errors" type="array">
      Lista de mensagens de erro.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 - Sucesso theme={null}
  {
    "result": "success",
    "total_created_items": 1,
    "total_not_created_items": 0,
    "not_created_items": []
  }
  ```

  ```json 401 - Não Autorizado theme={null}
  {
    "message": "Não autorizado"
  }
  ```

  ```json 500 - Erro do Servidor theme={null}
  {
    "message": "Erro de Aplicação"
  }
  ```
</ResponseExample>
