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

# [Instances] Cancel a compute instance at the end of its billing period

> Requests cancellation at the end of the current billing period, exactly as cancel_instance does: nothing is deleted now. The instance keeps running and billing until billing_end_date, and revoke_instance_cancellation (POST revoke-cancellation) withdraws the request until then. An optional JSON body takes the fields of cancel_instance: reason_code, among too_expensive, no_longer_needed, missing_feature, technical_issue, switching_provider, other, defaulting to no_longer_needed; and reason, a sentence of at least seven words, defaulting to a fixed one. Idempotent: an instance whose cancellation is already requested, or that is already terminated or cancelled, answers 202 with its current state and nothing is requested again.



## OpenAPI

````yaml https://api.onetsolutions.net/schema delete /v1/organizations/{organization_id}/projects/{project_id}/compute/instances/{id}
openapi: 3.0.3
info:
  title: OnetSolutions API
  version: v1 (v1)
  description: >

    ## Overview


    The OnetSolutions API provides programmatic access to manage your cloud
    infrastructure, domains, and web hosting services.


    ## Authentication


    All API requests require authentication using one of the following methods:


    - **JWT Token**: Obtain a token via login endpoints and include it in the
    `Authorization: Bearer <token>` header

    - **API Key**: Generate an API key from your account settings and use it as
    `Authorization: Bearer sk-onetsolutions-...`


    ## Rate Limiting


    API requests are rate-limited to ensure fair usage:

    - **Anonymous**: 60 requests per minute, per client IP address

    - **Authenticated**: 5000 requests per hour, per user


    Some endpoints, such as login and sign-up, apply stricter limits of their
    own.

    A request over the limit gets a `429` response whose `Retry-After` header
    gives the wait in seconds.


    ## Pagination


    Most list endpoints return paginated results. Use the `page` and `page_size`
    query parameters

    (at most 100 results per page). The response carries `count`, `next`,
    `previous`, `page`, `page_size`,

    `total_pages` and the `results` themselves.


    ## Error Handling


    The API uses standard HTTP status codes:

    - `200` Success

    - `201` Created

    - `204` No Content

    - `400` Bad Request

    - `401` Unauthorized

    - `403` Forbidden

    - `404` Not Found

    - `409` Conflict

    - `429` Too Many Requests

    - `500` Internal Server Error

    - `503` Service Unavailable


    Error responses carry a JSON body with `detail`, a human-readable message,
    and `code`, a stable

    machine-readable error code. Some errors add `context` with structured
    details, and `error`

    repeats `detail` for older clients. A request whose fields fail validation
    gets a `400` whose body maps each

    invalid field to its list of messages. A few older endpoints still answer
    with `error` alone.
servers:
  - url: https://api.onetsolutions.net
    description: Production
security: []
tags:
  - name: Authentication
    description: >-
      Login, passwordless authentication, MFA, OAuth providers, and token
      management.
  - name: Organizations
    description: >-
      Organization management, members, roles, modules, audit logs, and
      notification settings.
  - name: Projects
    description: Project management, team members, and project-scoped resources.
  - name: Compute
    description: >-
      Cloud instances, volumes, snapshots, backups, VPCs, firewalls, SSH keys,
      uptime monitors, and instance tasks.
  - name: Billing
    description: >-
      Shopping cart, orders, invoices, payments, payment methods, gateways,
      promo codes, and balance management.
  - name: Domains
    description: >-
      Domain availability, registration, transfers, DNS zones, DNS records, and
      TLD information.
  - name: Web Hosting
    description: >-
      cPanel-based web hosting, emails, databases, subdomains, FTP accounts,
      addon domains, and SSL certificates.
