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

# Rename an app

> Rename an app or change its description. Nothing here touches the running container.

`hostname` is the app's DNS label — its container hostname and the name group peers resolve it by — so changing it also moves the app's managed domain. It must be unique inside a group, where a duplicate would be a name that answers as either app; outside one, duplicates are allowed on purpose.

Environment variables are `PATCH /apps/{id}/environment`, and changing template or version is `POST /apps/{id}/reinstall` — that one rebuilds the container. The plan cannot be changed here: resources are what the subscription bills for.

**Required API key permission:** `apps:write`



## OpenAPI

````yaml /openapi.json patch /apps/{id}
openapi: 3.0.0
info:
  title: Storiza API
  version: '1.0'
  description: Manage Storiza servers, apps and subscriptions programmatically.
servers:
  - url: https://api.storiza.store
security:
  - bearerAuth: []
tags:
  - name: Servers
    description: Create, order, renew and upgrade VPS servers, and read their details.
  - name: Server power & commands
    description: >-
      Start, stop, reboot and force-stop a server, check its status and run
      commands on it.
  - name: Server settings
    description: >-
      Rename a server, reinstall its operating system and follow its
      installation.
  - name: Server firewall
    description: Turn a server's firewall on or off and manage its rules.
  - name: Server metrics
    description: CPU, memory, disk and network usage, now and over time.
  - name: Server backups
    description: Order the backup add-on, and take, list and delete backups.
  - name: Server snapshots
    description: Take, list and delete snapshots of a server.
  - name: Server sharing
    description: A share link that lets someone else open the server.
  - name: Server catalog
    description: >-
      Plans, operating systems, categories, datacenters and backup plans. Public
      — no key needed.
  - name: Apps
    description: >-
      Deploy, order, renew and configure apps — game servers, databases and
      bots.
  - name: App lifecycle & console
    description: >-
      Start, stop, restart and kill an app, read its output and metrics, and
      send it commands.
  - name: App files
    description: >-
      Read, write, move and delete the files in an app's volume, and its SFTP
      access.
  - name: App backups
    description: Back up an app, download a backup, and restore from one.
  - name: App domains
    description: Your own domains for an app, and their DNS verification.
  - name: App groups
    description: Private networks that let your apps reach each other by hostname.
  - name: App catalog
    description: Templates, plans and locations for apps.
  - name: Subscriptions
    description: What you pay for, how often it renews, and stopping or resuming it.
  - name: Payments
    description: >-
      Follow a payment after an order, and the methods and currencies you can
      pay with.
  - name: Account
    description: Your profile, and a summary of everything you own.
  - name: SSH keys
    description: Public keys you can install on new Linux servers.
