Skip to content

Expose User-Scoped App Settings via Graph API (similar to Microsoft Graph extensions) #2489

@mschneider82

Description

@mschneider82

Initial Checklist

  • I understand this is a feature request and questions should be posted in the Community Discussions
  • I searched issues and couldn’t find anything (or linked relevant results below)

Idea

As a developer building custom web applications within OpenCloud, I need a way to persist and retrieve user-specific application settings in a secure and server-side manner.

Currently, OpenCloud provides a Graph API under /graph/v1.0/ for accessing user-related resources such as /me and /users/{id}. However, there is no mechanism to store custom, application-specific data scoped to a user.

At the same time, OpenCloud already includes an internal Settings Service that appears to support user-scoped configuration via settings bundles, but this functionality is not exposed through a public API.

Problem:

Custom web apps in OpenCloud are typically frontend-only and cannot directly interact with internal backend services like the Settings Service.

As a result:

  • there is no native way to persist app-specific user settings within OpenCloud
  • developers must build external backends and storage
  • existing platform capabilities (Settings Service) cannot be reused
  • integration becomes more complex and less consistent

Use Case:

A webmail application running inside OpenCloud needs to store per-user configuration such as:

  • IMAP/SMTP server settings
  • login identifiers
  • user preferences

These settings should:

  • be stored server-side
  • be scoped to the authenticated user (/me)
  • persist across sessions
  • be securely handled

Proposed Solution:

Expose a user-scoped settings resource via the existing Graph API, aligned with its current structure.

Example endpoints:

GET    /graph/v1.0/me/settings/{appNamespace}
PUT    /graph/v1.0/me/settings/{appNamespace}
PATCH  /graph/v1.0/me/settings/{appNamespace}

Optional (administrative / service-level access):

GET    /graph/v1.0/users/{userId}/settings/{appNamespace}

Example:

PUT /graph/v1.0/me/settings/webmail

{
  "imapServer": "imap.example.com",
  "smtpServer": "smtp.example.com",
  "username": "user@example.com"
}

Design Considerations:

  • Namespacing per application ({appNamespace})
  • JSON-based schema (flexible structure)
  • Storage backed by existing Settings Service
  • Access control based on authenticated user context

Optional:

  • encryption for sensitive values
  • quotas / size limits
  • validation hooks

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Unqualified

    Status

    Qualification

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions