WeKan Settings API

The Settings API from WeKan — 5 operation(s) for settings.

Operations 7

GET /api/admin/attachment-settings Get the attachment storage / upload-block settings (GlobalAdmin) #
PUT /api/admin/attachment-settings Update the attachment storage / upload-block settings (GlobalAdmin) #
GET /api/settings Get the global Admin Panel settings #
PUT /api/settings Update the global Admin Panel settings #
GET /api/admin/oauth-providers Get the OAuth login provider and passwordless settings #
PUT /api/admin/oauth-providers/{providerKey} Update one OAuth login provider's Admin Panel settings #
PUT /api/admin/passwordless Turn passwordless (email sign-in code) login on or off #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/wekan:wekan-settings-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

wekan-settings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Wekan Settings API
  version: '1.0'
  description: 'Operations tagged Settings across 2 of this provider''s published API definitions: wekan-meteor3-openapi.yml, wekan-openapi.yml. Each path carries the servers of the definition it was published in.'
tags:
- name: Settings
paths:
  /api/admin/attachment-settings:
    get:
      operationId: get_attachment_settings
      summary: Get the attachment storage / upload-block settings (GlobalAdmin)
      description: 'Only the global admin can call this. Returns the Admin Panel >

        Attachments settings document, including `limitSettings.attachmentsUploadBlocked`

        and `limitSettings.avatarsUploadBlocked` plus the size limits. Cloud-storage

        secret keys (S3 secretAccessKey, Azure accountKey/connectionString, GCS

        credentials) are masked and never returned; a boolean `Set` marker

        shows whether a value exists.'
      tags:
      - Settings
      security:
      - UserSecurity: []
      responses:
        '200':
          description: 200 response
          content:
            application/json:
              schema:
                type: Object
    put:
      operationId: update_attachment_settings
      summary: Update the attachment storage / upload-block settings (GlobalAdmin)
      description: 'Only the global admin can call this. The request body is a

        partial settings object (for example

        `{"limitSettings": {"avatarsUploadBlocked": true}}`). It is applied through

        the same update path as the `updateAttachmentStorageSettings` Meteor method,

        so validation and `$set` semantics are identical: cloud-storage secrets left

        blank are preserved. The masked, updated settings document is returned.'
      tags:
      - Settings
      security:
      - UserSecurity: []
      responses:
        '200':
          description: 200 response
          content:
            application/json:
              schema:
                type: Object
  /api/settings:
    get:
      operationId: get_global_settings
      summary: Get the global Admin Panel settings
      description: 'Only the global admin can call this. SMTP/mail-server

        credentials are never returned.'
      tags:
      - Settings
      security:
      - UserSecurity: []
      responses:
        '200':
          description: 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Settings'
    put:
      operationId: update_global_settings
      summary: Update the global Admin Panel settings
      description: 'Only the global admin can call this. The request body is an

        object whose keys are settings fields to update (see get_global_settings for

        the list). Unknown keys and `mailServer` are ignored.'
      tags:
      - Settings
      security:
      - UserSecurity: []
      responses:
        '200':
          description: 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Settings'
  /api/admin/oauth-providers:
    get:
      operationId: get_oauth_provider_settings
      summary: Get the OAuth login provider and passwordless settings
      description: 'The Admin Panel / People / Login section for Meteor''s own

        accounts-* login services (Google, GitHub, Facebook, X/Twitter, Meteor

        Developer, Weibo, Meetup) and passwordless email codes. For every provider

        field, the shared login style, the merge switch and passwordless it reports

        which source is in effect - `env` (the `OAUTH_*` / `PASSWORDLESS_ENABLED`

        environment variable), `admin` (a value saved in the Admin Panel) or

        `unset` - and the resolved value. A provider''s secret is reported ONLY as

        `{ source, hasValue }`; its value is never returned. Only the global admin

        can call this.'
      tags:
      - Settings
      security:
      - UserSecurity: []
      responses:
        '200':
          description: 200 response
          content:
            application/json:
              schema:
                type: object
                properties:
                  providers:
                    type: object
                  loginStyle:
                    type: object
                    properties:
                      source:
                        type: string
                      value:
                        type: string
                  mergeExistingUsers:
                    type: object
                    properties:
                      source:
                        type: string
                      value:
                        type: string
                  passwordless:
                    type: object
                    properties:
                      source:
                        type: string
                      value:
                        type: string
  /api/admin/oauth-providers/{providerKey}:
    put:
      operationId: update_oauth_provider_settings
      summary: Update one OAuth login provider's Admin Panel settings
      description: 'The same save the Admin Panel makes: `enabled` and `id` are

        stored as given, `secret` only when non-empty (an empty or missing secret

        leaves the stored one untouched), and `loginStyle` must be `popup` or

        `redirect` (anything else clears the per-provider override). The two

        settings shared by every provider, `globalLoginStyle` and

        `mergeExistingUsers`, may ride along. A value saved here wins over the

        environment variable, and the provider is reconfigured at once, without a

        restart. The response is the same source report as

        get_oauth_provider_settings and never contains a secret. Only the global

        admin can call this.'
      tags:
      - Settings
      parameters:
      - name: providerKey
        in: path
        description: 'one of google, github, facebook, twitter, meteor-developer, weibo, meetup

          '
        required: true
        schema:
          type: string
      security:
      - UserSecurity: []
      responses:
        '200':
          description: 200 response
          content:
            application/json:
              schema:
                type: object
                properties:
                  providers:
                    type: object
                  loginStyle:
                    type: object
                    properties:
                      source:
                        type: string
                      value:
                        type: string
                  mergeExistingUsers:
                    type: object
                    properties:
                      source:
                        type: string
                      value:
                        type: string
                  passwordless:
                    type: object
                    properties:
                      source:
                        type: string
                      value:
                        type: string
  /api/admin/passwordless:
    put:
      operationId: update_passwordless_settings
      summary: Turn passwordless (email sign-in code) login on or off
      description: 'The Admin Panel override of `PASSWORDLESS_ENABLED`. While it

        is off, the sign-in-code form is not shown and the token request and the

        login attempt are both refused, so the package can neither create accounts

        nor send codes. Takes effect at once, without a restart. Only the global

        admin can call this.'
      tags:
      - Settings
      security:
      - UserSecurity: []
      responses:
        '200':
          description: 200 response
          content:
            application/json:
              schema:
                type: object
                properties:
                  passwordless:
                    type: object
                    properties:
                      source:
                        type: string
                      value:
                        type: string
