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

# Criar Assinatura

> Cria assinatura a partir de um pedido pai

#### Escopo

```bash theme={null}
    write subscriptions
```

## Request

| Campo             | Tipo     | Obrigatório | Descrição                            |
| ----------------- | -------- | ----------- | ------------------------------------ |
| `parent_order_id` | `string` | Sim         | ID do pedido de origem da assinatura |

## Response

* `201`: Assinatura criada.
* `200`: Pedido já possui assinatura (retorna assinatura existente).

## Pré-condições

* O pedido informado deve existir.
* O pedido deve ser do tipo `subscription`.
* O pedido precisa ter oferta de assinatura.

## Erros

* `400`: `parent_order_id` ausente.
* `400`: pedido não é de assinatura.
* `400`: pedido sem oferta, cliente, produto ou método de pagamento associado.
* `404`: pedido não encontrado ou não pertence à sua conta.


## OpenAPI

````yaml POST /public_api/subscriptions/
openapi: 3.0.3
info:
  title: Cakto API
  version: 1.0.0
  description: Documentação da API pública do Cakto.
servers:
  - url: https://api.cakto.com.br
    description: Cakto API
security: []
paths:
  /public_api/subscriptions/:
    post:
      tags:
        - subscriptions
      description: >-
        Public API for managing subscriptions, inherits from
        SubscriptionAPIView,

        customizes the schema generation and authentication/permission settings.
      operationId: subscriptions_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionCreateRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SubscriptionCreateRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SubscriptionCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionOwnerFlex'
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionOwnerFlex'
          description: ''
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionError'
          description: Dados inválidos para criação da assinatura.
        '401':
          description: Request não autenticado devido à ausência ou invalidez do token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedError'
              examples:
                Token ausente ou inválido:
                  $ref: '#/components/examples/UnauthenticatedErrorExample'
      security:
        - OAuth Token: []
components:
  schemas:
    SubscriptionCreateRequest:
      type: object
      properties:
        parent_order_id:
          type: string
          title: Id do pedido de origem
          description: Identificador do pedido pai usado para criar a assinatura
      required:
        - parent_order_id
    SubscriptionOwnerFlex:
      type: object
      properties:
        id:
          type: string
          title: Identificador
          description: Identificador único da Assinatura no sistema
          maxLength: 255
        status:
          allOf:
            - $ref: '#/components/schemas/SubscriptionStatusEnum'
          description: |-
            Status da Assinatura

            * `active` - Ativa
            * `inactive` - Inativa
            * `canceled` - Cancelada
            * `expired` - Expirada
            * `paused` - Pausada
            * `trial` - Em período de teste
        current_period:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          title: Período Atual
          description: 'Número da recorrência atual. (ex: 1 = primeiro pagamento)'
        recurrence_period:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          title: Período de recorrência (em dias)
          description: Quantidade de dias entre cada pagamento da assinatura
        quantity_recurrences:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          title: Quantidade de recorrências
          description: Quantidade vezes que a assinatura será cobrada
        trial_days:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          title: Dias de teste
          description: Quantidade de dias de teste gratuito da assinatura
        max_retries:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          title: Número máximo de retentativas de cobrança
          description: Quantidade máxima de retentativas de cobrança em caso de falha
        amount:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          title: Valor
          description: Valor da Assinatura
        retry_interval:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          title: Dias entre retentativas
          description: Intervalo entre retentativas de cobrança (dias)
        paid_payments_quantity:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          title: Pagamentos Efetuados
          description: Quantidade de pagamentos pagos para esta assinatura
        retention:
          type: string
          title: Retenção
          description: Quantidade de tempo que a assinatura permaneceu ativa
        parent_order:
          type: string
          title: Pedido de Origem
          description: Pedido de Origem da Assinatura
        paymentMethod:
          type: string
          title: Método de Pagamento
          description: Método de pagamento utilizado na Assinatura
        customer:
          type: string
          readOnly: true
        product:
          type: string
          description: Produto vendido na Assinatura
          title: Produto
        offer:
          type: string
          title: Oferta
          description: Oferta vendida na Assinatura
        orders:
          type: array
          items:
            type: string
            title: Id do Pedido
            description: Identificador único do pedido no sistema
        next_payment_date:
          type: string
          format: date-time
          nullable: true
          title: Próximo Pagamento
          description: Data e hora estimada do próximo pagamento
        createdAt:
          type: string
          format: date-time
          readOnly: true
          title: Data de criação
          description: Data e hora de criação
        updatedAt:
          type: string
          format: date-time
          readOnly: true
          title: Data de atualização
          description: Data e hora da última atualização
        canceledAt:
          type: string
          format: date-time
          nullable: true
          title: Data de cancelamento
          description: Data e hora em que a assinatura foi cancelada
      required:
        - amount
        - createdAt
        - customer
        - offer
        - orders
        - parent_order
        - paymentMethod
        - product
        - updatedAt
    SubscriptionError:
      type: object
      properties:
        detail:
          type: string
      required:
        - detail
    UnauthenticatedError:
      type: object
      properties:
        detail:
          type: string
    SubscriptionStatusEnum:
      enum:
        - active
        - inactive
        - canceled
        - expired
        - paused
        - trial
      type: string
      description: |-
        * `active` - Ativa
        * `inactive` - Inativa
        * `canceled` - Cancelada
        * `expired` - Expirada
        * `paused` - Pausada
        * `trial` - Em período de teste
  examples:
    UnauthenticatedErrorExample:
      summary: Token ausente ou inválido
      description: Token ausente ou inválido
      value:
        detail: As credenciais de autenticação não foram fornecidas.
  securitySchemes:
    OAuth Token:
      type: http
      scheme: bearer
      in: header
      name: Authorization
      description: >-
        Token de autenticação do tipo `Bearer {access_token}`, onde
        `{access_token}` é o token obtido no fluxo de
        [autenticação](/authentication).

````