paths:
  /apps/{id}:
    patch:
      tags:
        - Apps
      summary: Rename an app
      description: >-
        Rename an app or change its description. Nothing here touches the
        running container.


        `hostname` is the app's DNS label — its container hostname and the name
        group peers resolve it by — so changing it also moves the app's managed
        domain. It must be unique inside a group, where a duplicate would be a
        name that answers as either app; outside one, duplicates are allowed on
        purpose.


        Environment variables are `PATCH /apps/{id}/environment`, and changing
        template or version is `POST /apps/{id}/reinstall` — that one rebuilds
        the container. The plan cannot be changed here: resources are what the
        subscription bills for.


        **Required API key permission:** `apps:write`
      parameters:
        - schema:
            type: string
            format: uuid
          required: true
          name: id
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 100
                description:
                  type: string
                  nullable: true
                  maxLength: 2000
                hostname:
                  type: string
                  minLength: 1
                  maxLength: 63
      responses:
        '200':
          description: App updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                  message:
                    type: string
                    enum:
                      - App updated
                  data:
                    allOf:
                      - $ref: '#/components/schemas/App'
                      - properties: {}
                required:
                  - success
                  - message
                  - data
        '401':
          description: Authentication required | Invalid API key | API key has expired
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  type:
                    type: string
                  code:
                    type: string
                  error:
                    type: string
                  details:
                    nullable: true
                required:
                  - success
                  - type
                  - code
                  - error
              examples:
                authenticationRequired:
                  summary: Authentication required
                  value:
                    success: false
                    type: API
                    code: AUTHENTICATION_ERROR
                    error: Authentication required
                invalidApiKey:
                  summary: Invalid API key
                  value:
                    success: false
                    type: API
                    code: INVALID_API_KEY
                    error: Invalid API key
                expiredApiKey:
                  summary: API key has expired
                  value:
                    success: false
                    type: API
                    code: EXPIRED_API_KEY
                    error: API key has expired
        '403':
          description: >-
            Account is banned | Account is suspended | Insufficient permissions
            | This endpoint cannot be accessed with this authentication method |
            API key lacks the permission required for this endpoint | This API
            key is not permitted from your IP address
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  type:
                    type: string
                  code:
                    type: string
                  error:
                    type: string
                  details:
                    nullable: true
                required:
                  - success
                  - type
                  - code
                  - error
              examples:
                accountBanned:
                  summary: Account is banned
                  value:
                    success: false
                    type: API
                    code: ACCOUNT_BANNED
                    error: Account is banned
                accountSuspended:
                  summary: Account is suspended
                  value:
                    success: false
                    type: API
                    code: ACCOUNT_SUSPENDED
                    error: Account is suspended
                insufficientPermissions:
                  summary: Insufficient permissions
                  value:
                    success: false
                    type: API
                    code: AUTHORIZATION_ERROR
                    error: Insufficient permissions
                transportNotAllowed:
                  summary: >-
                    This endpoint cannot be accessed with this authentication
                    method
                  value:
                    success: false
                    type: API
                    code: TRANSPORT_NOT_ALLOWED
                    error: >-
                      This endpoint cannot be accessed with this authentication
                      method
                missingPermission:
                  summary: API key lacks the permission required for this endpoint
                  value:
                    success: false
                    type: API
                    code: MISSING_PERMISSION
                    error: API key lacks the permission required for this endpoint
                ipNotAllowed:
                  summary: This API key is not permitted from your IP address
                  value:
                    success: false
                    type: API
                    code: IP_NOT_ALLOWED
                    error: This API key is not permitted from your IP address
        '404':
          description: App not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  type:
                    type: string
                  code:
                    type: string
                  error:
                    type: string
                  details:
                    nullable: true
                required:
                  - success
                  - type
                  - code
                  - error
              examples:
                appNotFound:
                  summary: App not found
                  value:
                    success: false
                    type: API
                    code: APP_NOT_FOUND
                    error: App not found
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  type:
                    type: string
                    enum:
                      - API
                  code:
                    type: string
                    enum:
                      - VALIDATION_ERROR
                  error:
                    type: string
                    enum:
                      - Validation error
                  details:
                    type: object
                    additionalProperties:
                      type: object
                      properties:
                        _errors:
                          type: array
                          items:
                            type: string
                required:
                  - success
                  - type
                  - code
                  - error
                  - details
              example:
                success: false
                type: API
                code: VALIDATION_ERROR
                error: Validation error
                details:
                  _errors:
                    - The whole schema has some validation problems
                  some_field:
                    _errors:
                      - This field has some validation problem
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                  type:
                    type: string
                    enum:
                      - API
                  code:
                    type: string
                    enum:
                      - INTERNAL_ERROR
                  error:
                    type: string
                    enum:
                      - Internal server error
                  details:
                    nullable: true
                required:
                  - success
                  - type
                  - code
                  - error
              example:
                success: false
                type: API
                code: INTERNAL_ERROR
                error: Internal server error
      security:
        - bearerAuth: []
