SonarQube ანგარიშების API#
ეს სტატია აღწერს, როგორ მიიღოთ SonarQube უსაფრთხოების ანგარიშები, რომლებიც შენახულია Procurize პლატფორმაზე, პროგრამულად. იგი მოიცავს REST API-ს, რომელიც ანგარიშების ჩამოთვლასა და მათი გადმოწერას HTML, PDF და ZIP ფორმატებში.
მიმოხილვა#
SonarQube ანგარიშების ქვემოდული ორგანიზაციებს აძლევს საშუალება ცენტრალურად შენახული და მართული უსაფრთხოების და კოდის ხარისხის ანგარიშები, რომლებიც გენერირებულია SonarQube-ის მიერ. Procurize პლატფორმა აჩვენებს ამ მონაცემებს საჯარო REST API-ის საშუალებით, რომელიც საშუალებას გაძლევთ:
- ჩამოთვალოთ ანგარიშის მეტამონაცემები ორგანიზაციის, პროექტის ჯგუფის ან პროექტის მიხედვით
- გადმოწეროთ ერთი ანგარიში HTML, PDF ან ZIP ფორმატში
- გადმოწეროთ არჩეული ანგარიშები ZIP არქივის სახით
- გადმოწეროთ ყველა ანგარიშის პროექტის ან პროექტის ჯგუფისათვის ZIP არქივის სახით
- მიიღოთ უახლესი OWASP Top 10 და CWE Top 25 ანგარიშები პირდაპირ SonarQube სერვისიდან
ეს შესაძლებლობები აძლიერებს ინტეგრაციებს CI/CD პაიპლაინებთან, GRC სისტემებთან, შიდა დეშბორდებთან და მესამე მხარის რისკის მართვის ინსტრუმენტებთან.
ბოლო წერტილები#
| ბოლო წერტილი | მეთოდი | მიზანი |
|---|---|---|
/security/report/list | GET | ჩამოთვალეთ ანგარიშის მეტამონაცემები არჩეული შუალედისა და ვერსიის მიხედვით. |
/security/report/files | GET | გადმოწერეთ არჩეული ანგარიშები ZIP არქივის სახით. |
/security/report/html | GET | მიიღეთ ერთი ანგარიში HTML ფორმატში. |
/security/report/pdf | GET | მიიღეთ ერთი ანგარიში PDF ფორმატში. |
/security/report/zip | GET | მიიღეთ ერთი ანგარიში ZIP არქივის სახით. |
/security/report/project-files | GET | გადმოწერეთ ყველა ანგარიშის პროექტისათვის ZIP არქივის სახით. |
/security/report/directory-files | GET | გადმოწერეთ ყველა ანგარიშის პროექტის ჯგუფის (დირექტორიის)ათვის ZIP არქივის სახით. |
/security/reports/fetch | POST | მიიღეთ უახლესი ანგარიშები SonarQube სერვისიდან. |
ავთენტიფიკაცია და ავტორიზაცია#
ამ სტატიის მიხედვით ანგარიშის ჩამოთვლის და გადმოწერის ბოლო წერტილები არ საჭიროებენ ავთენტიფიკაციას.
POST /security/reports/fetch ბოლო წერტილი ითხოვს API‑ტოკენით ავთენტიფიკაციას — იხილეთ API‑ტოკენები.
ორგანიზაციის ID#
მრავალ მოთხოვნაზე საჭიროა ორგანიზაციის იდენტიფიკატორი. შეგიძლიათ გადმოწეროთ ორგანიზაციის ID (UUID) ან მისი ალია — იხილეთ იდენტიფიკატორები და ალიები.
ის შეგიძლიათ იპოვოთ ორგანიზაციის პარამეტრების პანელში https://dashboard.procurize.ai-ზე.
გაითვალისწინეთ, რომ პარამეტრების პანელში წვდომა მოითხოვს ავტორიზაციას, და ორგანიზაციის პარამეტრების პანელში წვდომა საჭიროებს მომხმარებლის როლს მინიმუმ ადმინისტრატორად იმ ორგანიზაციაში.

