Vanilla Forums Config API

The Config API from Vanilla Forums — 1 operation(s) for config.

OpenAPI Specification

vanilla-forums-config-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  description: API access to your community.
  title: Vanilla Addons Config API
  version: '2.0'
servers:
- url: https://open.vanillaforums.com/api/v2
tags:
- name: Config
paths:
  /config:
    get:
      summary: Get the site's config.
      tags:
      - Config
      parameters:
      - name: select
        in: query
        description: 'A CSV of config key names to select a sparse set of items. Use * as a wildcard to match multiple keys.

          '
        style: form
        schema:
          type: array
          items:
            type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Config'
          description: Success
      x-addon: dashboard
    patch:
      summary: Update one or more config settings.
      tags:
      - Config
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Config'
      responses:
        '204':
          description: Success
      x-addon: dashboard
components:
  schemas:
    Config:
      type: object
      properties:
        configUUID:
          description: Used for internal configuration validation.
          type: string
          x-key: configUUID
          x-read: public
        branding.addressBarColor:
          description: 'Some browsers support a color for the address bar.

            '
          type: string
          default: ''
          example: '#C0FFEE'
          maxLength: 9
          x-key: Garden.MobileAddressBarColor
          x-read: public
          x-write: community.manage
        branding.bannerImage:
          description: 'The default banner image across the site. This can be overridden on a per category basis.

            '
          type: string
          default: ''
          example: ''
          maxLength: 500
          x-key: Garden.BannerImage
          x-read: public
          x-write: community.manage
          x-upload: true
        branding.favicon:
          description: 'Your site''s favicon appears in your browser''s title bar. It will be scaled down appropriately.

            '
          type: string
          default: ''
          example: ''
          maxLength: 500
          x-key: Garden.FavIcon
          x-read: public
          x-write: community.manage
          x-upload: true
        branding.logo:
          description: 'The banner logo appears at the top of your site. Themes made with the theme editor and some custom themes don''t use this setting.

            '
          type: string
          default: ''
          example: ''
          maxLength: 500
          x-key: Garden.Logo
          x-read: public
          x-write: community.manage
          x-upload: true
        branding.mobileLogo:
          description: 'The mobile banner logo appears at the top of your site. Themes made with the theme editor and some custom themes don''t use this setting.

            '
          type: string
          default: ''
          example: ''
          maxLength: 500
          x-key: Garden.MobileLogo
          x-read: public
          x-write: community.manage
          x-upload: true
        branding.shareImage:
          description: When someone shares a link from your site we try and grab an image from the page. If there isn't an image on the page then we'll use this image instead. The image should be at least 50×50, but we recommend 200×200.
          type: string
          default: ''
          example: ''
          maxLength: 500
          x-key: Garden.ShareImage
          x-read: public
          x-write: community.manage
          x-upload: true
        branding.touchIcon:
          description: 'The touch icon appears when you bookmark a website on the homescreen of a mobile device. These are usually 152 pixels.

            '
          type: string
          default: ''
          example: ''
          maxLength: 500
          x-key: Garden.TouchIcon
          x-read: public
          x-write: community.manage
          x-upload: true
        forum.disabled:
          description: 'Remove discussion and categories links from menus. Set discussion and category related pages to return not found page 404.

            '
          type: boolean
          default: false
          example: true
          x-key: Vanilla.Forum.Disabled
          x-read: public
          x-write: community.manage
        garden.cookie.name:
          description: The prefix for cookie names
          type: string
          default: Vanilla
          x-key: Garden.Cookie.Name
          x-read: public
        garden.cookie.path:
          description: The path to cookie names
          type: string
          default: Vanilla
          x-key: Garden.Cookie.Path
          x-read: public
        garden.description:
          description: 'The site description usually appears in search engines. You should try having a description that is 100-150

            characters long.

            '
          type: string
          default: ''
          maxLength: 350
          x-key: Garden.Description
          x-read: public
          x-write: community.manage
        garden.externalUrlFormat:
          description: 'The format used to generate URLs to pages from external sources, typically emails. Set this config setting

            your site is embedded or uses a reverse proxy. Place a "%s" in the URL and it will be replaced with the path

            being generated.

            '
          type: string
          default: ''
          example: https://example.com/community/%s
          pattern: (^$)|(^https?://.+%s)
          x-key: Garden.ExternalUrlFormat
          x-read: community.manage
        garden.homepageTitle:
          description: 'The homepage title is displayed on your home page. Pick a title that you would want to see appear in search

            engines.

            '
          type: string
          default: ''
          example: Welcome To Our Support Community
          maxLength: 100
          x-key: Garden.HomepageTitle
          x-read: public
          x-write: community.manage
        garden.locale:
          description: 'The default locale for your site. This will be the source language for your community.

            '
          type: string
          default: en
          maxLength: 100
          x-key: Garden.Locale
          x-read: public
          x-write: site.manage
        machineTranslation.maxLocale:
          description: 'Maximum number of additional languages allowed for machine translation (plan limit).

            '
          type: integer
          default: 5
          minimum: 0
          x-key: MachineTranslation.maxLocale
          x-read: site.manage
        machineTranslation.wordsNotToTranslate:
          description: 'Words or phrases to skip when machine-translating content. Stored as comma-separated; UI may use semicolons.

            '
          type: string
          default: ''
          x-key: MachineTranslation.wordsNotToTranslate
          x-read: site.manage
          x-write: site.manage
        machineTranslation.locales:
          description: 'Ordered list of locale keys for available languages (language picker). Persisted as $Configuration[''MachineTranslation''][''locales''].

            '
          type: array
          items:
            type: string
          x-key: MachineTranslation.locales
          x-read: site.manage
          x-write: site.manage
        machineTranslation.translatableContent:
          description: 'Which content types are enabled for machine translation (posts, comments, widgetText, articles, etc.).

            '
          type: object
          properties:
            posts:
              type: boolean
              default: false
            comments:
              type: boolean
              default: false
            widgetText:
              type: boolean
              default: false
            articles:
              type: boolean
              default: false
            categoryNames:
              type: boolean
              default: false
            roleNames:
              type: boolean
              default: false
            ranks:
              type: boolean
              default: false
            badges:
              type: boolean
              default: false
          x-key: MachineTranslation.translatableContent
          x-read: site.manage
          x-write: site.manage
        machineTranslation.advancedPrompts:
          description: 'Additional text included in translation prompts.

            '
          type: string
          default: ''
          x-key: MachineTranslation.advancedPrompts
          x-read: site.manage
          x-write: site.manage
        machineTranslation.kbTranslationMode:
          description: 'Controls whether Knowledge Base article translation runs automatically or manually.

            When "automatic", articles are translated via GPT when created or updated.

            When "manual", translation must be triggered from the article menu.

            If a non-GPT translation service is configured on any locale, the effective mode is always "manual".

            '
          type: string
          enum:
          - manual
          - automatic
          default: manual
          x-key: MachineTranslation.kbTranslationMode
          x-read: site.manage
          x-write: site.manage
        garden.orgName:
          description: 'Your organization name is used for SEO microdata and JSON+LD.

            '
          type: string
          default: ''
          maxLength: 50
          x-key: Garden.OrgName
          x-read: public
          x-write: community.manage
        garden.privacy.ips:
          description: Anonymize IP addresses on users so they aren't tracked. You can specify "partial" to remove the last octet or full to anonymize the entire IP address.
          type: string
          default: ''
          enum:
          - ''
          - partial
          - full
          x-key: Garden.Privacy.IPs
          x-read: community.manage
        garden.title:
          description: 'The banner title appears on your site''s banner and in your browser''s title bar.

            '
          type: string
          default: Vanilla
          example: Support Community
          minLength: 1
          x-key: Garden.Title
          x-read: public
          x-write: community.manage
        customLayout.home:
          description: Should custom layouts be rendered on the home page.
          type: boolean
          default: false
          example: false
          x-key: Feature.customLayout.home.Enabled
          x-read: public
          x-write: site.manage
        customLayout.discussionList:
          description: Should custom layouts be rendered on the discussionList page.
          type: boolean
          default: false
          example: false
          x-key: Feature.customLayout.discussionList.Enabled
          x-read: public
          x-write: site.manage
        customLayout.post:
          description: Should custom layouts be rendered on the discussionThread page.
          type: boolean
          default: false
          example: false
          x-key: Feature.customLayout.post.Enabled
          x-read: public
          x-write: site.manage
        customLayout.createPost:
          description: Should custom layouts be rendered on the create post page.
          type: boolean
          default: false
          example: false
          x-key: Feature.customLayout.createPost.Enabled
          x-read: public
          x-write: site.manage
        customLayout.categoryList:
          description: Should custom layouts be rendered on the categoryList page.
          type: boolean
          default: false
          example: false
          x-key: Feature.customLayout.categoryList.Enabled
          x-read: public
          x-write: site.manage
        customLayout.nestedCategoryList:
          description: Should custom layouts be rendered on the nestedCategoryList page.
          type: boolean
          default: false
          example: false
          x-key: Feature.customLayout.nestedCategoryList.Enabled
          x-feature: Feature.layoutEditor.categoryList.Enabled
          x-read: public
          x-write: site.manage
        customLayout.discussionCategoryPage:
          description: Should custom layouts be rendered on the discussionCategoryPage page.
          type: boolean
          default: false
          example: false
          x-key: Feature.customLayout.categoryList.Enabled
          x-feature: Feature.layoutEditor.categoryList.Enabled
          x-read: public
          x-write: site.manage
        customLayout.event:
          description: Should custom layouts be rendered on the event details page.
          type: boolean
          default: false
          example: false
          x-key: Feature.customLayout.event.Enabled
          x-read: public
          x-write: site.manage
        customLayout.group:
          description: Should custom layouts be rendered on the group list page.
          type: boolean
          default: false
          example: false
          x-key: Feature.customLayout.group.Enabled
          x-read: public
          x-write: site.manage
        hideLegacyLayouts:
          description: Hide legacy layout settings in the dashboard when custom layouts are enabled.
          type: boolean
          default: false
          example: false
          x-key: Feature.hideLegacyLayouts.Enabled
          x-read: site.manage
          x-write: site.manage
        labs.deferredLegacyScripts:
          description: 'This setting loads the page before executing Javascript which can improve your SEO. Warning: Enabling this feature may cause Javascript errors on your site. See https://success.vanillaforums.com/kb/articles/140-defer-javascript-loading-feature for more information.'
          type: boolean
          default: true
          example: true
          x-key: Feature.DeferredLegacyScripts.Enabled
          x-read: public
          x-write: community.manage
        labs.automationRules:
          description: 'Enable automation Rules.

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.AutomationRules.Enabled
          x-read: public
          x-write: site.manage
        labs.newAnalytics:
          description: 'Enable new analytics.

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.NewAnalytics.Enabled
          x-read: public
          x-write: site.manage
        labs.userCards:
          description: 'Enable user cards on older themes.

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.UserCards.Enabled
          x-read: public
          x-write: site.manage
        labs.useCustomLayout:
          description: 'Enable use custom layout.

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.UseCustomLayout.Enabled
          x-read: public
          x-write: site.manage
        labs.newSearchPage:
          description: 'Enable the new search UI on older themes.

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.useNewSearchPage.Enabled
          x-read: public
          x-write: site.manage
        labs.newQuickLinks:
          description: 'Enable the new quick links UI on older themes.

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.NewQuickLinks.Enabled
          x-read: public
          x-write: site.manage
        labs.newPostMenu:
          description: 'Enable the new post menu UI on older themes.

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.NewPostMenu.Enabled
          x-read: public
          x-write: site.manage
        labs.newUserManagement:
          description: 'Enable the new user management page with new table and control buttons.

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.NewUserManagement.Enabled
          x-read: public
          x-write: site.manage
        labs.newEmbedSystem:
          description: 'Enable the new embed system beta.

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.newEmbedSystem.Enabled
          x-read: public
          x-write: site.manage
        labs.customProfileFields:
          description: 'Enable custom profile fields.

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.CustomProfileFields.Enabled
          x-read: public
          x-write: site.manage
        labs.sentimentAnalysis:
          description: 'Enable sentiment analysis.

            '
          type: boolean
          default: false
          example: true
          x-key: EnabledPlugins.SentimentAnalysis
          x-read: public
          x-write: site.manage
        labs.aiSuggestions:
          description: 'Enable AI suggested answers

            '
          type: boolean
          default: false
          example: true
          x-key: Feature.AISuggestions.Enabled
          x-read: public
          x-write: site.manage
        embed.enabled:
          description: 'Allow the site to be embedded at the embed.remoteUrl.

            '
          type: boolean
          default: false
          example: true
          x-key: Garden.Embed.Allow
          x-write: site.manage
          x-read: site.manage
        embed.remoteUrl:
          description: 'Configure the remote embed URL for the site.

            '
          type: string
          default: ''
          example: https://my-site.com/forum
          x-key: Garden.Embed.RemoteUrl
          x-write: site.manage
          x-read: site.manage
        embed.forceEmbed:
          description: 'Redirect users from the non-embedded site to the embedded site.

            '
          type: boolean
          default: false
          example: true
          x-key: Garden.Embed.ForceModernEmbed
          x-write: site.manage
          x-read: site.manage
        discussions.layout:
          description: 'Choose the preferred layout for lists of discussions.

            '
          type: string
          default: foundation
          enum:
          - modern
          - table
          - foundation
          x-key: Vanilla.Discussions.Layout
          x-read: public
          x-write: site.manage
        discussionThread.layout:
          description: 'Choose the preferred layout for discussion threads.

            '
          type: string
          default: foundation
          enum:
          - foundation
          x-key: Vanilla.DiscussionThreads.Layout
          x-read: public
          x-write: site.manage
        categories.layout:
          description: 'Choose the preferred layout for lists of categories.

            '
          type: string
          default: modern
          enum:
          - modern
          - table
          - mixed
          - foundation
          x-key: Vanilla.Categories.Layout
          x-read: public
          x-write: site.manage
        routes.defaultController:
          type: array
          minItems: 2
          maxItems: 2
          items:
            type: string
          description: Define the routing rule for the home page. The first item is the URL or route to send the home page to. The second item is the type of redirect to perform. It must be one of "Internal", "Temporary" and "Permanent"
          x-key: Routes.DefaultController
          x-read: public
          x-write: site.manage
        vanilla.siteID:
          description: 'The community siteID.

            '
          type: number
          default: 0
          x-key: Vanilla.SiteID
          x-read: public
        redirectURL.profile:
          description: 'Custom URL to redirect the user instead of rendering Vanilla''s "Profile" page.

            '
          type: string
          default: ''
          x-key: Garden.Profile.RedirectUrl
          x-read: public
          x-write: site.manage
        redirectURL.message:
          description: 'Custom URL to redirect the user instead of rendering Vanilla''s "New Message" page.

            '
          type: string
          default: ''
          x-key: Garden.Messages.Add.RedirectUrl
          x-read: public
          x-write: site.manage
        password.minLength:
          description: 'The minimum number of characters a members password can be.

            '
          type: string
          default: ''
          x-key: Garden.Password.MinLength
          x-read: public
          x-write: site.manage
        registration.method:
          description: 'How members are able to register to the community.

            '
          type: string
          enum:
          - Basic
          - Approval
          - Invitation
          - Connect
          - Captcha
          default: Captcha
          x-key: Garden.Registration.Method
          x-read: public
          x-write: site.manage
        profile.editEmails:
          description: 'Responsible to allow users viewing own account, be able to edit their email.

            '
          type: boolean
          default: true
          x-key: Garden.Profile.EditEmails
          x-read: public
          x-write: site.manage
        seo.metaHtml:
          description: 'HTML <meta> tags for SEO purposes. This content is strictly validated to only contain meta tags `name` and `content` properties.

            '
          type: string
          default: ''
          minLength: 0
          x-read: community.manage
          x-write: community.manage
          x-allowHtml: true
        debug:
          description: "Enable debug mode across the whole site for all requests. Only to be used for development purposes. DO NOT call set this on production sites. It is recommend to turn this on only when needed even on development sites because it slows performance and exposes server paths in stack traces.\n\n Debug mode causes errors to show stack traces, disables various caches, and causes certaining warnings to turn into exceptions.\n"
          type: boolean
          default: false
          x-key: Debug
          x-read: public
          x-write: site.manage
        plugins.qna:
          description: Questions plugin enabled
          type: boolean
          default: false
          x-key: EnabledPlugins.QnA
          x-read: public
        plugins.ideation:
          description: Ideation plugin enabled
          type: boolean
          default: false
          x-key: EnabledPlugins.ideation
          x-read: public
        plugins.polls:
          description: Polls plugin enabled
          type: boolean
          default: false
          x-key: EnabledPlugins.Polls
          x-read: public
        plugins.resolved:
          description: Resolved plugin enabled
          type: boolean
          default: false
          x-key: EnabledPlugins.resolved2
          x-read: public
        preferences.categoryFollowed.defaults:
          description: 'This is where we store the default followed categories

            '
          type: string
          default: '[]'
          x-key: Preferences.CategoryFollowed.Defaults
          x-read: community.manage
          x-write: community.manage
        Search.AiConversation.ExcludedCategoryIDs:
          description: 'Array of category IDs to exclude from AI Search Assistant results

            '
          type: array
          items:
            type: integer
          example:
          - 1
          - 2
          - 3
          x-key: Search.AiConversation.ExcludedCategoryIDs
          x-read: site.manage
          x-write: site.manage
        Search.AiConversation.IncludedPostTypeIDs:
          description: 'Array of post type IDs to include in AI Search Assistant results. If empty, all post types are included.

            '
          type: array
          items:
            type: string
          example:
          - discussion
          - question
          x-key: Search.AiConversation.IncludedPostTypeIDs
          x-read: site.manage
          x-write: site.manage
        Search.AiConversation.IncludedStatusIDs:
          description: 'Array of status IDs to include in AI Search Assistant results. If empty, all statuses are included.

            '
          type: array
          items:
            type: integer
          example:
          - 1
          - 2
          - 3
          x-key: Search.AiConversation.IncludedStatusIDs
          x-read: site.manage
          x-write: site.manage
        emailStyles.format:
          description: 'Enable HTML emails

            '
          type: string
          default: html
          enum:
          - html
          - text
          x-key: Garden.Email.Format
          x-read: community.manage
          x-write: community.manage
        emailStyles.image:
          description: 'HTML email image

            '
          type: string
          default: ''
          x-key: Garden.EmailTemplate.Image
          x-read: community.manage
          x-write: community.manage
        emailStyles.textColor:
          description: 'HTML email text color

            '
          type: string
          default: '#333333'
          x-key: Garden.EmailTemplate.TextColor
          x-read: community.manage
          x-write: community.manage
        emailStyles.backgroundColor:
          description: 'HTML email background color

            '
          type: string
          default: '#eeeeee'
          x-key: Garden.EmailTemplate.BackgroundColor
          x-read: community.manage
          x-write: community.manage
        emailStyles.containerBackgroundColor:
          description: 'HTML email page color

            '
          type: string
          default: '#ffffff'
          x-key: Garden.EmailTemplate.ContainerBackgroundColor
          x-read: community.manage
          x-write: community.manage
        emailStyles.buttonTextColor:
          description: 'HTML email button text color

            '
          type: string
          default: '#ffffff'
          x-key: Garden.EmailTemplate.ButtonTextColor
          x-read: community.manage
          x-write: community.manage
        emailStyles.buttonBackgroundColor:
          description: 'HTML email button background text color

            '
          type: string
          default: '#38abe3'
          x-key: Garden.EmailTemplate.ButtonBackgroundColor
          x-read: community.manage
          x-write: community.manage
        outgoingEmails.supportName:
          description: 'Email sent from the application will be addressed from this name

            '
          type: string
          default: ''
          x-key: Garden.Email.SupportName
          x-read: community.manage
          x-write: community.manage
        outgoingEmails.supportAddress:
          description: 'Email sent from the application will be addressed from this email address

            '
          type: string
          default: ''
          x-key: Garden.Email.SupportAddress
          x-read: community.manage
          x-write: community.manage
        outgoingEmails.footer:
          description: 'This may be used to include content such as organization name and address in all outgoing emails.

            '
          type: string
          default: '[{"children":[{"text":""}],"type":"p"}]'
          x-key: Garden.Email.Footer
          x-read: community.manage
          x-write: community.manage
          x-allowHtml: true
        emailNotifications.disabled:
          description: 'When enabled, users may choose to receive notifications from the community

            '
          type: boolean
          default: false
          x-key: Garden.Email.Disabled
          x-read: community.manage
          x-write: community.manage
        emailNotifications.fullPost:
          description: 'Include full post in email notifications

            '
          type: boolean
          default: true
          x-key: Vanilla.Email.FullPost
          x-read: community.manage
          x-write: community.manage
        emailDigest.enabled:
          description: 'Use weekly community email digest

            '
          type: boolean
          default: false
          x-key: Garden.Digest.Enabled
          x-read: community.manage
          x-write: community.manage
        emailDigest.autosubscribe.enabled:
          description: 'Is auto subscribe to digest enabled for new users

            '
          type: boolean
          default: false
          x-key: Garden.Digest.Autosubscribe.Enabled
          x-read: community.manage
          x-write: community.manage
        emailDigest.logo:
          description: 'Digest logo

            '
          type: string
          default: ''
          x-key: Garden.Digest.Logo
          x-read: community.manage
          x-write: community.manage
        emailDigest.defaultFrequency:
          enum:
          - daily
          - weekly
          - monthly
          default: weekly
          x-key: Garden.Digest.DefaultFrequency
          x-read: community.manage
          x-write: community.manage
        emailDigest.dayOfWeek:
          description: 'The Digest will be delivered on the set day of the week.

            1 - Monday

            2 - Tuesday

            3 - Wednesday

            4 - Thursday

            5 - Friday

            6 - Saturday

            7 - Sunday

            '
          type: integer
          default: 1
          x-key: Garden.Digest.DayOfWeek
          x-read: community.manage
          x-write: community.manage
        emailDigest.monthly.dayOfWeek:
          description: 'The digest will be delivered on the set day of the week, once per month.

            Used together with emailDigest.monthly.setPosition.

            '
          type: integer
          default: 1
          x-key: Garden.Digest.Monthly.DayOfWeek
          x-read: community.manage
          x-write: community.manage
        emailDigest.monthly.setPosition:
          description: 'Specifies that the digest should be delivered on the first or last occurence of the selected weekday of each month.

            Used together with emailDigest.monthly.dayOfWeek.

            '
          type: string
          enum:
          - first
          - last
          default: first
          x-key: Garden.Digest.Monthly.SetPosition
          x-read: community.manage
          x-write: community.manage
        emailDigest.postCount:
          description: 'Maximum number of posts that should appear in the email digest

            '
          type: integer
          default: 5
          minimum: 3
          maximum: 20
          x-key: Garden.Digest.PostCount
          x-read: community.manage
          x-write: community.manage
        emailDigest.title:
          description: 'Title appearing in the subject of email digest

            '
          type: string
          default: ''
          x-key: Garden.Digest.Title
          x-read: community.manage
          x-write: community.manage
        emailDigest.includeCommunityName:
          description: 'Include community name in the subject

            '
          type: boolean
          default: true
          x-key: Garden.Digest.IncludeCommunityName
          x-read: community.manage
          x-write: community.manage
        emailDigest.introduction:
          description: 'Appears before main content in email digest

            '
          type: string
          default: '[{"children":[{"text":""}],"type":"p"}]'
          x-key: Garden.Digest.Introduction
          x-read: community.manage
          x-write: community.manage
          x-allowHtml: true
        emailDigest.footer:
          description: 'This may be used to include content such as organization name and address in email digest

            '
          type: string
          default: '[{"children":[{"text":""}],"type":"p"}]'
          x-key: Garden.Digest.Footer
          x-read: community.manage
          x-write: community.manage
          x-allowHtml: true
        emailDigest.i

# --- truncated at 32 KB (59 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vanilla-forums/refs/heads/main/openapi/vanilla-forums-config-api-openapi.yml