All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
FDC3 Standard 2.0 - 2022-07-01
- Definition of the
icons
property ofAppMetadata
, based on PWA icon spec (#319) - Added support for raiseIntent without a context via the addition of the
fdc3.nothing
context type (#375) - Added FDC3 Workbench, an FDC3 API developer application (#457)
- Added advice on how to
broadcast
complex context types, composed of other types, so that other apps can listen for both the complex type and simpler constituent types (#464) - Added the ability to return data from an intent, via the addition of an IntentHandler type and a
getResult()
to IntentResolution, both of which return a Promise of a Context object. (#495) - Added a field to specify the Context type that intent can return to the AppD Application schema and extended the findIntent API calls to be able to use it for resolution. (#499)
- Added the ability to return a Channel from an intent (via the
IntentResult
type), resolver support for intents that return Channels and the concept of PrivateChannels. (#508) - Added error
UserCancelled
to theResolveError
enumeration to be used when user closes the resolver UI or otherwise cancels resolution of a raised intent (#522) - Added
IntentDeliveryFailed
to theResolveError
enumeration to be used when delivery of an intent and context to a targetted app or instance fails. (#601) - Added an
instanceId
(and optionalinstanceMetadata
) field toAppMetadata
allowing it to refer to specific app instances and thereby supporting targetting of intents to specific app instances. Also added afindInstances()
function to the desktop agent andTargetAppUnavailable
andTargetInstanceUnavailable
Errors to theResolveError
enumeration. (#509) - Added a References and Bibliography section to the Standard's documentation to hold links to 'normative references' and other documentation that is useful for understanding the standard (#530)
- Added a Trademarks page to website to acknowledge trademarks used within the Standard not owned by FINOS or the Linux Foundation (#534)
- Added details of FDC3's existing versioning and deprecation policies to the FDC3 compliance page (#539)
- Added a new experimental features policy, which exempts features designated as experimental from the versioning and deprecation policies, to the FDC3 compliance page (#549)
- Added a recommended set of user channel definitions to the API docs and typescript sources (#727)
- Added the optional exposure of originating app metadata to messages received via
addContextListener
andaddIntentListener
via the newContextMetadata
type. (#725) - Added the current app's
AppMetadata
to theImplementationMetadata
returned byfdc3.getInfo()
allowing an app to retrieve its own metadata, according to the Desktop Agent (#726) - Added a context type representing a range of time (
fdc3.timerange
). (#706) - Added a context type representing a Currency (
fdc3.currency
). (#708) - Added a context type representing the price and value of a holding (
fdc3.valuation
). (#709) - Added a context type representing a Chart (
fdc3.chart
). (#715) - Added a context type
ChatInitSettings
to initialize a chat creation with new optional parameters (#620) - Added guide on how to submit a new Intent. (#624)
- Added a
ViewResearch
Intent to be used when a user wants to see the latest research on a particular stock (#623) - Added a
ViewProfile
intent, which supersedes theViewContact
intent which is deprecated. (#619) - Added a
ViewInteractions
intent to be used when a user wants to see the latest interactions (calls, meetings, conferences, roadshows) on a particular stock or with an individual or organization. (#625) - Added a
ViewOrders
intent to be used when a user wants to see the order history of an individual, an institution or of a particular instrument. (#672) - Added a
StartEmail
intent andfdc3.email
context type to be used to initiate an email with a contact or list of contacts provided as part of the context. (#632) - Added a definition for "app directory record" to the FDC3 glossary to be used to refer to a single appD record (#658)
- 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 (#666) - Added a
moreInfo
URL field to AppD application records to enable linking to a web page with more information on an app (#669) - Added
lang
field to AppD application records to specify the primary language of an app and its appD record. (#670) - Added
localizedVersions
field to AppD application records to support localized versions of descriptive fields in the app records and alternative launch details for localized versions of the applications themselves. (#670) - Added
type
anddetails
elements to AppD application records to support vendor-agnostic launch details for both web and native apps (#671) - Added
categories
field and recommended categories list to AppD application records to enable category based browsing of AppDs (#673) - Added an
interop
field to AppD application records, replacing theintents
field, to more fully describe an app's use of FDC3 and enable search for apps that 'interoperate' with a selected app (#697) - Added
AppIdentifier
type, which is a new parent ofAppMetadata
and clarifies required fields for API call parameters which now preferappId
andinstanceId
overname
(#722) - Added a
getAppMetdata()
function to the desktop agent that can be used to retrieve the fullAppMetadata
for anAppIdentifier
and reduced types such asIntentResolution.source
andContextMetadata.source
fromAppMetadata
toAppIdentifier
to clarify what fields a developer can rely on and that they should manually retrieve the fullAppMetadata
when they need it for display purposes. (#751)
- Consolidated
Listener
documentation with other types (#404) - Updated definition of the
Position
context type to support negative (short) positions (#419) - Upgraded web access statements from SHOULD to MUST in the API specification (#440)
- Updated copyright notices (#467)
- Adjusted wording in API spec and documentation to acknowledge the possibility of methods of intent resolution other than a resolver UI (#461)
- Replaced 'System channels' with 'User channels' throughout the spec, documentation, API and methods.ts. Clarified spec and documentation where it is referring to User channels vs. App channels. Added support to methods.ts for automatic fallback to
getSystemChannels
ifgetUserChannels
doesn't exist. (#470) - Moved the Icon type definition into the Types documentation page for consistency with other types. (#493
- The
fdc3.joinChannel()
,fdc3.getCurrentChannel()
andfdc3.leaveCurrentChannel()
functions have been made optional for FDC3 API compliance, but are recommended through the application of the SHOULD keyword. (#512) - All DesktopAgent and Channel API functions are now async for consistency, changing the return type of the
broadcast
,addIntentListener
,addContextListener
andgetInfo
functions (#516) IntentResolution
now requires the name of the intent raised to included, allowing it to be used to determine the intent raised viafdc3.raiseIntentForContext()
. (#507)- The App Directory record schema (Application) has had the
manifestType
andmanifest
properties removed and replaced with the newtype
(required),details
andhostManifests
properties (#437) - App Directory
images
field was replaced withscreenshots
to better align the application record with web application manifest and match its format to that used byicons
(#675) - API
AppMetadata
type was updated to replace theimages
field with ascreenshots
field (an array ofImage
objects) matching the spec of the App Directory'sscreenshots
field entries (#736) - App Directory endpoint for creating applications was removed as these will often be implementation dependent and should not be required for compliance (#695)
- 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 (#696)
- Extended Intent Naming conventions and added hyperlinks for existing Intent spec definitions (#701)
- 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
). (#704) - The
intents
field of an AppD application records has been replaced with theinterop
field, to more fully describe an app's use of FDC3 and enable search for apps that 'interoperate' with a selected app (#697)
- Deprecated the
ViewContact
intent, which is superseded byViewProfile
(#619) - Removed details of the 'global' channel that was deprecated in FDC3 1.2. (#496)
open
,raiseIntent
andraiseIntentForContext
function signatures that make use of the appname
have been deprecated in favour of usingAppIdentifier
(which is a new parent ofAppMetadata
that clarifies required fields for API call parameters) (#722)
- Removed trailing slashes from schema references (which break refs for schema parsers) (#374)
- Corrected the definition of the
Context
type in documentation (#406]) - Corrected syntax errors in context schema examples (#424)
- Corrected a minor error in the ViewQuote Intent example (#439)
- Clarified behavior of
fdc3.addContextListener
when not joined to a channel (#449) - Clarified existing behavior of
joinChannel
andaddContextListener
when joining a channel (#454) - Clarified numerous aspects of the existing
raiseIntent
behavior in the spec and documentation (#461) - Updated Methods.ts to support the updated signature for
addContextListener
introduced in FDC3 1.2 (#462) - Clarified the description of the addContextListener functions from the Desktop Agent and Channel APIs in spec and docs. (#492)
- Clarified that implementing
fdc3.getInfo()
is required for compliance with the FDC3 standard (#515)
npm v1.2.0 - 2021-04-19
- ES6 functions for
getInfo()
andraiseIntentForContext()
(#268, #324) fdc3Ready()
utility function that wraps checks for the window.fdc3 global object and newfdc3Ready
event (#360)compareVersionNumbers()
andversionIsAtLeast()
utility functions to complementgetInfo()
(#324)- An example application definition (#437
- A test environment for the app directory specification and the example application definition (#437
addContextListener(contextType, handler)
now supports passingnull
as the context type (#329)- All other API type changes and additions from the FDC3 Standard 1.2 release
FDC3 Standard 1.2 - 2021-04-19
- New
raiseIntentForContext()
method (#268) - New
fdc3Ready
event (#269) - New
getInfo()
method that returns implementation metadata (#324)
fdc3.open()
andfdc3.raiseIntent()
now takesTargetApp
, which resolves tostring | AppMetadata
(#272)AppMetadata
return type can now optionally includeappId
andversion
(#273)addContextListener(contextType, handler)
now supports passingnull
as the context type (#329)- Simplify API reference documentation and add info about supported platforms, including npm package (#349)
- Return type of
getCurrentChannel()
should bePromise<Channel | null>
(#282) leaveCurrentChannel()
is missing fromDesktopAgent
interface (#283)
npm v1.1.1 - 2021-04-15
Intents
enum should containStartChat
notStartChart
(#364)- Return type of
getCurrentChannel()
should bePromise<Channel | null>
(#282) - Missing
leaveCurrentChannel()
export (#283)
npm v1.1.0 - 2021-04-14
- Build an npm package with exported TypeScript typings for API, Context Data and
window.fdc3
global (#252) - Export helper enums for names of standardised
Intents
andContextTypes
(#264) - Export API operations as ES6 functions that can be directly imported (#266)
- Check for the existence of
window.fdc3
in ES6 functions, and reject or throw if not defined (#356)
- Return type of
getCurrentChannel()
should bePromise<Channel>
(#222)
FDC3 Standard 1.1 - 2020-04-09
- JSON Schema definitions for agreed context types (#119):
fdc3.context
fdc3.instrument
fdc3.instrumentList
fdc3.contact
fdc3.contactList
fdc3.organization
fdc3.country
fdc3.position
fdc3.portfolio
- API entry point for web -
window.fdc3
(#139) - Use Case 17 (#153)
- Channels API (#154):
fdc3.getSystemChannels
fdc3.getOrCreateChannel
fdc3.joinChannel
fdc3.leaveCurrentChannel
fdc3.getCurrentChannel
Channel
interfaceDisplayMetadata
interfaceChannelError
type
- Type filtering support for
getCurrentContext
(#161) - Publish versioned JSON schemas to FDC3 website (#170)
- Intent Reference and Context Data Reference documentation (#172)
- Remove FactSet-specific examples from docs (#88)
- Apply FINOS branding, styles and logos to the website (#96)
- Include ChartIQ in "Who is using FDC3?" section on website (#100)
- Expand
AppMetadata
interface with more application properties (#157) - Restructure some docs (#190)
- Several typos and broken links in docs
- Various security vulnerabilities
FDC3 Standard 1.0 - 2019-03-28
- Documentation website (generated with Docusaurus) and content from old separate FDC3 repos (#5):
- Use Case 15 (#49)
- FDC3 Roadmap (#55)
- FDC3 feature icons on website landing page (#57)
- Participant showcase on website landing page (#67)