Skip to content

FDC3 Standard 2.0

Compare
Choose a tag to compare
@kriswest kriswest released this 30 Aug 11:31
21e5318

v2.0 of the FDC3 standard, consisting of:

Release highlights

Formal specification

API

  • Added the ability to return data or a channel from a raised intent, via the addition of an IntentHandler type and a getResult() to IntentResolution.
  • All DesktopAgent and Channel API functions are now async for consistency, changing the return type of the broadcast, addIntentListener, addContextListener and getInfo functions.
  • Added support for targetting of intents at specific app instances via an instanceId (and optional instanceMetadata) field to AppIdentifier and AppMetadata and a new `findInstances() function.
  • Added a new recommended set of user channel definitions to promote consistency between Desktop Agents (in anticipation of Desktop Agent implementations communicating with each other in future).
  • Added the optional exposure of originating app metadata to messages received.
  • Added a getAppMetdata() function to the desktop agent that can be used to retrieve the full AppMetadata for an AppIdentifier and reduced types such as IntentResolution.source and ContextMetadata.source from AppMetadata to AppIdentifier to clarify what fields a developer can rely on and that they should manually retrieve the full AppMetadata when they need it for display purposes.
  • Clarified descriptions of expected behaviour of many functions including raiseIntent, addContextListener and joinChannel
  • Clarified how the broadcast of 'composed' types should be handled so that apps can respond to the sub-types (broadcast each subtype that you expect other apps to respond to, then the composed type).
  • Replaced 'System channels' to 'User channels' to better reflect their usage and reduce developer confusion about the difference between User channels and App Channels.
  • Adjusted wording in API spec and documentation to acknowledge the possibility of methods of intent resolution other than a resolver UI.
  • The joinChannel, getCurrentChannel and leaveCurrentChannel` functions have been made optional for FDC3 API compliance (as equivalent functionality is usually implemented by a Desktop Agent via a selector UI on the window chrome.
  • open, raiseIntent and raiseIntentForContext function signatures that make use of the app name have been deprecated in favour of using AppIdentifier (which is a new parent of AppMetadata that clarifies required fields for API call parameters)
  • Removed details of the 'global' channel that was deprecated in FDC3 1.2.

App Directory

  • Reconfirmed the role appD in FDC3 and its description via a re-written AppD overview page.
  • Added /v2/ paths to the AppD's specification, allowing a single implementation to support serving both FDC3 v1.2 and v2.0 application records, enabling simpler migration.
  • App Directory endpoint for creating applications was removed as these will often be implementation dependent and should not be required for compliance.
  • App Directory endpoint for searching applications was removed as searches over multiple app directories are better implemented by retrieving all the records and searching over the resulting combined dataset.
  • Changes to app directory records:
    • Improved container independence of appD records by adding support for including or referencing multiple container or web app manifests for each app by removing the manifestType and manifest properties and replacing them with the new type (required), details and hostManifests properties.
    • Added better support for native applications in appD via the new type and details fields.
    • Added an interop field to AppD application records, replacing the intents field, to more fully describe an app's use of FDC3 and enable search for apps that 'interoperate' with a selected app
    • images field was replaced with screenshots to better align the application record with web application manifest and match its format to that used by icons
    • Added a moreInfo URL field to AppD application records to enable linking to a web page with more information on an app.
    • Added lang field to AppD application records to specify the primary language of an app and its appD record.
    • Added localizedVersions field to AppD application records to support localized versions of descriptive fields in the app records
    • Added categories field and recommended categories list to AppD application records to enable category based browsing of AppDs

Intents

  • Extended Intent Naming conventions to support intents that return or interact with data.
  • Added new intent definitions:
    • ViewResearch: see the latest research on a particular stock.
    • ViewProfile: supersedes the ViewContact intent and allows the viewing of profiles for different entity types (e.g. organisations).
    • ViewInteractions: see the latest interactions (calls, meetings, conferences, roadshows) on a particular stock or with an individual or organization.
    • ViewOrders: see the order history of an individual, an institution or of a particular instrument.
    • StartEmail: initiate an email with a contact or list of contacts.
  • Deprecated the ViewContact intent, which is superseded by ViewProfile.

Contexts

  • Added support for raiseIntent without a context via the addition of the fdc3.nothing context type (#375)
  • Added new context types representing:
    • a range of time: `fdc3.timerange.
    • a currency: fdc3.currency.
    • the price and value of a holding fdc3.valuation.
    • a chart fdc3.chart.
    • parameters for the initialization of a chat conversation fdc3.chat.initSettings.
    • parameters for the initialization of an email to a contact or list of contacts fdc3.email
  • Extended recommended field type conventions for contexts to include types for ids, times, dates, currency codes and country codes.
    • The fdc3.country context type was updated to comply with the recommended field name for country codes (COUNTRY_ISOALPHA2).
    • Updated definition of the Position context type to support negative (short) positions

See the CHANGELOG.md for full details.