components:
  schemas:
    Settings:
      type: object
      properties:
        disableRegistration:
          type:
          - boolean
          - 'null'
        disableForgotPassword:
          type:
          - boolean
          - 'null'
        renderLinksAsPlainText:
          type:
          - boolean
          - 'null'
        alwaysShowCodeAsText:
          type:
          - boolean
          - 'null'
        disableActivities:
          type:
          - boolean
          - 'null'
        disableNotifications:
          type:
          - boolean
          - 'null'
        disableWatch:
          type:
          - boolean
          - 'null'
        enablePermanentDelete:
          type:
          - boolean
          - 'null'
        disableAllExport:
          type:
          - boolean
          - 'null'
        disableAllImport:
          type:
          - boolean
          - 'null'
        disableExportAvatars:
          type:
          - boolean
          - 'null'
        disableImportAvatars:
          type:
          - boolean
          - 'null'
        anonymizeExportUsers:
          type:
          - boolean
          - 'null'
        anonymizeImportUsers:
          type:
          - boolean
          - 'null'
        mailServer:
          $ref: '#/components/schemas/SettingsMailserver'
        productName:
          type:
          - string
          - 'null'
        themeColor:
          description: 'The site theme, set in Admin Panel / Settings / Visibility / Change color.

            It is the layer between WeKan''s default theme and a user''s own override

            (docs/Theme/Theme.md): whoever has not picked a theme of their own sees

            this one. On a multitenancy host the Organization''s own value replaces it

            (models/lib/tenants.js BRANDING_FIELDS).

            '
          type:
          - string
          - 'null'
        themeCustomColors:
          description: 'The custom colours of that theme: one for a flat theme, two for a clear

            (gradient) one.

            '
          type:
          - array
          - 'null'
          items:
            type:
            - string
            - 'null'
        displayAuthenticationMethod:
          type:
          - boolean
          - 'null'
        defaultAuthenticationMethod:
          type: string
        spinnerName:
          type:
          - string
          - 'null'
        hideLogo:
          type:
          - boolean
          - 'null'
        hideCardCounterList:
          type:
          - boolean
          - 'null'
        cardsLoading:
          type:
          - string
          - 'null'
          enum:
          - all
          - lazy
        hideBoardMemberList:
          type:
          - boolean
          - 'null'
        hideBoardActivitiesOnAllBoards:
          type:
          - boolean
          - 'null'
        customLoginLogoImageUrl:
          type:
          - string
          - 'null'
        customLoginLogoLinkUrl:
          type:
          - string
          - 'null'
        customHelpLinkUrl:
          type:
          - string
          - 'null'
        textBelowCustomLoginLogo:
          type:
          - string
          - 'null'
        automaticLinkedUrlSchemes:
          type:
          - string
          - 'null'
        customTopLeftCornerLogoImageUrl:
          type:
          - string
          - 'null'
        customTopLeftCornerLogoLinkUrl:
          type:
          - string
          - 'null'
        customTopLeftCornerLogoHeight:
          type:
          - string
          - 'null'
        oidcBtnText:
          type:
          - string
          - 'null'
        mailDomainName:
          type:
          - string
          - 'null'
        legalNotice:
          type:
          - string
          - 'null'
        customHeadEnabled:
          type:
          - boolean
          - 'null'
        customHeadMetaTags:
          type:
          - string
          - 'null'
        customHeadLinkTags:
          type:
          - string
          - 'null'
        customManifestEnabled:
          type:
          - boolean
          - 'null'
        customManifestContent:
          type:
          - string
          - 'null'
        customAssetLinksEnabled:
          type:
          - boolean
          - 'null'
        customAssetLinksContent:
          type:
          - string
          - 'null'
        accessibilityPageEnabled:
          type:
          - boolean
          - 'null'
        accessibilityTitle:
          type:
          - string
          - 'null'
        accessibilityContent:
          type:
          - string
          - 'null'
        supportPopupText:
          type:
          - string
          - 'null'
        supportPageEnabled:
          type:
          - boolean
          - 'null'
        supportPagePublic:
          type:
          - boolean
          - 'null'
        boardMembersFromSameOrgOnly:
          type:
          - boolean
          - 'null'
        boardMembersFromSameTeamOnly:
          type:
          - boolean
          - 'null'
        boardMembersFromSameOrgOrTeamOnly:
          type:
          - boolean
          - 'null'
        supportTitle:
          type:
          - string
          - 'null'
        supportPageText:
          type:
          - string
          - 'null'
        createdAt:
          type: string
        modifiedAt:
          type: string
      required:
      - defaultAuthenticationMethod
      - createdAt
      - modifiedAt
    SettingsMailserver:
      type: object
      properties:
        username:
          type: string
        password:
          type: string
        host:
          type: string
        port:
          type: string
        enableTLS:
          type: boolean
        from:
          type: string
        enabled:
          type: boolean
        service:
          type: string
        configurations:
          type: object
        passwords:
          type: object
        passwordSet:
          type: object
    Settings_2:
      type: object
      properties:
        disableRegistration:
          type:
          - boolean
          - 'null'
        disableForgotPassword:
          type:
          - boolean
          - 'null'
        renderLinksAsPlainText:
          type:
          - boolean
          - 'null'
        alwaysShowCodeAsText:
          type:
          - boolean
          - 'null'
        externalLinkPatternPrefix:
          type:
          - string
          - 'null'
        externalLinkPatternUrl:
          type:
          - string
          - 'null'
        externalLinkRules:
          type:
          - string
          - 'null'
        externalLinkIdentifierAliases:
          type:
          - string
          - 'null'
        disableActivities:
          type:
          - boolean
          - 'null'
        enableSyncCronEffects:
          type:
          - boolean
          - 'null'
        disableNotifications:
          type:
          - boolean
          - 'null'
        disableWatch:
          type:
          - boolean
          - 'null'
        enablePermanentDelete:
          type:
          - boolean
          - 'null'
        disableAllExport:
          type:
          - boolean
          - 'null'
        disableAllImport:
          type:
          - boolean
          - 'null'
        disableExportAvatars:
          type:
          - boolean
          - 'null'
        disableImportAvatars:
          type:
          - boolean
          - 'null'
        anonymizeExportUsers:
          type:
          - boolean
          - 'null'
        anonymizeImportUsers:
          type:
          - boolean
          - 'null'
        mailServer:
          $ref: '#/components/schemas/SettingsMailserver'
        inboundMail:
          type:
          - object
          - 'null'
        emailBounces:
          type:
          - object
          - 'null'
        productName:
          type:
          - string
          - 'null'
        themeColor:
          description: 'The site theme, set in Admin Panel / Settings / Visibility / Change color.

            It is the layer between WeKan''s default theme and a user''s own override

            (docs/Theme/Theme.md): whoever has not picked a theme of their own sees

            this one. On a multitenancy host the Organization''s own value replaces it

            (models/lib/tenants.js BRANDING_FIELDS).

            '
          type:
          - string
          - 'null'
        themeCustomColors:
          description: 'The custom colours of that theme: one for a flat theme, two for a clear

            (gradient) one.

            '
          type:
          - array
          - 'null'
          items:
            type:
            - string
            - 'null'
        displayAuthenticationMethod:
          type:
          - boolean
          - 'null'
        defaultAuthenticationMethod:
          type: string
        spinnerName:
          type:
          - string
          - 'null'
        hideLogo:
          type:
          - boolean
          - 'null'
        hideCardCounterList:
          type:
          - boolean
          - 'null'
        featureStates:
          type:
          - object
          - 'null'
        webhookInternalHosts:
          type:
          - array
          - 'null'
          items:
            type:
            - string
            - 'null'
        accountWebhook:
          type:
          - object
          - 'null'
        sqrlEnabled:
          type:
          - boolean
          - 'null'
        activityPubEnabled:
          type:
          - boolean
          - 'null'
        rulesReadOnlyForMembers:
          type:
          - boolean
          - 'null'
        optionalApis:
          type:
          - object
          - 'null'
        featureApprovalRequired:
          type:
          - boolean
          - 'null'
        featureKnownKeys:
          type:
          - array
          - 'null'
          items:
            type:
            - string
            - 'null'
        featurePreviewAdmins:
          type:
          - boolean
          - 'null'
        cardFieldStates:
          type:
          - object
          - 'null'
        cardsLoading:
          type:
          - string
          - 'null'
          enum:
          - all
          - lazy
        hideDateFormat:
          type:
          - boolean
          - 'null'
        globalDateFormat:
          type:
          - string
          - 'null'
          enum:
          - yyyy-mm-dd
          - dd-mm-yyyy
          - mm-dd-yyyy
          - yyyy-mm-dd-date-only
          - dd-mm-yyyy-date-only
          - mm-dd-yyyy-date-only
        hideBoardMemberList:
          type:
          - boolean
          - 'null'
        hideBoardActivitiesOnAllBoards:
          type:
          - boolean
          - 'null'
        customLoginLogoImageUrl:
          type:
          - string
          - 'null'
        customLoginLogoLinkUrl:
          type:
          - string
          - 'null'
        customHelpLinkUrl:
          type:
          - string
          - 'null'
        textBelowCustomLoginLogo:
          type:
          - string
          - 'null'
        automaticLinkedUrlSchemes:
          type:
          - string
          - 'null'
        customTopLeftCornerLogoImageUrl:
          type:
          - string
          - 'null'
        customTopLeftCornerLogoLinkUrl:
          type:
          - string
          - 'null'
        customTopLeftCornerLogoHeight:
          type:
          - string
          - 'null'
        oidcBtnText:
          type:
          - string
          - 'null'
        mailDomainName:
          type:
          - string
          - 'null'
        legalNotice:
          type:
          - string
          - 'null'
        customPrivateBoardDesc:
          type:
          - string
          - 'null'
        customPublicBoardDesc:
          type:
          - string
          - 'null'
        customHeadEnabled:
          type:
          - boolean
          - 'null'
        customHeadMetaTags:
          type:
          - string
          - 'null'
        customHeadLinkTags:
          type:
          - string
          - 'null'
        customManifestEnabled:
          type:
          - boolean
          - 'null'
        customManifestContent:
          type:
          - string
          - 'null'
        customAssetLinksEnabled:
          type:
          - boolean
          - 'null'
        customAssetLinksContent:
          type:
          - string
          - 'null'
        accessibilityPageEnabled:
          type:
          - boolean
          - 'null'
        accessibilityTitle:
          type:
          - string
          - 'null'
        accessibilityContent:
          type:
          - string
          - 'null'
        supportPopupText:
          type:
          - string
          - 'null'
        supportPageEnabled:
          type:
          - boolean
          - 'null'
        supportPagePublic:
          type:
          - boolean
          - 'null'
        boardMembersFromSameOrgOnly:
          type:
          - boolean
          - 'null'
        boardMembersFromSameTeamOnly:
          type:
          - boolean
          - 'null'
        boardMembersFromSameOrgOrTeamOnly:
          type:
          - boolean
          - 'null'
        notifyDefaultTray:
          type:
          - boolean
          - 'null'
        notifyDefaultEmail:
          type:
          - boolean
          - 'null'
        notificationDelivery:
          type:
          - object
          - 'null'
        inviteEmailSubjectTemplate:
          type:
          - string
          - 'null'
        inviteEmailBodyTemplate:
          type:
          - string
          - 'null'
        activityEmailSubjectTemplate:
          type:
          - string
          - 'null'
        activityEmailBodyTemplate:
          type:
          - string
          - 'null'
        supportTitle:
          type:
          - string
          - 'null'
        supportPageText:
          type:
          - string
          - 'null'
        saml:
          type:
          - object
          - 'null'
        ldap:
          type:
          - object
          - 'null'
        oidc:
          type:
          - object
          - 'null'
        cas:
          type:
          - object
          - 'null'
        headerLogin:
          type:
          - object
          - 'null'
        loginOptions:
          type:
          - object
          - 'null'
        attachmentRetention:
          type:
          - object
          - 'null'
        backupOptions:
          type:
          - object
          - 'null'
        inboundMailLimits:
          type:
          - object
          - 'null'
        windowsSso:
          type:
          - object
          - 'null'
        oauthProviders:
          type:
          - object
          - 'null'
        oauthProvidersLoginStyle:
          type:
          - string
          - 'null'
          enum:
          - popup
          - redirect
        oauthProvidersMergeExistingUsers:
          type:
          - boolean
          - 'null'
        oauthProvidersAllowedEmailDomains:
          type:
          - string
          - 'null'
        passwordlessEnabled:
          type:
          - boolean
          - 'null'
        createdAt:
          type: string
        modifiedAt:
          type: string
      required:
      - defaultAuthenticationMethod
      - createdAt
      - modifiedAt
  securitySchemes:
    UserSecurity:
      type: apiKey
      in: header
      name: Authorization
x-refined-from:
- wekan-meteor3-openapi.yml
- wekan-openapi.yml