@jfrog/opencode-jfrog-plugin 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -51
- package/dist/index.js +30 -240
- package/package.json +6 -6
- package/skills/jfrog/SKILL.md +529 -0
- package/skills/jfrog/assets/.gitkeep +0 -0
- package/skills/jfrog/references/apptrust-entities.md +154 -0
- package/skills/jfrog/references/artifactory-api-gaps.md +206 -0
- package/skills/jfrog/references/artifactory-aql-syntax.md +656 -0
- package/skills/jfrog/references/artifactory-entities.md +236 -0
- package/skills/jfrog/references/artifactory-operations.md +178 -0
- package/skills/jfrog/references/catalog-entities.md +219 -0
- package/skills/jfrog/references/general-bulk-operations-and-agent-patterns.md +93 -0
- package/skills/jfrog/references/general-parallel-execution.md +131 -0
- package/skills/jfrog/references/general-use-case-hints.md +27 -0
- package/skills/jfrog/references/jfrog-brand-html-report.md +98 -0
- package/skills/jfrog/references/jfrog-cli-install-upgrade.md +30 -0
- package/skills/jfrog/references/jfrog-entity-index.md +112 -0
- package/skills/jfrog/references/jfrog-login-flow.md +132 -0
- package/skills/jfrog/references/jfrog-url-references.md +51 -0
- package/skills/jfrog/references/onemodel-common-patterns.md +323 -0
- package/skills/jfrog/references/onemodel-graphql.md +446 -0
- package/skills/jfrog/references/onemodel-query-examples.md +753 -0
- package/skills/jfrog/references/platform-access-entities.md +200 -0
- package/skills/jfrog/references/platform-admin-api-gaps.md +164 -0
- package/skills/jfrog/references/platform-admin-operations.md +58 -0
- package/skills/jfrog/references/projects-api.md +241 -0
- package/skills/jfrog/references/release-lifecycle-entities.md +180 -0
- package/skills/jfrog/references/stored-packages-entities.md +165 -0
- package/skills/jfrog/references/xray-entities.md +740 -0
- package/skills/jfrog/scripts/check-environment.sh +224 -0
- package/skills/jfrog/scripts/jfrog-login-register-session.sh +84 -0
- package/skills/jfrog/scripts/jfrog-login-save-credentials.sh +128 -0
- package/skills/jfrog-package-safety-and-download/SKILL.md +275 -0
- package/sync-skills-vendor.json +5 -0
|
@@ -0,0 +1,753 @@
|
|
|
1
|
+
# OneModel GraphQL query examples
|
|
2
|
+
|
|
3
|
+
**Important:** These are illustrative query patterns, not guaranteed templates.
|
|
4
|
+
The OneModel schema is a federated supergraph that varies per server based on
|
|
5
|
+
products, entitlements, and license. **Always fetch the actual schema** from
|
|
6
|
+
`GET /onemodel/api/v1/supergraph/schema` and verify that the domains, types,
|
|
7
|
+
fields, and arguments used below exist on the specific server before running
|
|
8
|
+
any query. Replace placeholder values (in angle brackets) with actual values.
|
|
9
|
+
|
|
10
|
+
**When to read this file:** You are constructing OneModel queries and need
|
|
11
|
+
domain-specific shapes. For the full workflow (credentials, schema cache,
|
|
12
|
+
execution), read `onemodel-graphql.md`. For pagination and variables, read
|
|
13
|
+
`onemodel-common-patterns.md`.
|
|
14
|
+
|
|
15
|
+
## Applications domain
|
|
16
|
+
|
|
17
|
+
The `applications` namespace queries applications, versions, and bound package
|
|
18
|
+
versions.
|
|
19
|
+
|
|
20
|
+
### List all applications
|
|
21
|
+
|
|
22
|
+
```graphql
|
|
23
|
+
query {
|
|
24
|
+
applications {
|
|
25
|
+
searchApplications(where: {}, first: 50) {
|
|
26
|
+
totalCount
|
|
27
|
+
edges {
|
|
28
|
+
node {
|
|
29
|
+
key
|
|
30
|
+
displayName
|
|
31
|
+
description
|
|
32
|
+
projectKey
|
|
33
|
+
criticality
|
|
34
|
+
maturityLevel
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
pageInfo {
|
|
38
|
+
hasNextPage
|
|
39
|
+
endCursor
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Get a single application by key
|
|
47
|
+
|
|
48
|
+
```graphql
|
|
49
|
+
query {
|
|
50
|
+
applications {
|
|
51
|
+
getApplication(key: "<app-key>") {
|
|
52
|
+
key
|
|
53
|
+
displayName
|
|
54
|
+
description
|
|
55
|
+
projectKey
|
|
56
|
+
criticality
|
|
57
|
+
maturityLevel
|
|
58
|
+
owners {
|
|
59
|
+
name
|
|
60
|
+
type
|
|
61
|
+
}
|
|
62
|
+
labels {
|
|
63
|
+
key
|
|
64
|
+
value
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Search applications with filters
|
|
72
|
+
|
|
73
|
+
```graphql
|
|
74
|
+
query {
|
|
75
|
+
applications {
|
|
76
|
+
searchApplications(
|
|
77
|
+
where: {
|
|
78
|
+
projectKey: "<project-key>"
|
|
79
|
+
criticality: "high"
|
|
80
|
+
maturityLevel: "production"
|
|
81
|
+
}
|
|
82
|
+
first: 25
|
|
83
|
+
orderBy: { field: NAME, direction: ASC }
|
|
84
|
+
) {
|
|
85
|
+
totalCount
|
|
86
|
+
edges {
|
|
87
|
+
node {
|
|
88
|
+
key
|
|
89
|
+
displayName
|
|
90
|
+
criticality
|
|
91
|
+
maturityLevel
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Get application versions
|
|
100
|
+
|
|
101
|
+
```graphql
|
|
102
|
+
query {
|
|
103
|
+
applications {
|
|
104
|
+
getApplication(key: "<app-key>") {
|
|
105
|
+
displayName
|
|
106
|
+
versionsConnection(first: 20) {
|
|
107
|
+
totalCount
|
|
108
|
+
edges {
|
|
109
|
+
node {
|
|
110
|
+
version
|
|
111
|
+
status
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
pageInfo {
|
|
115
|
+
hasNextPage
|
|
116
|
+
endCursor
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Get application with bound package versions
|
|
125
|
+
|
|
126
|
+
```graphql
|
|
127
|
+
query {
|
|
128
|
+
applications {
|
|
129
|
+
getApplication(key: "<app-key>") {
|
|
130
|
+
displayName
|
|
131
|
+
packageVersionsConnection(first: 25) {
|
|
132
|
+
edges {
|
|
133
|
+
node {
|
|
134
|
+
type
|
|
135
|
+
name
|
|
136
|
+
version
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Stored packages domain
|
|
146
|
+
|
|
147
|
+
The `storedPackages` namespace queries packages and versions in Artifactory
|
|
148
|
+
repositories.
|
|
149
|
+
|
|
150
|
+
### Search stored packages
|
|
151
|
+
|
|
152
|
+
`StoredPackageConnection` exposes `edges` and `pageInfo` only (no `totalCount`). `StoredPackageTag` has a single field `name` (not key/value pairs).
|
|
153
|
+
|
|
154
|
+
```graphql
|
|
155
|
+
query {
|
|
156
|
+
storedPackages {
|
|
157
|
+
searchPackages(
|
|
158
|
+
where: { type: "docker" }
|
|
159
|
+
first: 20
|
|
160
|
+
) {
|
|
161
|
+
edges {
|
|
162
|
+
node {
|
|
163
|
+
name
|
|
164
|
+
type
|
|
165
|
+
description
|
|
166
|
+
tags {
|
|
167
|
+
name
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
pageInfo {
|
|
172
|
+
hasNextPage
|
|
173
|
+
endCursor
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Get a stored package by name
|
|
181
|
+
|
|
182
|
+
`StoredPackageVersionConnection` has no `totalCount`. A version’s repos are modeled as `locationsConnection` on `StoredPackageVersion` (e.g. `repositoryKey`, `leadArtifactPath`), not a `repos` field.
|
|
183
|
+
|
|
184
|
+
```graphql
|
|
185
|
+
query {
|
|
186
|
+
storedPackages {
|
|
187
|
+
getPackage(name: "<package-name>", type: "<PACKAGE_TYPE>") {
|
|
188
|
+
name
|
|
189
|
+
type
|
|
190
|
+
description
|
|
191
|
+
versionsConnection(first: 10) {
|
|
192
|
+
edges {
|
|
193
|
+
node {
|
|
194
|
+
version
|
|
195
|
+
locationsConnection(first: 5) {
|
|
196
|
+
edges {
|
|
197
|
+
node {
|
|
198
|
+
repositoryKey
|
|
199
|
+
leadArtifactPath
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
pageInfo {
|
|
203
|
+
hasNextPage
|
|
204
|
+
endCursor
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
pageInfo {
|
|
210
|
+
hasNextPage
|
|
211
|
+
endCursor
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Search stored package versions
|
|
220
|
+
|
|
221
|
+
`StoredPackageVersionWhereInput` does not take package `type` / `name` at the top level — filter via `hasPackageWith` and `StoredPackageWhereInput`.
|
|
222
|
+
|
|
223
|
+
```graphql
|
|
224
|
+
query {
|
|
225
|
+
storedPackages {
|
|
226
|
+
searchPackageVersions(
|
|
227
|
+
where: {
|
|
228
|
+
hasPackageWith: [{ type: "npm", name: "<package-name>" }]
|
|
229
|
+
}
|
|
230
|
+
first: 20
|
|
231
|
+
) {
|
|
232
|
+
edges {
|
|
233
|
+
node {
|
|
234
|
+
version
|
|
235
|
+
locationsConnection(first: 5) {
|
|
236
|
+
edges {
|
|
237
|
+
node {
|
|
238
|
+
repositoryKey
|
|
239
|
+
leadArtifactPath
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
pageInfo {
|
|
246
|
+
hasNextPage
|
|
247
|
+
endCursor
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Public packages domain
|
|
255
|
+
|
|
256
|
+
The `publicPackages` namespace queries packages from public registries (npm,
|
|
257
|
+
Maven Central, PyPI, etc.).
|
|
258
|
+
|
|
259
|
+
### Search public packages
|
|
260
|
+
|
|
261
|
+
```graphql
|
|
262
|
+
query {
|
|
263
|
+
publicPackages {
|
|
264
|
+
searchPackages(
|
|
265
|
+
where: { type: "npm", nameContains: "<search-term>" }
|
|
266
|
+
first: 20
|
|
267
|
+
) {
|
|
268
|
+
totalCount
|
|
269
|
+
edges {
|
|
270
|
+
node {
|
|
271
|
+
name
|
|
272
|
+
type
|
|
273
|
+
description
|
|
274
|
+
latestVersion {
|
|
275
|
+
version
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
pageInfo {
|
|
280
|
+
hasNextPage
|
|
281
|
+
endCursor
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Get a public package
|
|
289
|
+
|
|
290
|
+
```graphql
|
|
291
|
+
query {
|
|
292
|
+
publicPackages {
|
|
293
|
+
getPackage(type: "maven", name: "<package-name>") {
|
|
294
|
+
name
|
|
295
|
+
type
|
|
296
|
+
description
|
|
297
|
+
latestVersion {
|
|
298
|
+
version
|
|
299
|
+
}
|
|
300
|
+
versionsConnection(first: 10) {
|
|
301
|
+
edges {
|
|
302
|
+
node {
|
|
303
|
+
version
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### Get a public package version with security and legal info
|
|
313
|
+
|
|
314
|
+
Version-level `securityInfo` and `legalInfo` use dedicated types
|
|
315
|
+
(`PublicPackageVersionSecurityInfo` and `PublicPackageVersionLegalInfo`) whose
|
|
316
|
+
subfields differ from the package-level counterparts. Use the subfield
|
|
317
|
+
selections shown here — they are verified against the schema.
|
|
318
|
+
|
|
319
|
+
```graphql
|
|
320
|
+
query {
|
|
321
|
+
publicPackages {
|
|
322
|
+
getPackage(type: "npm", name: "<package-name>") {
|
|
323
|
+
name
|
|
324
|
+
versionsConnection(first: 5) {
|
|
325
|
+
edges {
|
|
326
|
+
node {
|
|
327
|
+
version
|
|
328
|
+
securityInfo {
|
|
329
|
+
vulnerabilities: vulnerabilitiesConnection(first: 100) {
|
|
330
|
+
edges {
|
|
331
|
+
node {
|
|
332
|
+
name
|
|
333
|
+
severity
|
|
334
|
+
cvss {
|
|
335
|
+
preferredBaseScore
|
|
336
|
+
}
|
|
337
|
+
aliases
|
|
338
|
+
advisories {
|
|
339
|
+
name
|
|
340
|
+
}
|
|
341
|
+
epss {
|
|
342
|
+
date @dateFormat(format: DD_MMM_YYYY)
|
|
343
|
+
score
|
|
344
|
+
percentile
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
maliciousnessInfo {
|
|
350
|
+
knownToBeMalicious
|
|
351
|
+
disclosedByJFrog
|
|
352
|
+
removedFromIndexAt @dateFormat(format: DD_MMM_YYYY)
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
legalInfo {
|
|
356
|
+
licenseInfo {
|
|
357
|
+
expression
|
|
358
|
+
licenses {
|
|
359
|
+
name
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
copyrights(first: 5) {
|
|
363
|
+
edges {
|
|
364
|
+
node {
|
|
365
|
+
content
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
## Public security domain
|
|
379
|
+
|
|
380
|
+
The `publicSecurityInfo` namespace queries vulnerability advisories from JFrog's
|
|
381
|
+
global catalog. A single CVE appears once per ecosystem — use the `name` filter
|
|
382
|
+
to find all ecosystem entries for a CVE, or add `ecosystem` to narrow results.
|
|
383
|
+
|
|
384
|
+
### Search vulnerability by CVE name
|
|
385
|
+
|
|
386
|
+
`getVulnerability` requires both `name` and `ecosystem`. When the ecosystem is
|
|
387
|
+
unknown, use `searchVulnerabilities` with a `name` filter instead — it returns
|
|
388
|
+
all ecosystem entries for the CVE.
|
|
389
|
+
|
|
390
|
+
**Cannot filter by affected package:** `PublicVulnerabilityWhereInput` has no
|
|
391
|
+
package-name filter (e.g. no `hasPublicPackageInfoWith`). To find CVEs
|
|
392
|
+
affecting a specific package, use `publicPackages.getPackage` → version →
|
|
393
|
+
`securityInfo.vulnerabilitiesConnection`, or the Xray REST component summary
|
|
394
|
+
API. See `catalog-entities.md` § *Filtering limitations*.
|
|
395
|
+
|
|
396
|
+
**Ecosystem entries:** A CVE typically appears across multiple ecosystems
|
|
397
|
+
(e.g. `generic`, `debian`, `redhat`, `ubuntu`). The `generic` ecosystem
|
|
398
|
+
entry contains the actual vulnerable public package list; OS-specific entries
|
|
399
|
+
are for OS-level tracking and usually have `totalCount: 0` in
|
|
400
|
+
`vulnerablePublicPackagesConnection`.
|
|
401
|
+
|
|
402
|
+
**Pagination:** Popular CVEs can have hundreds of vulnerable versions (e.g.
|
|
403
|
+
lodash CVE-2021-23337 has 395). The example below uses `first: 500` to capture
|
|
404
|
+
most CVEs in a single page. If `totalCount` exceeds the page size, paginate
|
|
405
|
+
with `after:` and `pageInfo` on `vulnerablePublicPackagesConnection`.
|
|
406
|
+
|
|
407
|
+
```graphql
|
|
408
|
+
query {
|
|
409
|
+
publicSecurityInfo {
|
|
410
|
+
searchVulnerabilities(
|
|
411
|
+
where: { name: "<CVE-ID>" }
|
|
412
|
+
first: 10
|
|
413
|
+
) {
|
|
414
|
+
totalCount
|
|
415
|
+
edges {
|
|
416
|
+
node {
|
|
417
|
+
name
|
|
418
|
+
ecosystem
|
|
419
|
+
severity
|
|
420
|
+
description
|
|
421
|
+
withdrawn
|
|
422
|
+
publishedAt
|
|
423
|
+
modifiedAt
|
|
424
|
+
cvss {
|
|
425
|
+
preferredBaseScore
|
|
426
|
+
v2 { baseScore accessVector accessComplexity }
|
|
427
|
+
v3 {
|
|
428
|
+
baseScore attackVector attackComplexity
|
|
429
|
+
privilegesRequired userInteraction scope
|
|
430
|
+
confidentialityImpact integrityImpact availabilityImpact
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
epss { score percentile date }
|
|
434
|
+
knownExploit { addedAt dueDateAt }
|
|
435
|
+
aliases
|
|
436
|
+
cwesConnection(first: 10) {
|
|
437
|
+
edges {
|
|
438
|
+
node { identifier name }
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
advisories {
|
|
442
|
+
name
|
|
443
|
+
url
|
|
444
|
+
... on PublicVulnerabilityNvdAdvisory {
|
|
445
|
+
severity shortDescription publishedAt
|
|
446
|
+
}
|
|
447
|
+
... on PublicVulnerabilityGhsaAdvisory {
|
|
448
|
+
severity summary description publishedAt
|
|
449
|
+
}
|
|
450
|
+
... on PublicVulnerabilityJFrogAdvisory {
|
|
451
|
+
severity shortDescription fullDescription
|
|
452
|
+
impact vulnerabilityType resolution
|
|
453
|
+
impactReasons { name description isPositive }
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
publicPackageInfo {
|
|
457
|
+
vulnerablePublicPackagesConnection(first: 500) {
|
|
458
|
+
totalCount
|
|
459
|
+
edges {
|
|
460
|
+
node {
|
|
461
|
+
publicPackageVersion {
|
|
462
|
+
version
|
|
463
|
+
publicPackage { name type }
|
|
464
|
+
}
|
|
465
|
+
fixVersionsConnection(first: 5) {
|
|
466
|
+
edges {
|
|
467
|
+
node { version }
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
## Release lifecycle domain
|
|
482
|
+
|
|
483
|
+
The `releaseBundleVersion` namespace queries release bundle versions and
|
|
484
|
+
contents.
|
|
485
|
+
|
|
486
|
+
### Get release bundle version basic info
|
|
487
|
+
|
|
488
|
+
```graphql
|
|
489
|
+
query {
|
|
490
|
+
releaseBundleVersion {
|
|
491
|
+
getVersion(name: "<bundle-name>", version: "<version>") {
|
|
492
|
+
createdBy
|
|
493
|
+
createdAt
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
Optional arguments for `getVersion`:
|
|
500
|
+
|
|
501
|
+
- `repositoryKey` — defaults to `release-bundles-v2`
|
|
502
|
+
- `projectKey` — scopes to a specific project
|
|
503
|
+
|
|
504
|
+
### Get release bundle artifacts
|
|
505
|
+
|
|
506
|
+
```graphql
|
|
507
|
+
query {
|
|
508
|
+
releaseBundleVersion {
|
|
509
|
+
getVersion(name: "<bundle-name>", version: "<version>") {
|
|
510
|
+
artifactsConnection(first: 50) {
|
|
511
|
+
totalCount
|
|
512
|
+
edges {
|
|
513
|
+
node {
|
|
514
|
+
name
|
|
515
|
+
path
|
|
516
|
+
sha256
|
|
517
|
+
packageType
|
|
518
|
+
packageName
|
|
519
|
+
packageVersion
|
|
520
|
+
size
|
|
521
|
+
sourceRepositoryPath
|
|
522
|
+
properties {
|
|
523
|
+
key
|
|
524
|
+
values
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
pageInfo {
|
|
529
|
+
hasNextPage
|
|
530
|
+
endCursor
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
### Get release bundle source builds
|
|
539
|
+
|
|
540
|
+
```graphql
|
|
541
|
+
query {
|
|
542
|
+
releaseBundleVersion {
|
|
543
|
+
getVersion(name: "<bundle-name>", version: "<version>") {
|
|
544
|
+
fromBuilds {
|
|
545
|
+
name
|
|
546
|
+
number
|
|
547
|
+
startedAt
|
|
548
|
+
repositoryKey
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
### Get release bundle with artifact evidence
|
|
556
|
+
|
|
557
|
+
```graphql
|
|
558
|
+
query {
|
|
559
|
+
releaseBundleVersion {
|
|
560
|
+
getVersion(name: "<bundle-name>", version: "<version>") {
|
|
561
|
+
artifactsConnection(first: 50, where: { hasEvidence: true }) {
|
|
562
|
+
edges {
|
|
563
|
+
node {
|
|
564
|
+
name
|
|
565
|
+
packageType
|
|
566
|
+
evidenceConnection(first: 5) {
|
|
567
|
+
edges {
|
|
568
|
+
node {
|
|
569
|
+
predicateType
|
|
570
|
+
sha256
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### Full traceability — release to build evidence
|
|
583
|
+
|
|
584
|
+
```graphql
|
|
585
|
+
query {
|
|
586
|
+
releaseBundleVersion {
|
|
587
|
+
getVersion(name: "<bundle-name>", version: "<version>") {
|
|
588
|
+
createdBy
|
|
589
|
+
createdAt
|
|
590
|
+
fromBuilds {
|
|
591
|
+
name
|
|
592
|
+
number
|
|
593
|
+
startedAt
|
|
594
|
+
evidenceConnection(first: 10) {
|
|
595
|
+
edges {
|
|
596
|
+
node {
|
|
597
|
+
predicateType
|
|
598
|
+
sha256
|
|
599
|
+
createdBy
|
|
600
|
+
createdAt
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
## Evidence domain
|
|
611
|
+
|
|
612
|
+
The `evidence` namespace searches evidence attached to artifacts in repositories.
|
|
613
|
+
|
|
614
|
+
### Search evidence in a repository
|
|
615
|
+
|
|
616
|
+
```graphql
|
|
617
|
+
query {
|
|
618
|
+
evidence {
|
|
619
|
+
searchEvidence(
|
|
620
|
+
first: 10
|
|
621
|
+
where: {
|
|
622
|
+
hasSubjectWith: {
|
|
623
|
+
repositoryKey: "<repo-key>"
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
) {
|
|
627
|
+
totalCount
|
|
628
|
+
edges {
|
|
629
|
+
node {
|
|
630
|
+
predicateSlug
|
|
631
|
+
predicateType
|
|
632
|
+
predicate
|
|
633
|
+
verified
|
|
634
|
+
downloadPath
|
|
635
|
+
subject {
|
|
636
|
+
path
|
|
637
|
+
name
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
pageInfo {
|
|
642
|
+
hasNextPage
|
|
643
|
+
endCursor
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
### Search evidence for a specific artifact
|
|
651
|
+
|
|
652
|
+
```graphql
|
|
653
|
+
query {
|
|
654
|
+
evidence {
|
|
655
|
+
searchEvidence(
|
|
656
|
+
where: {
|
|
657
|
+
hasSubjectWith: {
|
|
658
|
+
repositoryKey: "<repo-key>"
|
|
659
|
+
path: "<path/to>"
|
|
660
|
+
name: "<filename>"
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
) {
|
|
664
|
+
edges {
|
|
665
|
+
node {
|
|
666
|
+
predicateSlug
|
|
667
|
+
predicateType
|
|
668
|
+
verified
|
|
669
|
+
downloadPath
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
### Get evidence by location
|
|
678
|
+
|
|
679
|
+
```graphql
|
|
680
|
+
query {
|
|
681
|
+
evidence {
|
|
682
|
+
getEvidence(
|
|
683
|
+
repositoryKey: "<repo-key>"
|
|
684
|
+
path: "<path/to>"
|
|
685
|
+
name: "<filename>"
|
|
686
|
+
) {
|
|
687
|
+
evidenceId
|
|
688
|
+
verified
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
### Search evidence with variables
|
|
695
|
+
|
|
696
|
+
```graphql
|
|
697
|
+
query GetEvidence($repoKey: String!, $path: String!, $name: String!) {
|
|
698
|
+
evidence {
|
|
699
|
+
getEvidence(
|
|
700
|
+
repositoryKey: $repoKey
|
|
701
|
+
path: $path
|
|
702
|
+
name: $name
|
|
703
|
+
) {
|
|
704
|
+
evidenceId
|
|
705
|
+
verified
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
Variables:
|
|
712
|
+
|
|
713
|
+
```json
|
|
714
|
+
{
|
|
715
|
+
"repoKey": "example-repo-local",
|
|
716
|
+
"path": "path/to",
|
|
717
|
+
"name": "file.ext"
|
|
718
|
+
}
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
## Cross-domain queries
|
|
722
|
+
|
|
723
|
+
OneModel can combine domains in a single query.
|
|
724
|
+
|
|
725
|
+
### Release bundle artifacts with evidence
|
|
726
|
+
|
|
727
|
+
```graphql
|
|
728
|
+
query {
|
|
729
|
+
releaseBundleVersion {
|
|
730
|
+
getVersion(name: "<bundle-name>", version: "<version>") {
|
|
731
|
+
createdBy
|
|
732
|
+
createdAt
|
|
733
|
+
artifactsConnection(first: 20) {
|
|
734
|
+
edges {
|
|
735
|
+
node {
|
|
736
|
+
name
|
|
737
|
+
path
|
|
738
|
+
packageType
|
|
739
|
+
evidenceConnection(first: 5) {
|
|
740
|
+
edges {
|
|
741
|
+
node {
|
|
742
|
+
predicateSlug
|
|
743
|
+
verified
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
```
|