Source code for TCT.translator_kpinfo


# used May 30, 2025
import requests
import json
import yaml
import pandas as pd

"""This is the root URL for the resource."""
URL = 'https://smart-api.info/api/query?q=tags.name:translator'

[docs] def get_translator_kp_info(): """ Get the SmartAPI Translator KP info from the smart-api.info API. Returns a DataFrame with the SmartAPI Translator KP info. Examples -------- >>> Translator_KP_info,APInames = get_SmartAPI_Translator_KP_info() >>> print(Translator_KP_info.head()) """ # Get x-bte smartapi specs url = "https://smart-api.info/api/query?q=tags.name:translator AND tags.name:trapi&size=1000&sort=_seq_no&raw=1&fields=paths,servers,tags,components.x-bte*,info,_meta" response = requests.get(url) try: response.raise_for_status() except Exception: print(f"error downloading smartapi specs: {response.status_code}") exit() content = json.loads(response.content) smartapis = content["hits"] id_list = [] title_list = [] prod_url_list = [] ci_url_list = [] test_url_list = [] for api in smartapis: ci_found = False test_found = False prod_found = False for i in range(len(api['servers'])): server = api['servers'][i] if 'x-maturity' not in server: print(f"Skipping server without x-maturity: {server}") else: if server['x-maturity'] == 'production': # if prod_ur is not ars-prod.transltr.io if server['url'] == 'https://ars-prod.transltr.io': prod_url = server['url'] + '/ars/api/submit/' else: # if prod_url does not end with /, add '/query/' to the end if server['url'].endswith('/'): prod_url = server['url'] + 'query/' else: # if prod_url does not end with /, add '/query/' to the end prod_url = server['url'] + '/query/' prod_found = True if server['x-maturity'] == 'staging' or server['x-maturity'] == 'development': # if ci_url is not ars.ci.transltr.io if server['url'] == 'https://ars.ci.transltr.io': ci_url = server['url'] + '/ars/api/submit/' else: # if ci_url does not end with /, add '/query/' to the end if server['url'].endswith('/'): ci_url = server['url'] + 'query/' else: # if ci_url does not end with /, add '/query/' to the end ci_url = server['url'] + '/query/' ci_found = True if server['x-maturity'] == 'testing': # if test_url is not ars-test.transltr.io if server['url'] == 'https://ars.test.transltr.io': test_url = server['url'] + '/ars/api/submit/' else: # if test_url does not end with /, add '/query/' to the end if server['url'].endswith('/'): test_url = server['url'] + 'query/' else: # if test_url does not end with /, add '/query/' to the end test_url = server['url'] + '/query/' test_found = True if not (prod_found or ci_found or test_found): print(api['info']['title']) print(f"Skipping server without production, staging or testing: {server}") else: id_list.append('https://smart-api.info/ui/'+api['_id']) title_list.append(api['info']['title']) if prod_found: prod_url_list.append(prod_url) else: prod_url = prod_url_list.append(None) if ci_found: ci_url_list.append(ci_url) else: ci_url = ci_url_list.append(None) if test_found: test_url_list.append(test_url) else: test_url = test_url_list.append(None) # write all the smartapis to a dataframe smartapi_df = pd.DataFrame({ 'id': id_list, 'title': title_list, 'prod_url': prod_url_list, 'ci_url': ci_url_list, 'test_url': test_url_list, }) API_names = {} for i in range(len(smartapi_df)): if prod_url_list[i] is not None: #API_names[smartapi_df['title'][i]] = smartapi_df['prod_url'][i] + 'query/' API_names[smartapi_df['title'].values[i]] = prod_url_list[i] else: API_names[smartapi_df['title'].values[i]] = ci_url_list[i] return smartapi_df, API_names