paths:
  /v1/organizations/{organization_id}/projects/{project_id}/compute/instances/{id}:
    delete:
      tags:
        - Compute
      summary: '[Instances] Cancel a compute instance at the end of its billing period'
      description: >-
        Requests cancellation at the end of the current billing period, exactly
        as cancel_instance does: nothing is deleted now. The instance keeps
        running and billing until billing_end_date, and
        revoke_instance_cancellation (POST revoke-cancellation) withdraws the
        request until then. An optional JSON body takes the fields of
        cancel_instance: reason_code, among too_expensive, no_longer_needed,
        missing_feature, technical_issue, switching_provider, other, defaulting
        to no_longer_needed; and reason, a sentence of at least seven words,
        defaulting to a fixed one. Idempotent: an instance whose cancellation is
        already requested, or that is already terminated or cancelled, answers
        202 with its current state and nothing is requested again.
      operationId: delete_instance
      parameters:
        - in: path
          name: id
          schema:
            type: string
            format: uuid
          description: A UUID string identifying this Instance.
          required: true
        - in: path
          name: organization_id
          schema:
            type: string
          description: Unique identifier of the organization that owns the resource.
          required: true
        - in: path
          name: project_id
          schema:
            type: string
          description: Unique identifier of the project containing the resource.
          required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Instance'
          description: >-
            Cancellation requested, or already requested or effective; the
            instance in its state
        '400':
          description: Invalid reason_code or reason
        '401':
          description: Authentication credentials missing or invalid
        '403':
          description: Insufficient permissions to cancel this instance
        '404':
          description: Instance not found
      security:
        - BearerAuth: []