components:
  schemas:
    App:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
          maxLength: 100
        description:
          type: string
          nullable: true
        hostname:
          type: string
          maxLength: 63
        type:
          type: string
          enum:
            - app
            - bot
            - game_server
            - database
            - service
          default: app
        owner:
          description: >-
            The related user. Sent **in full** when this endpoint includes it,
            otherwise **only its `id`** — fetch it separately if you need the
            rest. `null` when there is none.
          nullable: true
          anyOf:
            - $ref: '#/components/schemas/User'
            - title: User (id only)
              type: object
              properties:
                id:
                  type: string
                  description: The user's id.
              required:
                - id
        subscription:
          description: >-
            The related subscription. Sent **in full** when this endpoint
            includes it, otherwise **only its `id`** — fetch it separately if
            you need the rest. `null` when there is none.
          nullable: true
          anyOf:
            - $ref: '#/components/schemas/Subscription'
            - title: Subscription (id only)
              type: object
              properties:
                id:
                  type: string
                  description: The subscription's id.
              required:
                - id
        node:
          description: >-
            The related app node. Sent **in full** when this endpoint includes
            it, otherwise **only its `id`** — fetch it separately if you need
            the rest. `null` when there is none.
          nullable: true
          anyOf:
            - $ref: '#/components/schemas/AppNode'
            - title: AppNode (id only)
              type: object
              properties:
                id:
                  type: string
                  description: The app node's id.
              required:
                - id
        template:
          description: >-
            The related app template. Sent **in full** when this endpoint
            includes it, otherwise **only its `id`** — fetch it separately if
            you need the rest. `null` when there is none.
          nullable: true
          anyOf:
            - $ref: '#/components/schemas/AppTemplate'
            - title: AppTemplate (id only)
              type: object
              properties:
                id:
                  type: string
                  description: The app template's id.
              required:
                - id
        version:
          type: string
          maxLength: 63
        plan:
          description: >-
            The related app plan. Sent **in full** when this endpoint includes
            it, otherwise **only its `id`** — fetch it separately if you need
            the rest. `null` when there is none.
          nullable: true
          anyOf:
            - $ref: '#/components/schemas/AppPlan'
            - title: AppPlan (id only)
              type: object
              properties:
                id:
                  type: string
                  description: The app plan's id.
              required:
                - id
        groupId:
          type: string
          nullable: true
        group:
          description: >-
            The related app group. Sent **in full** when this endpoint includes
            it, otherwise **only its `id`** — fetch it separately if you need
            the rest. `null` when there is none.
          nullable: true
          anyOf:
            - $ref: '#/components/schemas/AppGroup'
            - title: AppGroup (id only)
              type: object
              properties:
                id:
                  type: string
                  description: The app group's id.
              required:
                - id
        state:
          type: string
          enum:
            - running
            - stopped
          default: stopped
        command:
          type: array
          nullable: true
          items:
            type: string
        volumeSeededAt:
          type: string
          nullable: true
          format: date-time
        sftpUsername:
          type: string
          maxLength: 63
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - name
        - hostname
        - version
        - sftpUsername
        - updatedAt
      title: App
      description: Schema for App model
      example:
        id: 00000000-0000-4000-8000-000000000000
        name: Survival
        hostname: mc-survival
        type: game_server
        owner:
          id: 00000000-0000-4000-8000-000000000000
        subscription:
          id: 00000000-0000-4000-8000-000000000000
        node:
          id: 00000000-0000-4000-8000-000000000000
        template:
          id: 00000000-0000-4000-8000-000000000000
        version: latest
        plan:
          id: 00000000-0000-4000-8000-000000000000
        group: null
        state: running
        volumeQuotaMB: 0
        sftpUsername: app-mc-survival
        createdAt: '2026-10-09T14:57:33.884Z'
        sftpEnabled: true
    User:
      type: object
      properties:
        id:
          type: string
        username:
          type: string
          maxLength: 32
        email:
          type: string
        avatarURL:
          type: string
          nullable: true
        firstname:
          type: string
          nullable: true
          maxLength: 64
        lastname:
          type: string
          nullable: true
          maxLength: 64
        fullname:
          type: string
        flags:
          type: number
          default: 48
        theme:
          type: string
          enum:
            - light
            - dark
            - system
          default: system
        language:
          type: string
          enum:
            - en
            - ar
          default: en
        currency:
          type: string
          maxLength: 10
          default: USD
        timezone:
          type: string
          enum:
            - Africa/Abidjan
            - Africa/Accra
            - Africa/Addis_Ababa
            - Africa/Algiers
            - Africa/Asmera
            - Africa/Bamako
            - Africa/Bangui
            - Africa/Banjul
            - Africa/Bissau
            - Africa/Blantyre
            - Africa/Brazzaville
            - Africa/Bujumbura
            - Africa/Cairo
            - Africa/Casablanca
            - Africa/Ceuta
            - Africa/Conakry
            - Africa/Dakar
            - Africa/Dar_es_Salaam
            - Africa/Djibouti
            - Africa/Douala
            - Africa/El_Aaiun
            - Africa/Freetown
            - Africa/Gaborone
            - Africa/Harare
            - Africa/Johannesburg
            - Africa/Juba
            - Africa/Kampala
            - Africa/Khartoum
            - Africa/Kigali
            - Africa/Kinshasa
            - Africa/Lagos
            - Africa/Libreville
            - Africa/Lome
            - Africa/Luanda
            - Africa/Lubumbashi
            - Africa/Lusaka
            - Africa/Malabo
            - Africa/Maputo
            - Africa/Maseru
            - Africa/Mbabane
            - Africa/Mogadishu
            - Africa/Monrovia
            - Africa/Nairobi
            - Africa/Ndjamena
            - Africa/Niamey
            - Africa/Nouakchott
            - Africa/Ouagadougou
            - Africa/Porto-Novo
            - Africa/Sao_Tome
            - Africa/Tripoli
            - Africa/Tunis
            - Africa/Windhoek
            - America/Adak
            - America/Anchorage
            - America/Anguilla
            - America/Antigua
            - America/Araguaina
            - America/Argentina/La_Rioja
            - America/Argentina/Rio_Gallegos
            - America/Argentina/Salta
            - America/Argentina/San_Juan
            - America/Argentina/San_Luis
            - America/Argentina/Tucuman
            - America/Argentina/Ushuaia
            - America/Aruba
            - America/Asuncion
            - America/Bahia
            - America/Bahia_Banderas
            - America/Barbados
            - America/Belem
            - America/Belize
            - America/Blanc-Sablon
            - America/Boa_Vista
            - America/Bogota
            - America/Boise
            - America/Buenos_Aires
            - America/Cambridge_Bay
            - America/Campo_Grande
            - America/Cancun
            - America/Caracas
            - America/Catamarca
            - America/Cayenne
            - America/Cayman
            - America/Chicago
            - America/Chihuahua
            - America/Ciudad_Juarez
            - America/Coral_Harbour
            - America/Cordoba
            - America/Costa_Rica
            - America/Coyhaique
            - America/Creston
            - America/Cuiaba
            - America/Curacao
            - America/Danmarkshavn
            - America/Dawson
            - America/Dawson_Creek
            - America/Denver
            - America/Detroit
            - America/Dominica
            - America/Edmonton
            - America/Eirunepe
            - America/El_Salvador
            - America/Fort_Nelson
            - America/Fortaleza
            - America/Glace_Bay
            - America/Godthab
            - America/Goose_Bay
            - America/Grand_Turk
            - America/Grenada
            - America/Guadeloupe
            - America/Guatemala
            - America/Guayaquil
            - America/Guyana
            - America/Halifax
            - America/Havana
            - America/Hermosillo
            - America/Indiana/Knox
            - America/Indiana/Marengo
            - America/Indiana/Petersburg
            - America/Indiana/Tell_City
            - America/Indiana/Vevay
            - America/Indiana/Vincennes
            - America/Indiana/Winamac
            - America/Indianapolis
            - America/Inuvik
            - America/Iqaluit
            - America/Jamaica
            - America/Jujuy
            - America/Juneau
            - America/Kentucky/Monticello
            - America/Kralendijk
            - America/La_Paz
            - America/Lima
            - America/Los_Angeles
            - America/Louisville
            - America/Lower_Princes
            - America/Maceio
            - America/Managua
            - America/Manaus
            - America/Marigot
            - America/Martinique
            - America/Matamoros
            - America/Mazatlan
            - America/Mendoza
            - America/Menominee
            - America/Merida
            - America/Metlakatla
            - America/Mexico_City
            - America/Miquelon
            - America/Moncton
            - America/Monterrey
            - America/Montevideo
            - America/Montserrat
            - America/Nassau
            - America/New_York
            - America/Nome
            - America/Noronha
            - America/North_Dakota/Beulah
            - America/North_Dakota/Center
            - America/North_Dakota/New_Salem
            - America/Ojinaga
            - America/Panama
            - America/Paramaribo
            - America/Phoenix
            - America/Port-au-Prince
            - America/Port_of_Spain
            - America/Porto_Velho
            - America/Puerto_Rico
            - America/Punta_Arenas
            - America/Rankin_Inlet
            - America/Recife
            - America/Regina
            - America/Resolute
            - America/Rio_Branco
            - America/Santarem
            - America/Santiago
            - America/Santo_Domingo
            - America/Sao_Paulo
            - America/Scoresbysund
            - America/Sitka
            - America/St_Barthelemy
            - America/St_Johns
            - America/St_Kitts
            - America/St_Lucia
            - America/St_Thomas
            - America/St_Vincent
            - America/Swift_Current
            - America/Tegucigalpa
            - America/Thule
            - America/Tijuana
            - America/Toronto
            - America/Tortola
            - America/Vancouver
            - America/Whitehorse
            - America/Winnipeg
            - America/Yakutat
            - Antarctica/Casey
            - Antarctica/Davis
            - Antarctica/DumontDUrville
            - Antarctica/Macquarie
            - Antarctica/Mawson
            - Antarctica/McMurdo
            - Antarctica/Palmer
            - Antarctica/Rothera
            - Antarctica/Syowa
            - Antarctica/Troll
            - Antarctica/Vostok
            - Arctic/Longyearbyen
            - Asia/Aden
            - Asia/Almaty
            - Asia/Amman
            - Asia/Anadyr
            - Asia/Aqtau
            - Asia/Aqtobe
            - Asia/Ashgabat
            - Asia/Atyrau
            - Asia/Baghdad
            - Asia/Bahrain
            - Asia/Baku
            - Asia/Bangkok
            - Asia/Barnaul
            - Asia/Beirut
            - Asia/Bishkek
            - Asia/Brunei
            - Asia/Calcutta
            - Asia/Chita
            - Asia/Colombo
            - Asia/Damascus
            - Asia/Dhaka
            - Asia/Dili
            - Asia/Dubai
            - Asia/Dushanbe
            - Asia/Famagusta
            - Asia/Gaza
            - Asia/Hebron
            - Asia/Hong_Kong
            - Asia/Hovd
            - Asia/Irkutsk
            - Asia/Jakarta
            - Asia/Jayapura
            - Asia/Jerusalem
            - Asia/Kabul
            - Asia/Kamchatka
            - Asia/Karachi
            - Asia/Katmandu
            - Asia/Khandyga
            - Asia/Krasnoyarsk
            - Asia/Kuala_Lumpur
            - Asia/Kuching
            - Asia/Kuwait
            - Asia/Macau
            - Asia/Magadan
            - Asia/Makassar
            - Asia/Manila
            - Asia/Muscat
            - Asia/Nicosia
            - Asia/Novokuznetsk
            - Asia/Novosibirsk
            - Asia/Omsk
            - Asia/Oral
            - Asia/Phnom_Penh
            - Asia/Pontianak
            - Asia/Pyongyang
            - Asia/Qatar
            - Asia/Qostanay
            - Asia/Qyzylorda
            - Asia/Rangoon
            - Asia/Riyadh
            - Asia/Saigon
            - Asia/Sakhalin
            - Asia/Samarkand
            - Asia/Seoul
            - Asia/Shanghai
            - Asia/Singapore
            - Asia/Srednekolymsk
            - Asia/Taipei
            - Asia/Tashkent
            - Asia/Tbilisi
            - Asia/Tehran
            - Asia/Thimphu
            - Asia/Tokyo
            - Asia/Tomsk
            - Asia/Ulaanbaatar
            - Asia/Urumqi
            - Asia/Ust-Nera
            - Asia/Vientiane
            - Asia/Vladivostok
            - Asia/Yakutsk
            - Asia/Yekaterinburg
            - Asia/Yerevan
            - Atlantic/Azores
            - Atlantic/Bermuda
            - Atlantic/Canary
            - Atlantic/Cape_Verde
            - Atlantic/Faeroe
            - Atlantic/Madeira
            - Atlantic/Reykjavik
            - Atlantic/South_Georgia
            - Atlantic/St_Helena
            - Atlantic/Stanley
            - Australia/Adelaide
            - Australia/Brisbane
            - Australia/Broken_Hill
            - Australia/Darwin
            - Australia/Eucla
            - Australia/Hobart
            - Australia/Lindeman
            - Australia/Lord_Howe
            - Australia/Melbourne
            - Australia/Perth
            - Australia/Sydney
            - Europe/Amsterdam
            - Europe/Andorra
            - Europe/Astrakhan
            - Europe/Athens
            - Europe/Belgrade
            - Europe/Berlin
            - Europe/Bratislava
            - Europe/Brussels
            - Europe/Bucharest
            - Europe/Budapest
            - Europe/Busingen
            - Europe/Chisinau
            - Europe/Copenhagen
            - Europe/Dublin
            - Europe/Gibraltar
            - Europe/Guernsey
            - Europe/Helsinki
            - Europe/Isle_of_Man
            - Europe/Istanbul
            - Europe/Jersey
            - Europe/Kaliningrad
            - Europe/Kiev
            - Europe/Kirov
            - Europe/Lisbon
            - Europe/Ljubljana
            - Europe/London
            - Europe/Luxembourg
            - Europe/Madrid
            - Europe/Malta
            - Europe/Mariehamn
            - Europe/Minsk
            - Europe/Monaco
            - Europe/Moscow
            - Europe/Oslo
            - Europe/Paris
            - Europe/Podgorica
            - Europe/Prague
            - Europe/Riga
            - Europe/Rome
            - Europe/Samara
            - Europe/San_Marino
            - Europe/Sarajevo
            - Europe/Saratov
            - Europe/Simferopol
            - Europe/Skopje
            - Europe/Sofia
            - Europe/Stockholm
            - Europe/Tallinn
            - Europe/Tirane
            - Europe/Ulyanovsk
            - Europe/Vaduz
            - Europe/Vatican
            - Europe/Vienna
            - Europe/Vilnius
            - Europe/Volgograd
            - Europe/Warsaw
            - Europe/Zagreb
            - Europe/Zurich
            - Indian/Antananarivo
            - Indian/Chagos
            - Indian/Christmas
            - Indian/Cocos
            - Indian/Comoro
            - Indian/Kerguelen
            - Indian/Mahe
            - Indian/Maldives
            - Indian/Mauritius
            - Indian/Mayotte
            - Indian/Reunion
            - Pacific/Apia
            - Pacific/Auckland
            - Pacific/Bougainville
            - Pacific/Chatham
            - Pacific/Easter
            - Pacific/Efate
            - Pacific/Enderbury
            - Pacific/Fakaofo
            - Pacific/Fiji
            - Pacific/Funafuti
            - Pacific/Galapagos
            - Pacific/Gambier
            - Pacific/Guadalcanal
            - Pacific/Guam
            - Pacific/Honolulu
            - Pacific/Kiritimati
            - Pacific/Kosrae
            - Pacific/Kwajalein
            - Pacific/Majuro
            - Pacific/Marquesas
            - Pacific/Midway
            - Pacific/Nauru
            - Pacific/Niue
            - Pacific/Norfolk
            - Pacific/Noumea
            - Pacific/Pago_Pago
            - Pacific/Palau
            - Pacific/Pitcairn
            - Pacific/Ponape
            - Pacific/Port_Moresby
            - Pacific/Rarotonga
            - Pacific/Saipan
            - Pacific/Tahiti
            - Pacific/Tarawa
            - Pacific/Tongatapu
            - Pacific/Truk
            - Pacific/Wake
            - Pacific/Wallis
          default: Europe/London
        notificationPreferences:
          type: object
          properties:
            securityAlerts:
              type: boolean
            billingNotifications:
              type: boolean
            serverStatus:
              type: boolean
            productUpdates:
              type: boolean
            newsletter:
              type: boolean
            marketingEmails:
              type: boolean
          default:
            securityAlerts: true
            billingNotifications: true
            serverStatus: true
            productUpdates: true
            newsletter: false
            marketingEmails: false
          required:
            - securityAlerts
            - billingNotifications
            - serverStatus
            - productUpdates
            - newsletter
            - marketingEmails
        loginMethods:
          type: string
          enum:
            - google
            - discord
            - password
        twoFactorEnabled:
          type: boolean
        balance:
          type: number
          default: 0
        addressLine1:
          type: string
          nullable: true
          maxLength: 255
        addressLine2:
          type: string
          nullable: true
          maxLength: 255
        city:
          type: string
          nullable: true
          maxLength: 100
        state:
          type: string
          nullable: true
          maxLength: 100
        postalCode:
          type: string
          nullable: true
          maxLength: 20
        country:
          type: string
          nullable: true
          maxLength: 2
        phoneNumber:
          type: string
          nullable: true
          maxLength: 20
        accountLimits:
          type: object
          properties:
            apps:
              type: number
            vps:
              type: number
            priceByApp:
              type: number
            priceByVPS:
              type: number
            timeByApp:
              type: number
            timeByVPS:
              type: number
            mode:
              type: string
          default:
            apps: -1
            vps: -1
            priceByApp: -1
            priceByVPS: -1
            timeByApp: -1
            timeByVPS: -1
            mode: unlimited
          required:
            - apps
            - vps
            - priceByApp
            - priceByVPS
            - timeByApp
            - timeByVPS
            - mode
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        isVerified:
          type: boolean
        isSuspended:
          type: boolean
        isBanned:
          type: boolean
        isAdmin:
          type: boolean
        isSupport:
          type: boolean
        isBetaTester:
          type: boolean
      required:
        - username
        - email
        - updatedAt
      title: User
      description: Schema for User model
      example:
        id: 00000000-0000-4000-8000-000000000000
        username: example
        email: user@example.com
        firstname: First
        lastname: Last
        fullname: First Last
        flags: '48'
        theme: system
        language: en
        currency: USD
        timezone: Europe/London
        notificationPreferences:
          securityAlerts: true
          billingNotifications: true
          serverStatus: true
          productUpdates: true
          newsletter: false
          marketingEmails: false
        loginMethods: []
        twoFactorEnabled: false
        balance: '0'
        accountLimits:
          apps: -1
          vps: -1
          priceByApp: -1
          priceByVPS: -1
          timeByApp: -1
          timeByVPS: -1
          mode: unlimited
        createdAt: '2026-10-09T14:57:33.835Z'
        isVerified: false
        isSuspended: false
        isBanned: false
        isAdmin: false
        isSupport: false
        isBetaTester: false
    Subscription:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
          maxLength: 128
        status:
          type: string
          enum:
            - active
            - past_due
            - renewing
            - cancelled
            - paused
            - expired
          default: active
        user:
          description: >-
            The related user. Sent **in full** when this endpoint includes it,
            otherwise **only its `id`** — fetch it separately if you need the
            rest. `null` when there is none.
          nullable: true
          anyOf:
            - $ref: '#/components/schemas/User'
            - title: User (id only)
              type: object
              properties:
                id:
                  type: string
                  description: The user's id.
              required:
                - id
        provider:
          type: string
          maxLength: 64
        method:
          type: string
          maxLength: 64
        amount:
          type: number
          default: 0
        currency:
          type: string
          maxLength: 3
          default: USD
        durationDays:
          type: number
          default: 30
        currentPeriodStart:
          type: string
          format: date-time
        currentPeriodEnd:
          type: string
          format: date-time
        cancelledAt:
          type: string
          format: date-time
        lastSyncedAt:
          type: string
          format: date-time
        lastRenewedAt:
          type: string
          format: date-time
        supportsManagement:
          type: boolean
        metadata:
          type: object
          properties: {}
          default: {}
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - provider
        - method
        - currentPeriodEnd
        - createdAt
        - updatedAt
      title: Subscription
      description: Schema for Subscription model
      example:
        id: 00000000-0000-4000-8000-000000000000
        status: active
        user:
          id: 00000000-0000-4000-8000-000000000000
        provider: balance
        method: balance
        amount: '12'
        currency: USD
        durationDays: 30
        currentPeriodEnd: '2026-10-09T14:57:33.877Z'
        supportsManagement: false
        metadata: {}
    AppNode:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
          maxLength: 100
        slug:
          type: string
          maxLength: 63
        description:
          type: string
          default: ''
        city:
          type: string
          nullable: true
          maxLength: 100
        countryCode:
          type: string
          nullable: true
          maxLength: 2
        region:
          type: string
          nullable: true
          maxLength: 10
        installedAt:
          type: string
          nullable: true
          format: date-time
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - name
        - slug
        - updatedAt
      title: AppNode
      description: Schema for AppNode model
      example:
        id: 00000000-0000-4000-8000-000000000000
        name: Kansas City 01
        slug: appsus001
        description: ''
        city: Kansas City
        countryCode: US
        region: US
        state: active
        fqdn: node-appsus001.storiza.app
        createdAt: '2026-10-09T14:57:33.856Z'
        schedulable: true
    AppTemplate:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
          maxLength: 100
        slug:
          type: string
          maxLength: 63
        type:
          type: string
          enum:
            - app
            - bot
            - game_server
            - database
            - service
          default: app
        description:
          type: string
          nullable: true
        group:
          type: string
          nullable: true
          maxLength: 100
        tags:
          type: array
          items:
            type: string
          default: []
        iconURL:
          type: string
          nullable: true
        versions:
          type: array
          items:
            nullable: true
          default: []
        defaultVersion:
          type: string
          maxLength: 63
          default: latest
        mountPoint:
          type: string
          maxLength: 255
        workingDirectory:
          type: string
          nullable: true
          maxLength: 255
        exposures:
          type: array
          items:
            nullable: true
          default: []
        environmentVariables:
          type: array
          items:
            nullable: true
          default: []
        entrypoint:
          type: array
          nullable: true
          items:
            type: string
        command:
          type: array
          nullable: true
          items:
            type: string
        isCommandManaged:
          type: boolean
          default: true
        stdin:
          type: boolean
          default: false
        tty:
          type: boolean
          default: false
        shell:
          type: string
          maxLength: 64
          default: /bin/sh
        fileAccessAllowed:
          type: boolean
          default: true
        backup:
          type: object
          properties:
            mechanism:
              type: string
          default:
            mechanism: volume
          required:
            - mechanism
        author:
          type: string
          nullable: true
          maxLength: 100
        website:
          type: string
          nullable: true
        documentation:
          type: string
          nullable: true
        support:
          type: string
          nullable: true
        templateVersion:
          type: string
          nullable: true
          maxLength: 20
        isActive:
          type: boolean
          default: true
        isPublic:
          type: boolean
          default: true
        isPopular:
          type: boolean
          default: false
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - name
        - slug
        - mountPoint
        - updatedAt
      title: AppTemplate
      description: Schema for AppTemplate model
      example:
        id: 00000000-0000-4000-8000-000000000000
        name: Minecraft (Paper)
        slug: minecraft-paper
        type: app
        tags: []
        versions:
          - name: latest
            image: itzg/minecraft-server
            tag: latest
          - name: '1.20'
            description: Pinned to Minecraft 1.20
            image: itzg/minecraft-server
            tag: java17
            environment:
              - key: VERSION
                default: 1.20.4
                mutable: false
        defaultVersion: latest
        mountPoint: /data
        exposures:
          - name: game
            type: minecraft
            containerPort: 25565
            description: Minecraft client port
            required: true
          - name: rcon
            type: tcp
            containerPort: 25575
            description: Remote console
            required: false
        environmentVariables:
          - key: EULA
            default: 'TRUE'
            mutable: false
          - key: MEMORY
            default: 2G
            mutable: true
        isCommandManaged: true
        stdin: true
        tty: false
        shell: /bin/sh
        fileAccessAllowed: true
        backup:
          mechanism: volume
        isActive: true
        isPublic: true
        isPopular: false
        createdAt: '2026-10-09T14:57:33.872Z'
        availableVersions:
          - latest
          - '1.20'
        requiredPortCount: 1
        hasHTTP: false
    AppPlan:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
          maxLength: 100
        type:
          type: string
          enum:
            - app
            - bot
            - game_server
            - database
            - service
          default: app
        description:
          type: string
          nullable: true
        category:
          type: string
          maxLength: 100
        price:
          type: number
        duration:
          type: number
          default: 2592000000
        memoryMB:
          type: number
        mcpu:
          type: number
        storageMB:
          type: number
        pidsLimit:
          type: number
          default: 512
        maxPorts:
          type: number
          default: 4
        maxBackups:
          type: number
          default: 3
        backupRetentionDays:
          type: number
          nullable: true
        customDomainsAllowed:
          type: boolean
          default: true
        maxDomains:
          type: number
          default: 1
        isActive:
          type: boolean
          default: true
        isPublic:
          type: boolean
          default: true
        isPopular:
          type: boolean
          default: false
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - name
        - category
        - price
        - memoryMB
        - mcpu
        - storageMB
        - updatedAt
      title: AppPlan
      description: Schema for AppPlan model
      example:
        id: 00000000-0000-4000-8000-000000000000
        name: standard-2
        type: app
        category: standard
        price: '5'
        duration: '2592000000'
        memoryMB: 2048
        mcpu: 2000
        storageMB: 20480
        pidsLimit: 512
        maxPorts: 4
        maxBackups: 3
        customDomainsAllowed: true
        maxDomains: 1
        isActive: true
        isPublic: true
        isPopular: false
        createdAt: '2026-10-09T14:57:33.864Z'
    AppGroup:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
          maxLength: 63
        ownerId:
          type: string
        nodeId:
          type: string
        createdAt:
          type: string
          format: date-time
      required:
        - name
        - ownerId
        - nodeId
      title: AppGroup
      description: Schema for AppGroup model
      example:
        id: 00000000-0000-4000-8000-000000000000
        name: backend
        ownerId: 00000000-0000-4000-8000-000000000000
        nodeId: 00000000-0000-4000-8000-000000000000
        createdAt: '2026-10-09T14:57:33.860Z'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An API key from the Storiza dashboard (API & Integrations), sent as
        `Authorization: Bearer stz_…`.

````

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