Configure the pipeline
Configuration of the pipeline in Firely Server is done with PipelineOptions
in combination with SupportedInteractions
. A default setup is installed with Firely Server in appsettings.default.json, and it looks like this:
"PipelineOptions": {
"PluginDirectory": "./plugins",
"Branches": [
{
"Path": "/",
"Include": [
"Vonk.Core",
"Vonk.Fhir.R3",
"Vonk.Fhir.R4",
"Vonk.Repository.Sql.SqlVonkConfiguration",
"Vonk.Repository.Sqlite.SqliteVonkConfiguration",
"Vonk.Repository.MongoDb.MongoDbVonkConfiguration",
"Vonk.Repository.CosmosDb.CosmosDbVonkConfiguration",
"Vonk.Repository.Memory.MemoryVonkConfiguration",
"Vonk.Subscriptions",
"Vonk.Smart",
"Vonk.UI.Demo",
"Vonk.Plugin.DocumentOperation.DocumentOperationConfiguration",
"Vonk.Plugin.ConvertOperation.ConvertOperationConfiguration",
"Vonk.Plugin.BinaryWrapper.BinaryWrapperConfiguration",
"Vonk.Plugin.MappingToStructureMap.MappingToStructureMapConfiguration",
"Vonk.Plugin.TransformOperation.TransformOperationConfiguration"
],
"Exclude": [
"Vonk.Subscriptions.Administration"
]
},
{
"Path": "/administration",
"Include": [
"Vonk.Core",
"Vonk.Fhir.R3",
"Vonk.Fhir.R4",
"Vonk.Repository.Sql.SqlAdministrationConfiguration",
"Vonk.Repository.Sqlite.SqliteAdministrationConfiguration",
"Vonk.Repository.MongoDb.MongoDbAdminConfiguration",
"Vonk.Repository.Memory.MemoryAdministrationConfiguration",
"Vonk.Subscriptions.Administration",
"Vonk.Plugins.Terminology",
"Vonk.Administration"
],
"Exclude": [
"Vonk.Core.Operations",
"Vonk.Core.Licensing.LicenseRequestJobConfiguration"
]
}
]
},
"SupportedInteractions": {
"InstanceLevelInteractions": "read, vread, update, delete, history, conditional_delete, conditional_update, $validate, $validate-code, $expand, $compose, $meta, $meta-add, $document",
"TypeLevelInteractions": "create, search, history, conditional_create, compartment_type_search, $validate, $snapshot, $validate-code, $expand, $lookup, $compose, $document",
"WholeSystemInteractions": "capabilities, batch, transaction, history, search, compartment_system_search, $validate, $convert"
},
- PluginDirectory:
You can put plugins of your own (or third party) into this directory for Firely Server to pick them up, without polluting the Firely Server binaries directory itself. For a list of available plugins in Firely Server, see Plugins available for Firely Server. The directory in the default setting of
./plugins
is not created upon install, you may do this yourself if you want to add a plugin.- PluginDirectory.Branches:
A web application can branch into different paths, and Firely Server has two by default:
/
: the root branch, where the main FHIR RESTful API is hosted;/administration
: where the Firely Server Administration API is hosted.
Branches
contains a subdocument for each of the defined paths:- Path
The path for this branch. This is the part after the base URL that Firely Server is hosted on.
- Include
(Prefixes of) Configuration classes that add services and middleware to Firely Server.
- Exclude
(Prefixes of) Configuration classes that may not be executed.
Exclude
overridesInclude
and is useful if you want to use all but one configuration class from a namespace.
- SupportedInteractions:
A comma-separated list of all interactions Firely Server should enable on
[base]/[type]/[id]
(InstanceLevelInteractions),[base]/[type]
(TypeLevelInteractions), and[base]
(WholeSystemInteractions) levels. Firely Server will use this list to enable/disable supported interactions and reflect it in/metadata
accordingly.If you’d like to limit what operations your Firely Server supports, remove them from this list.
If you’ve added a custom plugin that enables a new interaction, make sure to load the plugin (see
PluginDirectory
above) and enable the interaction in this list. For example, if you’ve added theVonk.Plugin.ConvertOperation
$convert plugin inPipelineOptions.Branches.Include
, make sure to enable the operation$convert
as well:"WholeSystemInteractions": "$convert, capabilities, batch, transaction, history, search, compartment_system_search, $validate"