Migrating from ThreediApiClient to ThreediApi💡
ThreediApiClient
is deprecated and will not be supported in the near future. The new
way to use the Python API client is via ThreediApi
. In order to migrate from the ThreediApiClient
to ThreediApi
the following changes are needed:
Initialization💡
The following changes are needed to initialize the client.
# OLD (ThreediApiClient)
from threedi_api_client import ThreediApiClient
API_HOST = https://api.3di.live/v3
API_USERNAME = "black.sheep"
API_PASSWORD = "myverysecretmehhh"
config = {
"API_HOST": API_HOST,
"API_USERNAME": USERNAME,
"API_PASSWORD": PASSWORD
}
api_client = ThreediApiClient(config=config)
# NEW (ThreediApi)
from threedi_api_client.api import ThreediApi
from threedi_api_client.versions import V3Api
# CHANGED: provide host without the version (/v3)
THREEDI_API_HOST = https://api.3di.live
THREEDI_API_PERSONAL_API_TOKEN = "your_personal_api_key_here"
# CHANGED:
# - THREEDI prefix for configuration parameters
# - personal api token instead of username & password
config = {
"THREEDI_API_HOST": API_HOST,
"THREEDI_API_PERSONAL_API_TOKEN": THREEDI_API_PERSONAL_API_TOKEN,
}
# NOTE: The ": V3Api" typing part is not mandatory,
# but helps your editor with autocomplete
api_client: V3Api = ThreediApi(config=config)
# ThreediApi can also be used as context manager
with ThreediApi() as api_client:
api_client: V3Api
Usage💡
For example listing and creating a simulation
# OLD (ThreediApiClient)
from threedi_api_client import ThreediApiClient
from openapi_client import SimulationsApi
from openapi_client.models import Simulation
# NOTE: Config part ommitted for readability.
api_client = ThreediApiClient()
sim_api = SimulationsApi(api_client)
sim_api.simulations_list()
organisation_uuid = "<your organisation uuid here>"
threedimodel_id = 111 # use your own threedimodel id here
calculation_duration_hrs = 4
simulation = Simulation(
name="user guide simulation",
threedimodel=threedimodel_id,
organisation=organisation_uuid,
start_datetime=datetime.utcnow(),
duration=calculation_duration_hrs * 3600 # in seconds
)
sim_api.simulations_create(simulation)
# NEW (ThreediApi)
from datetime import datetime
from threedi_api_client.api import ThreediApi
from threedi_api_client.versions import V3Api
# CHANGED: all models should not be imported from threedi_api_client.openapi.models
from threedi_api_client.openapi.models import Simulation
# NOTE: Config part ommitted for readability.
api_client: V3Api = ThreediApi()
# CHANGED: V3Api instances contain ALL api call functions previously
# distributed accross SimulationApi, ThreedimodelApi etc.
# Thus no extra initialization is needed to perform API calls.
api_client.simulations_list()
# Context manager create simulation example
with ThreediApi() as api_client:
organisation_uuid = "<your organisation uuid here>"
threedimodel_id = 111 # use your own threedimodel id here
calculation_duration_hrs = 4
simulation = Simulation(
name="user guide simulation",
threedimodel=threedimodel_id,
organisation=organisation_uuid,
start_datetime=datetime.utcnow(),
duration=calculation_duration_hrs * 3600 # in seconds
)
api_client.simulations_create(simulation)
Importing 3Di OpenApi models💡
Import 3Di OpenApi models from threedi_api_client.openapi.models
instead of openapi_client.models
.
# OLD (ThreediApiClient)
from openapi_client.models import Simulation
# NEW (ThreediApi)
from threedi_api_client.openapi.models import Simulation
API v3-beta💡
If you want to use any of the v3-beta
endpoints you need to initialize ThreediApi
with
and extra version
parameter:
# NEW (ThreediApi)
from threedi_api_client.api import ThreediApi
from threedi_api_client.versions import V3BetaApi
# NOTE: Config part ommitted for readability.
# V3Api now has become V3BetaApi
api_client: V3BetaApi = ThreediApi(version='v3-beta')
# V3Beta is a superset of V3Api, so V3Api calls also are supported.
api_client.simulations_list()
# V3Beta endpoints can also be used
api_client.schematisations_list()
# note: this was the case when writing this docs, this endpoint might now already be part of the (stable) V3Api
Async support💡
The new ThreediApi
client also has async support.
# NEW (ThreediApi)
from threedi_api_client.api import ThreediApi
from threedi_api_client.versions import V3BetaApi
# NOTE: Config part ommitted for readability.
api_client: V3BetaApi = ThreediApi(version='v3-beta', asynchronous=True)
# Now we can await the API functions
await api_client.simulations_list()