Skip to main content

FlowOn API Studio

FlowOn API Studio is the visual designer where functional consultants configure API endpoints. It provides a no-code interface for defining what data and operations are exposed through the REST API.

Studio Structure

┌─────────────────────────────────────────────────────────────────────┐
│ FlowOn API STUDIO │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ CONTEXT │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ User │ │ Roles │ │ │
│ │ │ Properties │ │ Definitions │ │ │
│ │ └─────────────────┘ └─────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ OPTION SETS │ │
│ │ Global CRM Option Sets exposed as endpoints │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ MODULES │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ Module: Sales │ │ │
│ │ │ ├── Entities │ │ │
│ │ │ │ ├── Account │ │ │
│ │ │ │ │ ├── Create │ │ │
│ │ │ │ │ ├── Update │ │ │
│ │ │ │ │ ├── Delete │ │ │
│ │ │ │ │ ├── Upload │ │ │
│ │ │ │ │ ├── Download │ │ │
│ │ │ │ │ ├── Local Process Actions │ │ │
│ │ │ │ │ └── Local Option Sets │ │ │
│ │ │ │ └── Contact │ │ │
│ │ │ ├── Processes │ │ │
│ │ │ │ └── Global Process Actions │ │ │
│ │ │ └── Queries │ │ │
│ │ │ ├── Single Queries │ │ │
│ │ │ ├── Multi Queries │ │ │
│ │ │ └── Paginated Queries │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ Module: Service │ │ │
│ │ │ ├── Entities │ │ │
│ │ │ ├── Processes │ │ │
│ │ │ └── Queries │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘

Context Configuration

The Context section defines user-related information that is available throughout the API. It establishes the security and identity foundation for API requests.

User Properties

The User configuration defines which properties are returned as part of the user context when authenticated users access the API.

ConfigurationDescription
User PropertiesFields from the User entity to include in the context
Related DataAssociated records to include (e.g., Business Unit, Team)
Custom PropertiesCalculated or derived values to expose

Example User Context Configuration

User Context Properties:
├── systemuserid (GUID)
├── fullname (String)
├── internalemailaddress (String)
├── businessunitid (Entity Reference)
├── title (String)
├── Custom: IsManager (Boolean) - calculated field
└── Custom: TeamNames (String[]) - derived from team memberships

Resulting API Response:

{
"user": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"fullName": "John Smith",
"email": "john.smith@company.com",
"businessUnitId": "bu-guid-here",
"title": "Senior Analyst",
"isManager": true,
"teamNames": ["Sales Team", "Project Alpha"]
}
}

Roles

The Roles configuration defines the security roles that are used for API authorization. These roles determine what endpoints and data users can access.

ConfigurationDescription
Role DefinitionsNamed roles used in API authorization
Role MappingHow Dynamics 365 security roles map to API roles
Role HierarchyInheritance relationships between roles

Example Roles Configuration

API Roles:
├── Administrator
│ └── Maps to: System Administrator security role
├── Manager
│ └── Maps to: Sales Manager, Service Manager roles
├── StandardUser
│ └── Maps to: Salesperson, Customer Service Representative
└── ReadOnly
└── Maps to: Read-Only User role

Usage in API:

  • Endpoints can require specific roles
  • Queries can be filtered by role
  • Actions can have role-based access control

Option Sets

The Option Sets section exposes Dynamics 365 global option sets as API endpoints. This allows UI applications to retrieve picklist values for dropdowns, filters, and validation.

Why Expose Option Sets?

Web and mobile applications need access to the same picklist values that appear in Dynamics 365. Instead of hardcoding these values (which break when options change), the API exposes them dynamically.

Configuration

SettingDescription
Option Set NameThe Dynamics 365 global option set to expose
Endpoint NameThe URL path for retrieving this option set
Include InactiveWhether to include inactive options
Custom FilteringAdditional filter criteria

Example Option Sets Configuration

Exposed Option Sets:
├── AccountCategory
│ └── Endpoint: /api/optionsets/account-category
├── ContactPreferredMethod
│ └── Endpoint: /api/optionsets/contact-preferred-method
├── CaseStatus
│ └── Endpoint: /api/optionsets/case-status
└── PriorityLevel
└── Endpoint: /api/optionsets/priority-level

Option Set Request Parameters

ParameterTypeRequiredDescription
lcidIntegerNoLocale ID for label localization. Default: 1033 (English)

Common LCID Values

LCIDLanguage
1033English (US)
1025Arabic
1036French
1031German
1034Spanish
2052Chinese (Simplified)
1041Japanese

API Response Format

Request:

GET /api/optionsets/gender

Response (200 OK):

[
{
"name": "Male",
"value": 1
},
{
"name": "Female",
"value": 2
}
]

Request with Localization:

GET /api/optionsets/gender?lcid=1025

Response (200 OK) - Arabic:

[
{
"name": "ذكر",
"value": 1
},
{
"name": "أنثى",
"value": 2
}
]

Option Set Response Structure

FieldTypeDescription
nameStringLocalized display label for the option
valueIntegerThe option set value (used in API requests)

Modules

Modules are organizational containers that group related API endpoints together. They function like folders, helping you organize your API logically by business domain or functional area.

Module Structure

ComponentDescription
Module NameIdentifier for the grouping (e.g., "Sales", "Service", "Inventory")
EntitiesCRM entities exposed within this module
ProcessesGlobal process actions exposed within this module
QueriesCustom queries defined within this module

Example Module Organization

Modules:
├── Sales
│ ├── Entities: Account, Contact, Opportunity, Quote
│ ├── Processes: ApproveQuote, ConvertLead
│ └── Queries: ActiveOpportunities, TopCustomers

├── Service
│ ├── Entities: Case, KnowledgeArticle
│ ├── Processes: EscalateCase, ResolveCase
│ └── Queries: OpenCases, CasesByPriority

├── Inventory
│ ├── Entities: Product, PriceListItem
│ ├── Processes: AdjustInventory
│ └── Queries: LowStockProducts, ProductCatalog

└── Administration
├── Entities: User, Team
├── Processes: DeactivateUser
└── Queries: ActiveUsers, TeamMembers