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

# Update subscription

> Updates a given subscription and items. Update cannot be partial, a full request mus be sent.



## OpenAPI

````yaml put /subscriptions/{subscriptionId}
openapi: 3.0.1
info:
  title: Plude
  description: Headless subscription management and recurring billing.
  termsOfService: https://plude.com/terms
  contact:
    name: Corporate Contact
    url: https://plude.com/contact
  license:
    name: License
    url: https://plude.com/license
  version: v4.2024.7.1
servers: []
security:
  - Bearer: []
paths:
  /subscriptions/{subscriptionId}:
    put:
      tags:
        - Subscriptions
      summary: Update subscription
      description: >-
        Updates a given subscription and items. Update cannot be partial, a full
        request mus be sent.
      parameters:
        - name: subscriptionId
          in: path
          description: Id of the given subscription.
          required: true
          schema:
            type: string
            format: uuid
        - name: x-environment
          in: header
          description: >-
            Configure which environment the request will handle. If the provided
            credentials do not allow access to this specified environment, a 403
            Forbidden response is returned.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: Update request of subscription.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSubscriptionRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: The subscription is not found.
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Internal Server Error
components:
  schemas:
    UpdateSubscriptionRequest:
      required:
        - start
      type: object
      properties:
        start:
          type: string
          description: Sets a start date for the subscription.
          format: date
        end:
          type: string
          description: Sets an end date for the subscription. Must be later than the Start.
          format: date
          nullable: true
        autoRenewal:
          type: boolean
          description: >-
            If set, the subscription will be automatically renewed. An End must
            be set to allow automatically renewal.
          nullable: true
        description:
          type: string
          description: Sets a description for the subscription. 4000 characters maximum.
          nullable: true
        items:
          type: array
          items:
            $ref: '#/components/schemas/UpdateSubscriptionItemRequest'
          description: "Items to update. If not set, the subscription will be updated without changing the items.\r\n\r\nPass an empty array to remove all charges."
          nullable: true
      additionalProperties: false
    Subscription:
      type: object
      properties:
        id:
          type: string
          description: Id of subscription.
          format: uuid
        handle:
          type: string
          description: A unique handle of the subscription.
          nullable: true
        currency:
          type: string
          description: Currency of the subscription.
          format: currency
          example: USD
        term:
          $ref: '#/components/schemas/DatePeriod'
        autoRenewal:
          type: boolean
          description: >-
            For termed subscription, auto renewal is optional and will
            automatically renew the subscription.
        items:
          type: array
          items:
            $ref: '#/components/schemas/SubscriptionItem'
          description: Items of the subscription.
          nullable: true
        createdAt:
          type: string
          format: date-time
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    UpdateSubscriptionItemRequest:
      required:
        - priceId
        - productId
      type: object
      properties:
        id:
          type: string
          description: Id of the item to update. If not set, a new item will be added.
          format: uuid
          nullable: true
        quantity:
          type: number
          description: Quantity of the item.
          format: double
        productId:
          type: string
          description: Product of the item.
          format: uuid
        priceId:
          type: string
          description: Price of the item.
          format: uuid
        billAt:
          type: string
          description: >-
            Sets the next billing date of the item. You should optionally set
            the start date of the billing period.
          format: date-time
          nullable: true
        periodFrom:
          type: string
          description: "Sets the start of the billing period. \r\nPeriods are calculated from this date or billAt and applies to invoice items upon billing.."
          format: date
          nullable: true
        prorate:
          $ref: '#/components/schemas/ProrationOptions'
      additionalProperties: false
    DatePeriod:
      type: object
      properties:
        start:
          type: string
          format: date
        end:
          type: string
          format: date
          nullable: true
      additionalProperties: false
    SubscriptionItem:
      type: object
      properties:
        id:
          type: string
          description: Id of the subscription item.
          format: uuid
        billAt:
          type: string
          description: >-
            Date and time when to bill the subscription item. Items that bill on
            the same time is grouped on the same invoice.
          format: date-time
          nullable: true
        period:
          $ref: '#/components/schemas/DatePeriod'
        quantity:
          type: number
          description: The quantity or count of units to be billed. Precision to 4.
          format: double
        product:
          $ref: '#/components/schemas/SubscriptionItemProduct'
        price:
          $ref: '#/components/schemas/SubscriptionItemPrice'
      additionalProperties: false
    ProrationOptions:
      type: object
      properties:
        strategy:
          $ref: '#/components/schemas/ProrationStrategy'
        fromDate:
          type: string
          description: The date to prorate from.
          format: date
      additionalProperties: false
    SubscriptionItemProduct:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
      additionalProperties: false
    SubscriptionItemPrice:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
      additionalProperties: false
    ProrationStrategy:
      enum:
        - no_proration
        - remaining_period
        - full_period
      type: string
  securitySchemes:
    Bearer:
      type: http
      description: "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] and then your token in the text input below.\r\n\r\nExample: \"Bearer 12345abcdef\""
      scheme: Bearer

````