# Gerenciamento de Planos Customizados

Organizações corporativas agora podem criar planos de assinatura customizados e atribuí-los a organizações filhas com configuração de quantidade de documentos, créditos de verificação, tier e comportamento de renovação.

#### Como utilizar

1. Crie um plano de assinatura usando `createSubscriptionPlan`
2. Liste seus planos com `subscriptionPlans`
3. Atribua planos a organizações filhas usando `updateOrganizationSubscription`

### Queries

#### `subscriptionPlans`

```graphql
query SubscriptionPlans(
  $id: String,      # Opcional: ID específico do plano para recuperar
  $limit: Int,      # Opcional: Máximo de resultados por página (padrão: 60, máx: 60)
  $page: Int        # Opcional: Número da página (padrão: 1)
) {
  subscriptionPlans(id: $id, limit: $limit, page: $page) {
    # Consulte o tipo CorporatePlan abaixo
    id
    display_name
    document_amount
    credit_amount
    credits_recurrence_method
    interval
    interval_type
    tier
  }
}
```

### Mutations

#### `createSubscriptionPlan`

```graphql
mutation CreateSubscriptionPlan(
  $plan: SubscriptionPlanInput!  # Consulte SubscriptionPlanInput abaixo
) {
  createSubscriptionPlan(plan: $plan) {
    # Consulte o tipo CorporatePlan abaixo
    id
    display_name
    document_amount
    credit_amount
    credits_recurrence_method
    interval
    interval_type
    tier
  }
}
```

#### `updateSubscriptionPlan`

```graphql
mutation UpdateSubscriptionPlan(
  $id: String!,                  # ID do plano a ser atualizado
  $plan: SubscriptionPlanInput!  # Consulte SubscriptionPlanInput abaixo
) {
  updateSubscriptionPlan(id: $id, plan: $plan) {
    # Consulte o tipo CorporatePlan abaixo
    id
    display_name
    document_amount
    credit_amount
    credits_recurrence_method
    interval
    interval_type
    tier
  }
}
```

#### `updateOrganizationSubscription`

```graphql
mutation UpdateOrganizationSubscription(
  $organization_id: Int!,              # ID da organização filha para atualizar
  $plan_id: String!,                   # ID do plano para atribuir
  $renew_date: InternationalDateScalar # Opcional: Data de renovação customizada (ex: '2026-12-01') (Padrão: Próximo intervalo de recorrência)
) {
  updateOrganizationSubscription(
    organization_id: $organization_id,
    plan_id: $plan_id,
    renew_date: $renew_date
  ) {
    # Consulte o tipo Subscription abaixo
    name
    documents
    credits
    credits_bonus
    renew_at
    bought_at
  }
}
```

### Referência do Schema

#### Tipos de Input

**`SubscriptionPlanInput`**

```graphql
input SubscriptionPlanInput {
  display_name: String!                    # Nome do plano
  document_amount: Int!                    # Quantidade de documentos disponíveis durante o intervalo (> 0)
  credit_amount: Int!                      # Créditos de verificação disponíveis durante o intervalo (> 0)
  interval: Int                            # Fator do intervalo (padrão: 1) (ex: interval: 1 & interval_type: MONTH ... renovação a cada 1 mês)
  interval_type: IntervalTypeEnum          # Tipo do intervalo (padrão: MONTH) (ex: interval: 1 & interval_type: MONTH ... renovação a cada 1 mês)
  tier: TierEnum                           # Tier do plano (padrão: FREE)
  credits_recurrence_method: CreditsRecurrenceEnum # Comportamento dos créditos de verificação (padrão: DETACHED)
}
```

#### Tipos de Retorno

**`CorporatePlan`**

```graphql
type CorporatePlan {
  id: String!                                       # ID do plano
  display_name: String!                             # Nome de exibição do plano
  document_amount: Int!                             # Quantidade de documentos disponíveis durante o intervalo
  credit_amount: Int!                               # Créditos de verificação por intervalo
  credits_recurrence_method: CreditsRecurrenceEnum! # Comportamento de renovação dos créditos
  interval: Int!                                    # Fator do intervalo de cobrança
  interval_type: IntervalTypeEnum!                  # Tipo do intervalo de cobrança
  tier: TierEnum!                                   # Nível do tier do plano
}
```

**`Subscription`**

```graphql
type Subscription {
  name: String                     # Nome de exibição do plano
  documents: Int!                  # Contagem de documentos disponíveis
  credits: Int                     # Créditos de verificação disponíveis
  credits_bonus: Int               # Créditos de verificação destacados (Ao usar a opção DETACHED)
  renew_at: TimestampScalar        # Data da próxima renovação automática
  bought_at: TimestampScalar       # Data de compra/criação
}
```

#### Enums

**`CreditsRecurrenceEnum`**

* `DETACHED`: O saldo de créditos de verificação da renovação é um valor independente, facilitando que a renovação funcione junto com créditos adquiridos
* `OVERRIDE`: O saldo de créditos de verificação é resetado para a quantidade do plano se estiver menor na renovação

**`IntervalTypeEnum`**

* `DAY`: Atualização diária
* `WEEK`: Atualização semanal
* `MONTH`: Atualização mensal
* `YEAR`: Atualização anual

**`TierEnum`**

* `FREE`: Este tier pode usar apenas recursos básicos
* `PROFESSIONAL`: Este tier permite o uso de todos os recursos (Marcado com "Pro" na plataforma)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.autentique.com.br/api/corporate/mutations/gerenciamento-de-planos-customizados.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
