This project builds API bundle plugins for AladdinSDK using swagger specifications.
Plugins are built via Github Actions based on specifications included in plugin directories here. For each plugin directory, an AladdinSDK plugin will be published which contains API clients based on the swagger files in that directory.
Pre-requisite: Install AladdinSDK using pip install aladdinsdk
AladdinSDK's functional capabilities can be extended as needed using 'plugins'. These are essentially API bundles created at domain level.
The APIs are bundled as follows:
- Command to install:
pip install asdk_plugin_accounting
Included APIs PortfolioConfigurationAPI v1 CompositeMembershipAPI v1 AborLotAPI v1 ValuationsAPI v1
- Command to install:
pip install asdk_plugin_analytics
Included APIs ClimateAPI v1 EsgDataAPI v1 EvaluatorAnalyticsAPI v1 RiskConfigAPI v1 RiskCustomEvaluationMetricAPI v1 RiskExceptionAPI v1 RiskRuleAPI v1 RiskTaskAPI v1 RiskWorkflowAPI v1
- Command to install:
pip install asdk_plugin_clients
Included APIs EnrichedCapitalFlowAPI v1
- Command to install:
pip install asdk_plugin_compliance
Included APIs ComplianceRuleAssignmentAPI v1 ComplianceRuleAPI v1 LevelAPI v1 ViolationAPI v1
- Command to install:
pip install asdk_plugin_data
Included APIs SecurityCreationAPI v1
- Command to install:
pip install asdk_plugin_investment_operations
- Command to install:
pip install asdk_plugin_investment_research
Included APIs AnalystCoverageAPI v1 EngagementAPI v1 ResearchNoteAPI v2 CriterionAPI v1 WatchlistAPI v1
- Command to install:
pip install asdk_plugin_platform
Included APIs PermissionAPI v1 UserGroupPermissionAPI v1 UserGroupAPI v1 UserGroupMemberAPI v1 UserAPI v1 AdcDatasetAPI v1
- Command to install:
pip install asdk_plugin_portfolio
Included APIs PortfolioGroupAPI v1 RestrictedAssetAPI v1
- Command to install:
pip install asdk_plugin_portfolio_management
Included APIs CashLadderAPI v2 PositionsAPI v2 CIDReaderAPI v1 CIDWriterAPI v1 InvestmentTargetAPI v1 StrategyAPI v1
- Command to install:
pip install asdk_plugin_trading
Included APIs OrderAPI v1
This script is used in Github Action to build plugins for every tag dropped on this repository.
- The entry point of the script is asdk_agraph_plugin_builder.py. AGraph swagger specifications are read and openapi-generator v6.6.0 is used to create an AladdinSDK plugin which bundles together the corresponding API clients.
- To run script, the following inputs are required:
-sb
/--swagger-bundle
: Path to a directory containing swagger files to be added to the API bundle-tl
/--target-location
: Path to where the built API plugin artifact should be stored-pv
/--plugin-version
: Version of plugin to be created
- Optional arguments:
-v
/--verbose
: Prints more detailed log statements during the execution-oj
/--openapi-generator-cli-jar
: Path to openapi-generator-cli jar file, if user wants to use a different version of the jar
- To update contents of any plugin, or to create/delete plugins, update the directory structure and contents under /resources/swagger_plugin_bundles directory.
- For Aladdin's Graph APIs, the specification should include the following details:
info.x-aladdin-spec-id
:- ID given in the following format
agraph.<domain name>.<segment name>.<api group>.<version>.<API Name>
- This is used to create the registry entry and determine python module path
- Note: The ID should also ensures uniqueness of the API across all plugins. Same API may be bundled in different plugins, but only one definition will be picked by AladdinSDK.
- ID given in the following format
- Endpoint path security definitions:
- Used by python client to add authentication headers for API calls
- Python (v3.9+)
- Java (to run openapi-generator-cli jar to perform codegen using swagger file)
- Openapi-generator-cli jar OR ability to
wget
jar from maven - Target location to where the python project needs to be created
- Plugin version (should correspond to agraph version of swagger gen files)
- API bundles are under
/resources/swagger_plugin_bundles
. Any updates to contents of this directory must be approved by Aladdin API stakeholders. - The builder creates plugins which contain the following:
- API client code bundled under appropriate paths derived from spec ID
api_registry.py
anddomain_apis_list.json
files to help the core AladdinSDK read contents of the plugin
Any updates to these files should be coordinated with the AladdinSDK project.pyproject.toml
configuration file used by packaging tools
Also refer CONTRIBUTING.md and CODE_OF_CONDUCT.md
The license for the project:
Core Contributors:
- Vedant Naik
- Eli Kalish
- Harshita Das
- Infant Vasanth
Libraries:
GitHub Issues: https://github.com/blackrock/aladdinsdk-plugin-builder/issues
Copyright © 2017-2024 os72, licensed under Apache License, Version 2.0.
Copyright © 2024 BlackRock, Inc. Distributed under the Apache License, Version 2.0.