from __future__ import print_function
import time
import requests
from pprint import pprint
import pandas as pd
import json
#host = "<specify protocol://host:port of the server that is a provider of the SysML v2 REST/HTTP API"
host = "Specify the URL of the SysML v2 API and Service Repository"
projects_url = f"{host}/projects"
projects_response = requests.get(projects_url)
if projects_response.status_code == 200:
projects = projects_response.json()
df = pd.DataFrame({'Project Name':[], 'Project ID':[]})
for p in projects:
df = pd.concat([df, pd.DataFrame({'Project Name':[p['name']], 'Project ID':[p['@id']]})], ignore_index=True)
display(df)
| Project Name | Project ID | |
|---|---|---|
| 0 | 5-State-based Behavior-1a Fri Mar 10 17:37:14 ... | 024b1aa6-7489-4106-bf2d-498f441f3d56 |
| 1 | 13a-Model Containment Fri Mar 10 16:52:40 EST ... | 083a7c88-757c-41ff-89db-bc34a12b7794 |
| 2 | SimpleQuadcopter Fri Mar 10 17:54:58 EST 2023 | 092dd68d-887f-4553-8ed2-05d405fb3a47 |
| 3 | 15_05-Unification of Expression and Constraint... | 098d5715-5dee-46d1-bdf8-ab96f1cc9fc6 |
| 4 | 7b-Variant Configurations Fri Mar 10 17:38:53 ... | 0b773e83-226e-4e20-ad89-5cbf1381b401 |
| ... | ... | ... |
| 89 | 14b-Language Extensions Fri Mar 10 17:49:37 ES... | f97580aa-646c-4895-a8cb-006cd7538bb6 |
| 90 | 18-Use Case Fri Mar 10 17:00:37 EST 2023 | fa2bae57-4b5e-46e0-a0ef-ede2f121ea1f |
| 91 | AnalysisAnnotation2 Wed Aug 30 04:36:12 UTC 2023 | fb6d4f79-04e0-4a73-b11a-09263b79d7c3 |
| 92 | 11b-Safety and Security Feature Views Fri Mar ... | fc58c0ac-58ea-4a19-90d7-c9e2f1c6da84 |
| 93 | 5-State-based Behavior-1 Fri Mar 10 17:36:13 E... | fd341050-37b5-419e-be67-987ab836f668 |
94 rows × 2 columns
def get_element(project_id, commit_id, element_id, indent):
# Fetch the element in the given commit of the given project
element_url = f"{host}/projects/{project_id}/commits/{commit_id}/elements/{element_id}"
response = requests.get(element_url)
if response.status_code == 200:
element_data = response.json()
element_name_to_print = element_data['name'] if element_data['name'] else 'N/A'
element_type = element_data ['@type']
print(f"{indent} - {element_name_to_print} ({element_type})")
return element_data
else:
return None
# Returns direct / immediate owned elements for a given element in a given commit of a given project
def get_owned_elements_immediate(project_id, commit_id, element_id, indent):
# Fetch the element in the given commit of the given project
element_data = get_element(project_id, commit_id, element_id, indent)
if element_data:
owned_elements = element_data['ownedElement']
if len(owned_elements) > 0:
for owned_element in owned_elements:
get_element(project_id, commit_id, owned_element['@id'], indent + ' ')
else:
print(f"Unable to fetch element with id '{element_id}' in commit '{commit_id}' of project '{project_id}'")
# Returns directly / immediate owned elements for a given element in a given commit of a given project
def get_owned_elements(project_id, commit_id, element_id, indent):
# Fetch the element in the given commit of the given project
element_data = get_element(project_id, commit_id, element_id, indent)
if element_data:
owned_elements = element_data['ownedElement']
if len(owned_elements) > 0:
for owned_element in owned_elements:
get_owned_elements(project_id, commit_id, owned_element['@id'], indent+' ')
else:
print(f"Unable to fetch element with id '{element_id}' in commit '{commit_id}' of project '{project_id}'")
# Specify a project id
test_project_id = 'b0c4aec0-8fce-4d82-af3d-f9abdd25af19' # 1c-Parts Tree Redifinition project
# Specify a commit id in the project
test_commit_id = 'caa160a2-e964-4545-bb3c-c7686d5d2979' # Latest commit in the main branch of the project
# Specify an element id in the commit of that project
test_element_id = '2a361c0a-a332-4910-a288-c8b4b35bd2ab' #1c-Parts Tree Redifinition package
get_owned_elements_immediate(test_project_id, test_commit_id, test_element_id, '')
- 1c-Parts Tree Redefinition (Package) - Definitions (Package) - Usages (Package)
get_owned_elements(test_project_id, test_commit_id, test_element_id, '')
- 1c-Parts Tree Redefinition (Package)
- Definitions (Package)
- Vehicle (PartDefinition)
- mass (AttributeUsage)
- N/A (Multiplicity)
- AxleAssembly (PartDefinition)
- Axle (PartDefinition)
- mass (AttributeUsage)
- N/A (Multiplicity)
- FrontAxle (PartDefinition)
- steeringAngle (AttributeUsage)
- N/A (Multiplicity)
- Wheel (PartDefinition)
- Usages (Package)
- vehicle1 (PartUsage)
- mass (AttributeUsage)
- N/A (OperatorExpression)
- x (Feature)
- N/A (LiteralInteger)
- result (Feature)
- y (Feature)
- N/A (FeatureReferenceExpression)
- result (Feature)
- result (Feature)
- N/A (Documentation)
- frontAxleAssembly (PartUsage)
- frontAxle (PartUsage)
- N/A (Multiplicity)
- frontWheel (PartUsage)
- N/A (MultiplicityRange)
- N/A (LiteralInteger)
- result (Feature)
- N/A (Multiplicity)
- rearAxleAssembly (PartUsage)
- rearAxle (PartUsage)
- N/A (Multiplicity)
- rearWheel (PartUsage)
- N/A (MultiplicityRange)
- N/A (LiteralInteger)
- result (Feature)
- N/A (Multiplicity)
- vehicle1_c1 (PartUsage)
- N/A (Comment)
- mass (AttributeUsage)
- N/A (OperatorExpression)
- x (Feature)
- N/A (LiteralInteger)
- result (Feature)
- y (Feature)
- N/A (FeatureReferenceExpression)
- result (Feature)
- result (Feature)
- N/A (Comment)
- frontAxleAssembly_c1 (PartUsage)
- frontAxle_c1 (PartUsage)
- N/A (Comment)
- N/A (Comment)
- frontWheel_1 (PartUsage)
- N/A (OperatorExpression)
- seq (Feature)
- N/A (FeatureReferenceExpression)
- result (Feature)
- index (Feature)
- N/A (LiteralInteger)
- result (Feature)
- result (Feature)
- frontWheel_2 (PartUsage)
- N/A (OperatorExpression)
- seq (Feature)
- N/A (FeatureReferenceExpression)
- result (Feature)
- index (Feature)
- N/A (LiteralInteger)
- result (Feature)
- result (Feature)
- rearAxleAssembly_c1 (PartUsage)
- rearAxle_c1 (PartUsage)
- N/A (Comment)
- rearWheel_1 (PartUsage)
- N/A (OperatorExpression)
- seq (Feature)
- N/A (FeatureReferenceExpression)
- result (Feature)
- index (Feature)
- N/A (LiteralInteger)
- result (Feature)
- result (Feature)
- rearWheel_2 (PartUsage)
- N/A (OperatorExpression)
- seq (Feature)
- N/A (FeatureReferenceExpression)
- result (Feature)
- index (Feature)
- N/A (LiteralInteger)
- result (Feature)
- result (Feature)