იდენტიფიკატორები და ალიები#
შუალედის პარამეტრები იღებენ ან ელემენტის ID-ს (UUID) ან ადამიანისთვის გასაგებად ალიას. ალიები ადვილად იკითხება მოთხოვნებია და სტაბილურია გარემოების მიხედვით.
| პარამეტრი | იღებს | ალიის მაგალითები |
|---|---|---|
org | ორგანიზაციის ID ან ალია | aspose, groupdocs |
directory | დირექტორიის (პროექტის ჯგუფის) ID ან ალია | aspose-imaging, groupdocs-annotation |
project | პროექტის ID ან ალია | aspose-imaging-net, groupdocs-annotation-java |
მაგალითად, შემდეგი ორი მოთხოვნა თანასწორია:
curl "https://api.procurize.com/security/report/list?org=00000000-0000-0000-0000-000000000001&version=1.0"
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"
შენიშვნა: ალიები არ მხარდაჭერილია
idპარამეტრისთვის მასობრივი გადმოწერის ბოლო წერტილებში. გადმოწერეთ დირექტორიის ან პროექტის UUID-ითGET /security/report/project-filesდაGET /security/report/directory-files.
საბაზისო URL#
ყველა REST API‑ის ბოლო წერტილი განთავსებულია შემდეგი საბაზისო URL‑ზე:
https://api.procurize.com
SonarQube ანგარიშების REST API#
ანგარიშების ჩამოთვლა#
აბრუნებს უსაფრთხოების ანგარიშებს, რომლებიც ხელმისაწვდომია არჩეული შუალედისა და ვერსიის მიხედვით, ფაილების შინაარსის გარეშე. გამოიყენეთ ეს ბოლო წერტილი ანგარიშის ID‑ის აღმოჩენისთვის, რომელიც შეიძლება გადმოწერილის ბოლო წერტილებში.
ბოლო წერტილი
GET /security/report/list
მოთხოვნის პარამეტრები
org(არავალდებულო): ორგანიზაციის ID ან ალია (მაგალითად,asposeანgroupdocs). ფართო შუალედი.directory(არავალდებულო): დირექტორიის (პროექტის ჯგუფის) ID ან ალია (მაგალითად,aspose-imagingანgroupdocs-annotation). უფრო სქელი შუალედი.project(არავალდებულო): პროექტის ID ან ალია (მაგალითად,aspose-imaging-netანgroupdocs-annotation-java). ყველაზე სქელი შუალედი.version(არავალდებულო): ზუსტი პროექტის ვერსია.minver(არავალდებულო): მინიმალური პროექტის ვერსია.maxver(არავალდებულო): მაქსიმალური პროექტის ვერსია.
მინიმუმ ერთ-ერთი შუალედის პარამეტრი org, directory ან project აუცილებელია. შუალედები პრიორიტეტულია შემდეგნაირად: თუ მითითებულია project, მაშინ ძებნა მოხდება მხოლოდ იმ პროექტზე; თუ არა, მაშინ თუ მითითებულია directory, ძებნა მოხდება მთელი პროექტის ჯგუფზე; წინააღმდეგ შემთხვევაში—მთლიანი ორგანიზაციაზე (org). როდესაც org მითითებულია ერთად project ან directory‑თან, მიზანი დამატებით შემოწმდება, რომ ეკუთვნის მითითებულ ორგანიზაციას.
მინიმუმ ერთ-ერთი version, minver ან maxver აუცილებელია. თუ მითითებულია version, მაშინ minver და maxver იგნორირებულია.
მოთხოვნის მაგალითი
curl "https://api.procurize.com/security/report/list?org=aspose&version=1.0"
შუალედის დაყენება პროექტის ჯგუფის ან პროექტის ალით:
curl "https://api.procurize.com/security/report/list?directory=aspose-imaging&minver=1.0&maxver=2.0"
curl "https://api.procurize.com/security/report/list?project=aspose-imaging-net&version=1.0"
პასუხის მაგალითი
{
"organizationId": "00000000-0000-0000-0000-000000000001",
"reports": [
{
"projectName": "Test product",
"id": "00000000-0000-0000-0000-000000000002",
"reportType": "CWE Top 25",
"reportVersion": 2024,
"projectVersion": "1.0",
"date": "2025-12-17T09:05:48.5946432+00:00",
"uploadDate": "2025-12-17T09:05:48.5946432+00:00",
"vulnerabilitiesCount": 0,
"securityRating": "A"
}
]
}
პასუხის ველები
organizationId: ორგანიზაცია, რომელსაც ანგარიშები ეკუთვნის.reports[].id: უნიკალური ანგარიშის ID. გადმოწერის ბოლო წერტილებში გამოიყენეთ ეს მნიშვნელობა.reports[].projectName: პროდუქტის სახელი.reports[].projectVersion: პროდუქტის ვერსია.reports[].reportType: ანგარიშის ტიპი (OWASP Top 10ანCWE Top 25).reports[].reportVersion: ანგარიშის სტანდარტის ვერსია (წელი).reports[].date: ანგარიშის შექმნის თარიღი.reports[].uploadDate: ანგარიშის ატვირთვის თარიღი Procurize-ზე.reports[].vulnerabilitiesCount: აღმოჩენილი დაუცველი რაოდენობა.reports[].securityRating: საერთო უსაფრთხოების რეიტინგი (A‑E, სადაცAსაუკეთესოა).
ანგარიშების გადმოწერა ID‑ით#
გადმოწერს ZIP არქივს, რომელიც შეიცავს არჩეულ ანგარიშებს. თითოეული ანგარიში შედის როგორც HTML, ისე PDF ფორმატებში.
ბოლო წერტილი
GET /security/report/files
მოთხოვნის პარამეტრები
org(აუცილებელია): ორგანიზაციის ID ან ალია (მაგალითად,asposeანgroupdocs).reports(აუცილებელია): ანგარიშის ID‑ები, რომლებიც უნდა შედგენილა. პარამეტრი შეიძლება განმეორდეს, რათა რამდენიმე ანგარიში შედგენილა.
მოთხოვნის მაგალითი
curl "https://api.procurize.com/security/report/files?org=aspose&reports=00000000-0000-0000-0000-000000000002&reports=00000000-0000-0000-0000-000000000003" -o reports.zip
პასუხი
- Content-Type:
application/zip - პასუხის სხეული შეიცავს ბინარულ ZIP ფაილს.
კლიენტებს უნდა სტრიმინგის საშუალებით მიიღონ პასუხი და შეინახონ დისკზე.
მუშაობა ერთ ანგარიშზე#
/security/report/html, /security/report/pdf და /security/report/zip ბოლო წერტილები აბრუნებენ ერთ კონკრეტულ ანგარიშს და იყენებენ ერთსა და იმავე არჩევანის წესებს.
ანგარიშის არჩევანი#
ანგარიშის ტიპი და ვერსია ყოველთვის აუცილებელია:
rt(აუცილებელია): ანგარიშის ტიპი. მხარდაჭერილი მნიშვნელობებიOWASP Top 10დაCWE Top 25.rv(აუცილებელია): ანგარიშის ვერსია — სტანდარტის გამოცემის წელი, მაგალითად2025OWASP Top 10‑თვის ან2024CWE Top 25‑თვის.
ანგარიში შემდეგ აირჩევა ერთ-ერთი ორი გზით:
- ანგარიშის ID‑ით — გადმოწერეთ
id(ანგარიშის ID) ერთადproject(პროექტის ID ან ალია) ანorg(ორგანიზაციის ID ან ალია)‑ით. ამ რეჟიმშიversionარ გადმოწერეთ. - პროექტის ვერსიით — გადმოწერეთ
project(პროექტის ID ან ალია, მაგალითადaspose-imaging-netანgroupdocs-annotation-java) დაversion(პროექტის ვერსია). ამ რეჟიმშიorgპარამეტრი არ გამოიყენება.
როცა ორივე project და org მითითებულია, org იგნორირებულია.
ანგარიშის მიღება HTML‑ში#
რენდერს ერთ ანგარიშს HTML გვერდის სახით, ან აბრუნებს მას ჩამოტვირთვადი HTML ფაილként.
ბოლო წერტილი
GET /security/report/html
მოთხოვნის პარამეტრები
rt(აუცილებელია): ანგარიშის ტიპი.rv(აუცილებელია): ანგარიშის ვერსია.- ანგარიშის არჩევანის პარამეტრები: იხილეთ ანგარიშის არჩევანი.
download(არავალდებულო): დაყენეთtrue, რათა HTML ფაილი გადმოწერილი იყოს (Content-Disposition: attachment). თუ არ არის მითითებული ანfalse, ანგარიში დაბრუნდება ინტერნეტში.
მოთხოვნის მაგალითი
curl "https://api.procurize.com/security/report/html?rt=OWASP+Top+10&rv=2025&id=00000000-0000-0000-0000-000000000004&project=aspose-imaging-net"
HTML ფაილის გადმოწერისთვის, ნაცვლად ინტერნეტში რენდერებისთვის:
curl "https://api.procurize.com/security/report/html?rt=OWASP+Top+10&rv=2025&project=aspose-imaging-net&version=1.0&download=true" -o report.html
პასუხი
- Content-Type:
text/html
ანგარიშის მიღება PDF‑ში#
აბრუნებს ერთ ანგარიშს PDF დოკუმენტის სახით.
ბოლო წერტილი
GET /security/report/pdf
მოთხოვნის პარამეტრები
rt(აუცილებელია): ანგარიშის ტიპი.rv(აუცილებელია): ანგარიშის ვერსია.- ანგარიშის არჩევანის პარამეტრები: იხილეთ ანგარიშის არჩევანი.
მოთხოვნის მაგალითი
curl "https://api.procurize.com/security/report/pdf?rt=CWE+Top+25&rv=2024&project=aspose-imaging-net&version=1.0" -o report.pdf
პასუხი
- Content-Type:
application/pdf
ანგარიშის მიღება ZIP‑ში#
აბრუნებს ერთ ანგარიშს ZIP არქივის სახით, რომელიც შეიცავს როგორც HTML, ისე PDF ვერსიებს.
ბოლო წერტილი
GET /security/report/zip
მოთხოვნის პარამეტრები
rt(აუცილებელია): ანგარიშის ტიპი.rv(აუცილებელია): ანგარიშის ვერსია.- ანგარიშის არჩევანის პარამეტრები: იხილეთ ანგარიშის არჩევანი.
მოთხოვნის მაგალითი
curl "https://api.procurize.com/security/report/zip?rt=CWE+Top+25&rv=2024&id=00000000-0000-0000-0000-000000000004&org=groupdocs" -o report.zip
პასუხი
- Content-Type:
application/zip
ყველა ანგარიშის გადმოწერა პროექტისათვის#
გადმოწერს ZIP არქივს, რომელიც შეიცავს ყველა ანგარიშს მითითებული პროექტისათვის, როგორც HTML, ისე PDF ფორმატებში.
ბოლო წერტილი
GET /security/report/project-files
მოთხოვნის პარამეტრები
id(აუცილებელია): პროექტის ID. ალიები მხარდაჭერილი არაა; გადმოწერეთ პროექტის UUID.rt(არავალდებულო): ფილტრი ანგარიშის ტიპის მიხედვით. მხარდაჭერილი მნიშვნელობებიOWASP Top 10დაCWE Top 25.rv(არავალდებულო): ფილტრი ანგარიშის ვერსიის (წელი) მიხედვით.version(არავალდებულო): ფილტრი პროექტის ვერსიის მიხედვით.
თუ ფილტრები მითითებული არაა, ყველა ანგარიშის პროექტის შიგნით შედის. ფილტრები შეიძლება კომბინირდეს და მოქმედებენ დამოუკიდებლად.
მოთხოვნის მაგალითი
curl "https://api.procurize.com/security/report/project-files?id=00000000-0000-0000-0000-000000000005" -o project-reports.zip
პასუხი
- Content-Type:
application/zip
ყველა ანგარიშის გადმოწერა პროექტის ჯგუფისათვის#
გადმოწერს ZIP არქივს, რომელიც შეიცავს ყველა ანგარიშს მითითებული დირექტორიის (პროექტის ჯგუფის) ყველა პროექტისათვის, როგორც HTML, ისე PDF ფორმატებში.
ბოლო წერტილი
GET /security/report/directory-files
მოთხოვნის პარამეტრები
id(აუცილებელია): დირექტორიის (პროექტის ჯგუფის) ID. ალიები მხარდაჭერილი არაა; გადმოწერეთ დირექტორიის UUID.rt(არავალდებულო): ფილტრი ანგარიშის ტიპის მიხედვით. მხარდაჭერილი მნიშვნელობებიOWASP Top 10დაCWE Top 25.rv(არავალდებულო): ფილტრი ანგარიშის ვერსიის (წელი) მიხედვით.version(არავალდებულო): ფილტრი პროექტის ვერსიის მიხედვით.
თუ ფილტრები მითითებული არაა, ყველა ანგარიშის ყველა პროექტის დირექტორიის შიგნით შედის. ფილტრები შეიძლება კომბინირდეს და მოქმედებენ დამოუკიდებლად.
მოთხოვნის მაგალითი
curl "https://api.procurize.com/security/report/directory-files?id=00000000-0000-0000-0000-000000000006" -o directory-reports.zip
პასუხი
- Content-Type:
application/zip
ანგარიშების მიღება SonarQube‑დან#
ატვირთავს უახლეს უსაფრთხოების ანგარიშის მონაცემებს პროდუქტისათვის SonarQube სერვისიდან Procurize-ზე. სერვისი იღებს უახლეს საკითხის მონაცემებს SonarQube‑დან, გარდაქმნის ისინი JSON‑ის სახით უახლესი OWASP Top 10 და CWE Top 25 ანგარიშის ვერსიებისთვის, და აბრუნებს მათ პასუხში.
ბოლო წერტილი
POST /security/reports/fetch
ავთენტიფიკაცია
ეს ბოლო წერტილი ითხოვს API‑ტოკენს, რომელიც გადმოცემულია X-API-Key ჰედერში. ტოკენების გენერაციისა და გამოყენების დეტალებისთვის იხილეთ API‑ტოკენები.
მოთხოვნის პარამეტრები
SonarQube წყარო არჩეულია ერთ-ერთი ორი გზით:
- პროექტის მიხედვით — გადმოწერეთ
project(პროექტის ID ან ალია — იხილეთ იდენტიფიკატორები და ალიები). არ გადმოწერეთurlანkey. - SonarQube სერვისის მიხედვით — გადმოწერეთ
url(SonarQube სერვისის URL) დაkey(SonarQube პროექტის გასაღები) ერთად. არ გადმოწერეთproject.
მოთხოვნის მაგალითი
ანგარიშის მიღება პროექტის ალით:
curl -X POST "https://api.procurize.com/security/reports/fetch?project=aspose-imaging-net" \
-H "X-API-Key: YOUR_API_TOKEN"
ანგარიშის მიღება პირდაპირ SonarQube სერვისიდან:
curl -X POST "https://api.procurize.com/security/reports/fetch?url=https://sonarqube.example.com&key=my-project-key" \
-H "X-API-Key: YOUR_API_TOKEN"
პასუხის მაგალითი
{
"Owasp10_2025": {
"TOTAL_SECURITY_RATING": "A",
"TOTAL_COUNT": 0,
...
},
"Cwe25_2025": {
"TOTAL_SECURITY_RATING": "A",
"TOTAL_COUNT": 0,
...
}
}
პასუხი სასარგებლოა რელიზის ბილდინგის პაიპლაინებში, რათა გადაწყვიტოთ, შეწყვეტილება თუ არა ბილდინგი, თუ აღმოჩენილია დაუცველი საჯარო უსაფრთხოების ანგარიშის ფორმატებში.
შენიშვნები
- ანგარიშის ატვირთვა საჭიროებს პერსონალურ ნებართვას იმ პროდუქტისათვის, რომელსაც ანგარიშები ეკუთვნის. თუ არ გაქვთ ეს ნებართვა, მაინც გაუგზავნეთ მოთხოვნა: პლატფორმა აბრუნებს
403 Forbidden‑ს და ავტომატურად აცნობებს პლატფორმის ადმინისტრატორებს, რომლებიც განიხილავენ მოთხოვნას და გაცნობენ თქვენ გადაწყვეტილებას. - ყველა SonarQube სერვისი შეიძლება არ იყოს რეგისტრირებული Procurize პლატფორმაზე. ახალი სერვისის რეგისტრაციისთვის, დაუკავშირდით თქვენი პლატფორმის ადმინისტრატორს; სერვისის ადმინისტრატორის ტოკენი აუცილებელია.
შეცდომების დამუშავება#
API იყენებს სტანდარტულ HTTP სტატუს კოდებს.
200 OK: მოთხოვნა წარმატებით შესრულდა204 No Content: ანგარიში არ არსებობს400 Bad Request: არასწორი პარამეტრები ან არასწორ ფორმატში მოთხოვნა401 Unauthorized: აკლია ან არასწორია API‑ტოკენი403 Forbidden: დაშვება აკრძალულია (მაგალითად, პროდუქტის ნებართვების ნაკლებობა)500 Internal Server Error: მოულოდნელი სერვერის შეცდომა
შეცდომის პასუხები შეიცავენ მანქანით-წაკითხვადი შეცდომის კოდს და ადამიანისთვის-წაკითხვადი შეტყობინებას.
იხილეთ ასევე:#
დაკავშირებული სტატია#
რა არის უსაფრთხოების ანგარიშები?
