diff --git a/getIssues.query.json b/getIssues.query.json index 9bafe9c..38f4818 100644 --- a/getIssues.query.json +++ b/getIssues.query.json @@ -1,5 +1,5 @@ -query GetIssues($isDemo: Boolean, $getIssuesInput: IssuesInput) { - getIssues(isDemo: $isDemo, getIssuesInput: $getIssuesInput) { +query GetIssues($getIssuesInput: IssuesInput) { + getIssues(getIssuesInput: $getIssuesInput) { issues { id issueId diff --git a/getIssuesCompliance.query.json b/getIssuesCompliance.query.json index 8c4fbe9..a152a35 100644 --- a/getIssuesCompliance.query.json +++ b/getIssuesCompliance.query.json @@ -1,5 +1,5 @@ -query GetIssues($isDemo: Boolean, $getIssuesInput: IssuesInput) { - getIssues(isDemo: $isDemo, getIssuesInput: $getIssuesInput) { +query GetIssues($getIssuesInput: IssuesInput) { + getIssues(getIssuesInput: $getIssuesInput) { issues { id issueId diff --git a/getIssuesMedium.query.json b/getIssuesMedium.query.json index 493b390..47636fa 100644 --- a/getIssuesMedium.query.json +++ b/getIssuesMedium.query.json @@ -1,5 +1,5 @@ -query GetIssues($isDemo: Boolean, $getIssuesInput: IssuesInput) { - getIssues(isDemo: $isDemo, getIssuesInput: $getIssuesInput) { +query GetIssues($getIssuesInput: IssuesInput) { + getIssues(getIssuesInput: $getIssuesInput) { issues { id issueId diff --git a/getIssuesShort.query.json b/getIssuesShort.query.json index ad6882b..1406b36 100644 --- a/getIssuesShort.query.json +++ b/getIssuesShort.query.json @@ -1,5 +1,5 @@ -query GetIssues($isDemo: Boolean, $getIssuesInput: IssuesInput) { - getIssues(isDemo: $isDemo, getIssuesInput: $getIssuesInput) { +query GetIssues($getIssuesInput: IssuesInput) { + getIssues(getIssuesInput: $getIssuesInput) { issues { id issueId diff --git a/getMembers.query.json b/getMembers.query.json index 875d4ba..24fe91b 100644 --- a/getMembers.query.json +++ b/getMembers.query.json @@ -21,10 +21,4 @@ query GetMembersScreen { name description } - getPendingRequestAccess { - pendingRequests { - email - requestedAt - } - } } \ No newline at end of file diff --git a/getOrgUsers_b.query.json b/getOrgUsers_b.query.json new file mode 100644 index 0000000..4c928b4 --- /dev/null +++ b/getOrgUsers_b.query.json @@ -0,0 +1,22 @@ +query GetOrgUsersByOrgId($orgId: String!) { + getOrgUsersByOrgId(orgId: $orgId) { + developersCount + developersCountAPI + developersCountCommits + display_name + users { + committerEmail + committerAuthor + latestSha + link + latestCommitDate + gitType + filtered + } + usersFromApi { + id + username + name + } + } +} \ No newline at end of file diff --git a/python_b.py b/python_b.py new file mode 100644 index 0000000..1ed55ba --- /dev/null +++ b/python_b.py @@ -0,0 +1,112 @@ +# Imports +import requests +import json +import jsonpickle +import sys +import os.path + +# Deserialize Function +def show_issues (response): + #frozen = jsonpickle.encode(response) + jsonObject = jsonpickle.decode(response) + + for check in jsonObject['data']['getIssues']['issues']: + id = check['id'] + desc = check['mainTitle'] + owners = check['owners'] + print("Issue ID:", id) + print("Issue Description:", desc) + print("Issue Owners:", owners) + +def writeJSON (fileN,response): + fileN = sys.argv[1]+'_response' + if os.path.exists(fileN+'.temp') == True: + os.remove(fileN+'.temp') + writefile = open(fileN + '.temp', 'w') + writefile.write(passresult) + writefile.close() + if os.path.exists(fileN+'.json') == True: + os.remove(fileN+'.json') + os.rename(fileN+'.temp',fileN+'.json') + +# OX GraphQL Info +# USE pip install python-dotenv to enable .env file +from dotenv import load_dotenv +load_dotenv() +apiurl = os.environ.get('oxUrl') +key = os.environ.get('oxKey') +bearer = os.environ.get('bearer') + +# apiurl = 'https://api.cloud.ox.security/api/apollo-gateway' +# key = 'api_key' + +if (len(sys.argv) < 2): + print('You must enter the name of the query to submit. Query filenames should contain .query.json and .variables.json suffixes.') + exit() + +if sys.argv[1].lower() == 'help': + print('Use any of the following queries as an argument: python_examp.py queryname') + print('Commands are case sensitive if not Windows/MacOS environment') + print('getIssues') + print('getSingleIssue') + print('getApps') + print('getAppInventory') + print('getAppInfo') + print('getSbomLibs') + print('getSbomLibStats') + print('getSbomShort') + print('getIssuesShort') + print('getAppsShort') + print('getAppsTags') + print('getSbomFilters') + exit() + +# Reading Query and Variables files for GraphQL API +qFilename = "./" +sys.argv[1]+ '.query.json' +vFilename = "./" +sys.argv[1]+ '.variables.json' + +if os.path.exists(qFilename) == False: + print('Query filename '+qFilename+' does not exist. This file should contain the GraphQL query. The Variables should be located at '+vFilename+'.') + exit() + +with open(qFilename, 'r') as query_file: + query = query_file.read() + +with open(vFilename, 'r') as variables_file: + variables = json.load(variables_file) + +# Setting Post Params + # 'Authorization': f'{key}', + +headers = { + 'Content-Type': 'application/json', + 'Authorization': f'Bearer {bearer}' +} + +body = { + 'query': query, + 'variables': variables, +} + +# Post Request +attempts = 3 + +while attempts: + try: + response = requests.post(apiurl, headers=headers, json=body, timeout=300) + if response.status_code == 200: + result = response.json() + passresult = json.dumps(result, indent=2) + fileN = sys.argv[1]+'_response' + writeJSON(fileN,passresult) + # if sys.argv[1].lower() == 'getissues': + # show_issues(passresult) + break + else: + print(f'GraphQL request failed with status code: {response.status_code}') + break + except TimeoutError: + attempts -= 1 + except requests.exceptions.RequestException as error: + print(f'Error: {error}') +