- SECTIONS
Overview: The Open Factset Database or OFDB API is a REST API that allows users to create, modify, and view non-portfolio databases within the Factset ecosystem and then seamlessly integrate that information stream into customer's 3rd party upstream and downstream applications. The databases created with this API can be viewed within the Data Central 2 application within the FactSet Workstation.
These actions further explained:
- Create OFDB: Gives the ability to create a new OFDB
- View OFDB: Gives the ability to read the contents of an OFDB
- Modify OFDB: Gives the ability to modify the contents of an OFDB
- View OFDB Metadata: Gives the ability to view metadata surrounding the OFDB such as modification records.
Key Note: What is a non-portfolio database within the FactSet ecosystem?
Portfolio:
- The EXAMPLE.OFDB file contains Shares/Weight field and
- Is registered in Portfolio List Manager or "PLM" as Holdings Portfolio
Non-Portfolio:
- May or may not Contain Shares/Weight field and
- Is not Registered in PLM as Holdings Portfolio If an OFDB is registered in PLM as a “Holdings Portfolio”, users will not be able to access it via the OFDB API. Similarly, If an OMS_OFDB is registered in PLM as a trade data portfolio, users will not be able to access via the OFDB API.
All APIs are hosted under https://developer.factset.com. Please refer to the manual for authentication https://developer.factset.com/authentication using API keys.
General Request Workflow: Requests within the API will follow the flow of:
- Push action/operation, then the request will always go long running returning the status code (202), the job id is returned in response. Users will then input the job id in the relevant status endpoint, if the result is "executing" then users will repeat until "success", if "success" then users will input job id into the result endpoint.
Status Endpoints
Input: • Jobid*: relevant id from long running request.
• Example: "id": "4bb5e3e7-d422-41bb-b8ce-a72d02af123a"
Output: Will print text of “success” or “executing” with jobid.
Result Endpoints
Input: • Jobid*: relevant id from status endpoint.
• Example: "id": "4bb5e3e7-d422-41bb-b8ce-a72d02af123a"
Output: Relevant to type of request sent (see typical result content for each endpoint below).
Need more help? - Please contact your Factset representative for a demo or file an issue tracker RPD to get in touch with us directly.
- OFDB_API_V2_user_guide_03.1.pdf694.12 KB
from __future__ import print_function
import time
import fds.ofdbapi.engines
from fds.ofdbapi.engines.rest import ApiException
from pprint import pprint
configuration = fds.ofdbapi.engines.Configuration(
host = "https://api.factset.com/analytics/ofdb"
)
# Configure HTTP basic authorization: basicAuth
configuration = fds.ofdbapi.engines.Configuration(
username = 'YOUR_USERNAME',
password = 'YOUR_PASSWORD'
)
# Enter a context with an instance of the API client
with fds.ofdbapi.engines.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = fds.ofdbapi.engines.ViewApi(api_client)
path = 'PERSONAL:TEST_PYTHON.OFDB'
starts_with = 'FA'
ends_with = 'SET'
contains = 'CT'
equals = 'FACTSET'
order_by = 'asc'
try:
api_response = api_instance.get_symbols(path, starts_with=starts_with, ends_with=ends_with, contains=contains, equals=equals, order_by=order_by)
pprint(api_response)
except ApiException as e:
print("Exception when calling ViewApi->get_symbols: %s\n" % e)
from __future__ import print_function
import time
import fds.ofdbapi.engines
from fds.ofdbapi.engines.rest import ApiException
from pprint import pprint
configuration = fds.ofdbapi.engines.Configuration(
host = "https://api.factset.com/analytics/ofdb"
)
# Configure HTTP basic authorization: basicAuth
configuration = fds.ofdbapi.engines.Configuration(
username = 'YOUR_USERNAME',
password = 'YOUR_PASSWORD'
)
# Enter a context with an instance of the API client
with fds.ofdbapi.engines.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = fds.ofdbapi.engines.ViewApi(api_client)
path = 'PERSONAL:TEST_PYTHON.OFDB'
try:
api_response = api_instance.get_fields(path)
pprint(api_response)
except ApiException as e:
print("Exception when calling ViewApi->get_fields: %s\n" % e)
from __future__ import print_function
import time
import fds.ofdbapi.engines
from fds.ofdbapi.engines.rest import ApiException
from pprint import pprint
configuration = fds.ofdbapi.engines.Configuration(
host = "https://api.factset.com/analytics/ofdb"
)
# Configure HTTP basic authorization: basicAuth
configuration = fds.ofdbapi.engines.Configuration(
username = 'YOUR_USERNAME',
password = 'YOUR_PASSWORD'
)
# Enter a context with an instance of the API client
with fds.ofdbapi.engines.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = fds.ofdbapi.engines.CreateApi(api_client)
path = 'PERSONAL:TEST_PYTHON.OFDB'
post_body = {
"symbol": "FACTSET",
"data": [
{
"date": "20200730",
"price": "1234"
}
]
}
try:
api_response = api_instance.add_symbol(path, post_body)
pprint(api_response)
except ApiException as e:
print("Exception when calling CreateApi->add_symbol: %s\n" % e)
V1
Summary
- Moving API program out of Beta into production
Functionality Additions
- Ability to talk to non-portfolio databases through api.
- User can view symbols, dates, fields and data from the database.
- User can able to modify data.
- User can able to delete data.
Changes
- No breaking changes
Bug Fixes
- No bug fixes
V2
Summary
- Moving to a full batch workflow
- Addition of Bulk Delete Endpoint
Functionality Additions
- Support for bulk routes
- New routes
- Access $$Performance.OFDB files with a CACCESS flag
Changes
- Long Running Requests by default
- Rate limiting
- Conform to top level API design restrictions
Bug Fixes
- Improved schema validation
- Improved JSON input parsing
- Improved 2D OFDB interactions
V2.1
Summary
- Added Longrunning request endpoints