Skip to main content

Ed-Fi API Publisher Extensibility

The Ed-Fi API Publisher was developed following SOLID principles and defines interfaces for the parts a developer may want to replace, for example to keep connections in another configuration service, or to write data errors to a database instead of the log.

A custom implementation requires changing and building the API Publisher from its source code. The connection and configuration store plugins are listed in Program.cs of the EdFi.Tools.ApiPublisher.Cli project, and the API Publisher does not load plugins from other assemblies at run time.

InterfacePurposeImplementations in the API Publisher
INamedApiConnectionDetailsReaderReads the details of a named API connection from a configuration store.AWS Systems Manager Parameter Store, PostgreSQL, SQL Server and plain text
IChangeVersionProcessedWriterStores the last change version published from a source connection to a target connection.AWS Systems Manager Parameter Store, PostgreSQL and SQL Server; the plain text store only logs a warning
IErrorPublisherCaptures data-related errors for later analysis and troubleshooting.The log, through Serilog
IPluginAdds a connection type or a configuration store: its configuration values and its service registrations.One per connection type and per configuration store

Each configuration store is a project named EdFi.Tools.ApiPublisher.ConfigurationStore.<Store> that implements INamedApiConnectionDetailsReader, IChangeVersionProcessedWriter and IPlugin. To add a store, follow the same pattern and add its plugin to the list in Program.cs.