components:
  schemas:
    Instance:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        organization_id:
          type: string
          format: uuid
          readOnly: true
        project_id:
          type: string
          format: uuid
          readOnly: true
        order_id:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: >-
            The order this instance was created from: the local_order_id
            returned by create_instance
        name:
          type: string
          description: Instance hostname
          maxLength: 255
        status:
          enum:
            - pending
            - provisioning
            - active
            - suspended
            - terminated
            - cancelled
            - error
          type: string
          x-spec-enum-id: 61c0ec0d4afc3ad7
          readOnly: true
          description: |-
            Billing status

            * `pending` - Pending
            * `provisioning` - Provisioning
            * `active` - Active
            * `suspended` - Suspended
            * `terminated` - Terminated
            * `cancelled` - Cancelled
            * `error` - Error
        size:
          allOf:
            - $ref: '#/components/schemas/InstanceSize'
          readOnly: true
        location:
          allOf:
            - $ref: '#/components/schemas/DatacenterLocation'
          readOnly: true
        vpc:
          allOf:
            - $ref: '#/components/schemas/VPC'
          readOnly: true
        vpc_id:
          type: string
          format: uuid
          writeOnly: true
          nullable: true
        image:
          allOf:
            - $ref: '#/components/schemas/InstanceImage'
          readOnly: true
        os_name:
          type: string
          readOnly: true
          description: Operating system name
        password_reset_enabled:
          type: boolean
          readOnly: true
          description: >-
            Chosen at install: whether the console may change the OS password
            through cloud-init
        rescue_expires_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
          description: >-
            Set while the instance boots on the rescue ISO: when it is taken
            back out
        primary_ipv4:
          type: string
          nullable: true
          readOnly: true
        primary_ipv6:
          type: string
          nullable: true
          readOnly: true
        ip_addresses:
          type: array
          items:
            $ref: '#/components/schemas/IPAddress'
          readOnly: true
        volume_config_id:
          type: string
          format: uuid
          readOnly: true
          nullable: true
        volumes:
          type: array
          items:
            $ref: '#/components/schemas/VolumeSummary'
          readOnly: true
        billing_cycle:
          enum:
            - free
            - one_time
            - hourly
            - monthly
            - quarterly
            - semi_annually
            - annually
            - biennially
            - triennially
          type: string
          description: |-
            * `free` - Free
            * `one_time` - One Time
            * `hourly` - Hourly
            * `monthly` - Monthly
            * `quarterly` - Quarterly
            * `semi_annually` - Semi-Annually
            * `annually` - Annually
            * `biennially` - Biennially
            * `triennially` - Triennially
          x-spec-enum-id: 99741277a111fd11
          readOnly: true
        recurring_amount:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
          description: Amount billed at each renewal
        billing_start_date:
          type: string
          format: date-time
          readOnly: true
        billing_end_date:
          type: string
          format: date-time
          readOnly: true
          nullable: true
          description: For prepaid only
        next_billing_date:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        cancellation_requested_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
          description: When cancellation was requested, effective at billing_end_date
        cancellation_reason:
          type: string
          readOnly: true
          description: Reason provided for cancellation request
        cancellation_reason_code:
          enum:
            - too_expensive
            - no_longer_needed
            - missing_feature
            - technical_issue
            - switching_provider
            - other
          type: string
          x-spec-enum-id: 2eee54e29cb0b2e5
          readOnly: true
          description: |-
            Reason picked for cancellation

            * `too_expensive` - Too expensive
            * `no_longer_needed` - No longer needed
            * `missing_feature` - Missing feature
            * `technical_issue` - Technical issue
            * `switching_provider` - Moving to another provider
            * `other` - Other
        bandwidth_used_gb:
          type: string
          pattern: ^-?\d{0,13}(?:\.\d{0,2})?$
          readOnly: true
        tags:
          type: array
          items:
            type: string
            maxLength: 50
          description: Custom tags
        is_active:
          type: boolean
          readOnly: true
        is_installed:
          type: boolean
          readOnly: true
          description: Whether the instance OS/service has been installed
        snapshot_enabled:
          type: boolean
          readOnly: true
          description: Snapshot option active on the service
        snapshot_billing:
          type: object
          additionalProperties: {}
          readOnly: true
        backup_enabled:
          type: boolean
          readOnly: true
          description: Backup option active on the service
        control_panel:
          allOf:
            - $ref: '#/components/schemas/InstanceControlPanel'
          nullable: true
          readOnly: true
        active_addons:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
          readOnly: true
        can_run_windows:
          type: boolean
          readOnly: true
        gpu_capable:
          type: boolean
          readOnly: true
        state_sync:
          allOf:
            - $ref: '#/components/schemas/InstanceStateSync'
          readOnly: true
        agent_info:
          allOf:
            - $ref: '#/components/schemas/InstanceAgentInfo'
          readOnly: true
        locked:
          type: boolean
          readOnly: true
        lock_reason:
          enum:
            - backup
            - restore
            - snapshot
            - migration
            - other
            - null
          type: string
          description: |-
            * `backup` - Backup
            * `restore` - Restore
            * `snapshot` - Snapshot
            * `migration` - Migration
            * `other` - Other
          x-spec-enum-id: 9a07fd674497390b
          nullable: true
          readOnly: true
        restart_required:
          type: boolean
          readOnly: true
          description: A configuration change waits for a full stop and start of the VM
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
      required:
        - active_addons
        - agent_info
        - backup_enabled
        - bandwidth_used_gb
        - billing_cycle
        - billing_end_date
        - billing_start_date
        - can_run_windows
        - cancellation_reason
        - cancellation_reason_code
        - cancellation_requested_at
        - control_panel
        - created
        - gpu_capable
        - id
        - image
        - ip_addresses
        - is_active
        - is_installed
        - location
        - lock_reason
        - locked
        - modified
        - name
        - next_billing_date
        - order_id
        - organization_id
        - os_name
        - password_reset_enabled
        - primary_ipv4
        - primary_ipv6
        - project_id
        - recurring_amount
        - rescue_expires_at
        - restart_required
        - size
        - snapshot_billing
        - snapshot_enabled
        - state_sync
        - status
        - volume_config_id
        - volumes
        - vpc
    InstanceSize:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          description: 'Ex: VPS-S, VPS-M, VPS-L'
          maxLength: 100
        slug:
          type: string
          description: 'Ex: vps-s, vps-m'
          maxLength: 50
          pattern: ^[-a-zA-Z0-9_]+$
        cpu_model:
          enum:
            - e5-2680-v4
            - epyc-7443
            - epyc-9554
          type: string
          x-spec-enum-id: e52bd36ae707aae4
          description: |-
            CPU model

            * `e5-2680-v4` - E5-2680 v4
            * `epyc-7443` - AMD EPYC 7443
            * `epyc-9554` - AMD EPYC 9554
        vcpu:
          type: integer
          maximum: 4294967295
          minimum: 0
          format: int64
          description: Number of vCPUs
        ram_mb:
          type: integer
          maximum: 4294967295
          minimum: 0
          format: int64
          description: RAM in MB
        bandwidth_mbps:
          type: integer
          maximum: 4294967295
          minimum: 0
          format: int64
          description: Bandwidth in Mb/s
        is_active:
          type: boolean
          description: >-
            Withdrawn from the catalogue: no longer orderable, while existing
            services keep running on it.
        description:
          type: string
        available_volumes:
          type: array
          items:
            $ref: '#/components/schemas/InstanceSizeVolume'
          readOnly: true
        pricing_options:
          type: array
          items:
            $ref: '#/components/schemas/InstanceSizePricing'
          readOnly: true
        available_addons:
          type: array
          items:
            $ref: '#/components/schemas/InstanceSizeAddon'
          readOnly: true
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
      required:
        - available_addons
        - available_volumes
        - bandwidth_mbps
        - created
        - id
        - modified
        - name
        - pricing_options
        - ram_mb
        - slug
        - vcpu
    DatacenterLocation:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          readOnly: true
        slug:
          type: string
          maxLength: 50
          pattern: ^[-a-zA-Z0-9_]+$
        country_code:
          type: string
          description: 'Ex: FR, DE'
          maxLength: 2
        is_active:
          type: boolean
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
      required:
        - country_code
        - created
        - id
        - modified
        - name
        - slug
    VPC:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          maxLength: 255
        cidr_block:
          type: string
          description: 'Ex: 10.0.0.0/16'
          maxLength: 50
        location:
          allOf:
            - $ref: '#/components/schemas/DatacenterLocation'
          readOnly: true
        location_id:
          type: string
          format: uuid
          writeOnly: true
        is_active:
          type: boolean
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
      required:
        - cidr_block
        - created
        - id
        - location
        - modified
        - name
    InstanceImage:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        organization_id:
          type: string
          format: uuid
          readOnly: true
          nullable: true
        name:
          type: string
          description: 'Ex: Ubuntu 22.04 LTS, Debian 12'
          maxLength: 255
        slug:
          type: string
          description: 'Ex: ubuntu-22-04, debian-12'
          maxLength: 50
          pattern: ^[-a-zA-Z0-9_]+$
        description:
          type: string
        visibility:
          enum:
            - public
            - private
          type: string
          x-spec-enum-id: 076d8e197dd30156
          description: |-
            Public images are available to all, private to organization only

            * `public` - Public
            * `private` - Private
        os_name:
          type: string
          description: 'Ex: Ubuntu, Debian, CentOS'
          maxLength: 100
        os_version:
          type: string
          description: 'Ex: 22.04, 12, 8'
          maxLength: 50
        os_architecture:
          type: string
          description: 'Ex: x86_64, aarch64'
          maxLength: 20
        language:
          type: string
          readOnly: true
          description: Language code (fr, en, cn, etc.)
        is_active:
          type: boolean
        is_featured:
          type: boolean
          description: Featured public images
        is_windows:
          type: boolean
          readOnly: true
        requires_license_addon:
          type: boolean
          readOnly: true
        min_disk_gb:
          type: integer
          maximum: 4294967295
          minimum: 0
          format: int64
          description: Minimum disk size required (GB)
        min_ram_mb:
          type: integer
          maximum: 4294967295
          minimum: 0
          format: int64
          description: Minimum RAM required (MB)
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
      required:
        - created
        - id
        - is_windows
        - language
        - modified
        - name
        - organization_id
        - os_name
        - os_version
        - requires_license_addon
        - slug
    IPAddress:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        address:
          type: string
        ip_type:
          enum:
            - ipv4
            - ipv6
          type: string
          description: |-
            * `ipv4` - IPv4
            * `ipv6` - IPv6
          x-spec-enum-id: 7aa5eccc95045be6
        interface:
          type: integer
          readOnly: true
          description: Network interface index (0=net0, 1=net1, etc.)
        netmask:
          type: string
          readOnly: true
        gateway:
          type: string
          readOnly: true
        network_range:
          type: string
          nullable: true
          readOnly: true
        mac_address:
          type: string
          readOnly: true
        is_primary:
          type: boolean
          readOnly: true
        reverse_dns:
          type: string
          maxLength: 255
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
      required:
        - address
        - created
        - gateway
        - id
        - interface
        - ip_type
        - is_primary
        - mac_address
        - modified
        - netmask
        - network_range
    VolumeSummary:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          readOnly: true
          description: Volume name
        size_gb:
          type: integer
          readOnly: true
          description: Volume size in GB
        status:
          enum:
            - pending
            - creating
            - available
            - attached
            - detached
            - deleting
            - deleted
            - error
          type: string
          description: |-
            * `pending` - Pending
            * `creating` - Creating
            * `available` - Available
            * `attached` - Attached
            * `detached` - Detached
            * `deleting` - Deleting
            * `deleted` - Deleted
            * `error` - Error
          x-spec-enum-id: 846eb9b3e36e98dc
          readOnly: true
        disk_type:
          enum:
            - ssd
            - nvme
            - unknown
          type: string
          x-spec-enum-id: 44a7f459d03fa685
          readOnly: true
          description: |-
            Disk type (ssd, nvme)

            * `ssd` - SSD
            * `nvme` - NVMe
            * `unknown` - Unknown
        location:
          allOf:
            - $ref: '#/components/schemas/DatacenterLocation'
          readOnly: true
        price_monthly:
          type: string
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          readOnly: true
          description: Prix mensuel
        is_active:
          type: boolean
          readOnly: true
        created:
          type: string
          format: date-time
          readOnly: true
      required:
        - created
        - disk_type
        - id
        - is_active
        - location
        - name
        - price_monthly
        - size_gb
        - status
    InstanceControlPanel:
      type: object
      properties:
        name:
          type: string
          readOnly: true
        slug:
          type: string
          readOnly: true
        status:
          enum:
            - pending
            - installing
            - installed
            - failed
          type: string
          description: |-
            * `pending` - Pending
            * `installing` - Installing
            * `installed` - Installed
            * `failed` - Failed
          x-spec-enum-id: 494a72efcfca4f2a
          readOnly: true
        access_url:
          type: string
          nullable: true
          readOnly: true
        instructions:
          type: string
          readOnly: true
        docs_url:
          type: string
          format: uri
          readOnly: true
        install_minutes_min:
          type: integer
          readOnly: true
        install_minutes_max:
          type: integer
          readOnly: true
        has_credentials:
          type: boolean
          readOnly: true
      required:
        - access_url
        - docs_url
        - has_credentials
        - install_minutes_max
        - install_minutes_min
        - instructions
        - name
        - slug
        - status
    InstanceStateSync:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        vm_status:
          enum:
            - running
            - stopped
            - paused
            - shutoff
            - crashed
            - suspended
            - unknown
          type: string
          description: |-
            * `running` - Running
            * `stopped` - Stopped
            * `paused` - Paused
            * `shutoff` - Shut off
            * `crashed` - Crashed
            * `suspended` - Suspended
            * `unknown` - Unknown
          x-spec-enum-id: c0132ee74947bc36
          readOnly: true
        uptime:
          type: integer
          maximum: 4294967295
          minimum: 0
          format: int64
          description: Uptime en secondes
        cpu_usage:
          type: string
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          description: Usage CPU en %
        memory_usage_mb:
          type: integer
          maximum: 4294967295
          minimum: 0
          format: int64
          description: Mémoire utilisée en MB
        disk_usage_gb:
          type: string
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          description: Disque utilisé en GB
        network_in_bytes:
          type: integer
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          format: int64
          description: Bytes reçus
        network_out_bytes:
          type: integer
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          format: int64
          description: Bytes envoyés
        last_synced_at:
          type: string
          format: date-time
          readOnly: true
          description: Last time the power state was read
      required:
        - id
        - last_synced_at
        - vm_status
    InstanceAgentInfo:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        agent_available:
          type: boolean
          readOnly: true
          description: Guest agent a répondu lors de la dernière collecte
        os_id:
          type: string
          readOnly: true
          description: ID OS (ubuntu, debian, ...)
        os_name:
          type: string
          readOnly: true
          description: Nom OS
        os_pretty_name:
          type: string
          readOnly: true
          description: Nom complet OS
        os_version:
          type: string
          readOnly: true
          description: Version OS
        kernel_release:
          type: string
          readOnly: true
          description: Version du kernel
        kernel_version:
          type: string
          readOnly: true
          description: Build du kernel
        machine:
          type: string
          readOnly: true
          description: Architecture (x86_64, ...)
        hostname:
          type: string
          readOnly: true
          description: Hostname rapporté par l'agent
        timezone:
          type: string
          readOnly: true
          description: Fuseau horaire de la VM
        filesystems:
          readOnly: true
          description: Systèmes de fichiers (mountpoint, usage)
        network_interfaces:
          readOnly: true
          description: Interfaces réseau (nom, mac, IPs)
        users:
          readOnly: true
          description: Utilisateurs connectés (user, login_time)
        last_collected_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
          description: Dernière collecte réussie
      required:
        - agent_available
        - filesystems
        - hostname
        - id
        - kernel_release
        - kernel_version
        - last_collected_at
        - machine
        - network_interfaces
        - os_id
        - os_name
        - os_pretty_name
        - os_version
        - timezone
        - users
    InstanceSizeVolume:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        volume_type:
          enum:
            - ssd
            - nvme
          type: string
          description: |-
            * `ssd` - SSD
            * `nvme` - NVMe
          x-spec-enum-id: defa042735ff9392
        disk_gb:
          type: integer
          maximum: 4294967295
          minimum: 0
          format: int64
          description: Disk size in GB
        is_default:
          type: boolean
          description: Default volume option for this size
        is_active:
          type: boolean
      required:
        - disk_gb
        - id
        - volume_type
    InstanceSizePricing:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        billing_cycle:
          enum:
            - hourly
            - monthly
            - quarterly
            - semi_annually
            - annually
            - biennially
            - triennially
          type: string
          description: |-
            * `hourly` - Hourly
            * `monthly` - Monthly
            * `quarterly` - Quarterly
            * `semi_annually` - Semi-Annually
            * `annually` - Annually
            * `biennially` - Biennially
            * `triennially` - Triennially
          x-spec-enum-id: 39fc1593b115d859
        price:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
        discount_percent:
          type: string
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          description: Discount percentage compared to monthly
        is_default:
          type: boolean
        is_active:
          type: boolean
      required:
        - billing_cycle
        - id
        - price
    InstanceSizeAddon:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        addon:
          allOf:
            - $ref: '#/components/schemas/Addon'
          readOnly: true
        pricing_options:
          type: array
          items:
            $ref: '#/components/schemas/InstanceSizeAddonPricing'
          readOnly: true
        is_included:
          type: boolean
          description: If true, addon is included in the base price
        is_default:
          type: boolean
          description: Pre-selected by default in cart
        is_active:
          type: boolean
      required:
        - addon
        - id
        - pricing_options
    Addon:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        slug:
          type: string
          maxLength: 50
          pattern: ^[-a-zA-Z0-9_]+$
        name:
          type: string
          description: Name in English (default)
          maxLength: 100
        name_fr:
          type: string
          description: Name in French
          maxLength: 100
        name_de:
          type: string
          description: Name in German
          maxLength: 100
        description:
          type: string
          description: Description in English (default)
        description_fr:
          type: string
          description: Description in French
        description_de:
          type: string
          description: Description in German
        billing_type:
          enum:
            - recurring
            - one_time
          type: string
          description: |-
            * `recurring` - Recurring
            * `one_time` - One Time
          x-spec-enum-id: 62c1b9d6ecb52382
        is_active:
          type: boolean
      required:
        - id
        - name
        - slug
    InstanceSizeAddonPricing:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        billing_cycle:
          enum:
            - hourly
            - monthly
            - quarterly
            - semi_annually
            - annually
            - biennially
            - triennially
          type: string
          description: |-
            * `hourly` - Hourly
            * `monthly` - Monthly
            * `quarterly` - Quarterly
            * `semi_annually` - Semi-Annually
            * `annually` - Annually
            * `biennially` - Biennially
            * `triennially` - Triennially
          x-spec-enum-id: 39fc1593b115d859
        price:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
        is_active:
          type: boolean
      required:
        - billing_cycle
        - id
        - price
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT or API Key
      description: >-
        Use `Authorization: Bearer <token>` header. Token can be a JWT token or
        an API key (format: `sk-onetsolutions-...`).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.