GraphQL APIs
This section includes examples of GraphQL APIs for JFrog Catalog.
Note
-
This API is in beta phase and subject to changes.
-
The request that needs to be done for this API is a POST HTTP request to path
/catalog/api/v1/custom/graphqlwith standard GraphQL over POST format for the body of the request.
Labels
Get a label with its assigned packages and package versions
{
customCatalogLabel {
getLabel(name: "my_label") {
name
description
publicPackagesConnection(first:5) {
edges {
node {
name
type
}
}
}
publicPackageVersionsConnection(first:5) {
edges {
node {
publicPackage {
name
type
}
version
}
}
}
}
}
}
Get multiple labels with their assigned packages and package versions
{
customCatalogLabel {
searchLabels(first:10 where:{nameContainsFold:"my"} orderBy:{field:NAME, direction:ASC}) {
edges {
node{
name
description
publicPackagesConnection(first:4) {
edges {
node {
name
type
}
}
}
publicPackageVersionsConnection(first:4) {
edges {
node {
publicPackage {
name
type
}
version
}
}
}
}
}
}
}
}
Get a package with its labels
{
publicPackage {
getPackage(name: "my_package" type: "npm") {
name
type
customCatalogLabelsConnection(first:4) {
edges {
node {
name
}
}
}
}
}
}
Get a package version with its labels and its package with its labels
{
publicPackageVersion {
getVersion(name: "my_package" type: "npm" version: "1.0.0") {
publicPackage {
name
type
customCatalogLabelsConnection(first:4) {
edges {
node {
name
}
}
}
}
version
customCatalogLabelsConnection(first:4) {
edges {
node {
name
}
}
}
}
}
}
Create a label
mutation {
customCatalogLabel {
createCustomCatalogLabel(label: {name: "my_label", description: "some description"}) {
name
description
}
}
}
Create multiple labels
mutation {
customCatalogLabel{
createCustomCatalogLabels(labels: [{name: "my_label1", description: "description1"}, {name: "my_label2", description: "description2"}]) {
name
description
}
}
}
Assign a label to a package
mutation {
customCatalogLabel {
assignCustomCatalogLabelsToPublicPackage(
publicPackageLabels: {
publicPackage: {name:"my_package", type:"npm"}
labelNames:["my_label"]
}
)
}
}
Assign a label to a package version
mutation {
customCatalogLabel {
assignCustomCatalogLabelsToPublicPackageVersion(
publicPackageVersionLabels: {
publicPackageVersion: {publicPackage: {name: "my_package", type: "npm"}, version: "1.0.0"}
labelNames: ["my_label1"]
}
)
}
}
Assign a label to multiple package versions
mutation {
customCatalogLabel {
assignCustomCatalogLabelToPublicPackageVersions(
publicPackageVersionsLabel: {
publicPackageVersions: [
{publicPackage: {name: "my_package", type: "npm"}, version: "1.0.0"},
{publicPackage: {name: "my_package", type: "npm"}, version: "1.0.0"}
],
labelName: "my_label1"
}
)
}
}
Remove labels from a package
mutation {
customCatalogLabel {
removeCustomCatalogLabelsFromPublicPackage(
publicPackageLabels:{
labelNames:["my_label", "my_label2"]
publicPackage:{name:"my_package", type:"npm"}})
}
}
Remove labels from a package version
mutation {
customCatalogLabel {
removeCustomCatalogLabelsFromPublicPackageVersion(
publicPackageVersionLabels: {
labelNames:["my_label1", "my_label2"]
publicPackageVersion: {
publicPackage: {name:"my_package", type:"npm"}
version:"package_version"
}
}
)
}
}
Remove a label from multiple package versions
mutation {
customCatalogLabel {
removeCustomCatalogLabelFromPublicPackageVersions(
publicPackageVersionsLabel: {
labelName:"my_label1"
publicPackageVersions:[
{publicPackage:{name:"my_package", type:"npm"} version: "1.0.0"}
{publicPackage:{name:"my_package", type:"npm"} version: "1.0.1"}
]
}
)
}
}
Update a label
mutation {
customCatalogLabel {
updateCustomCatalogLabel(
label: {name: "my_label", updatedName: "my_label_new", updatedDescription: "updated description"}
) {
name
description
}
}
}
Delete a label
mutation {
customCatalogLabel {
deleteCustomCatalogLabel(label:{name:"my_label"})
}
}
Delete multiple labels
mutation {
customCatalogLabel {
deleteCustomCatalogLabels(labels:[{name:"x1"}, {name:"x2"}])
}
}
GraphQL API Error Messages
| Error Message | Description |
|---|---|
| Creating more than 500 labels is not supported | Returned from
|
| Assigning more than 1 label is not supported | Returned from
|
| Some of the labels already exist | Returned from
|
| Deleting more than 500 labels is not supported | Returned from
|
| Removing more than 500 labels assignments in a single operation is not supported | Returned from
|
| Assigning a label to more than 500 package versions in a single operation is not supported | Returned from
|
| A label name cannot be empty | Returned from
|
| Labels must be specified for the assignment | Returned from
|
| A requested package version already has a label assigned. More than one label per package version is not supported yet | Returned from
|
| A requested package already has a label assigned. More than one label per package is not supported yet | Returned from
|
| Label name is too long {label_name}, must have fewer than 1000 characters | Returned from
|
| Label description is too long {label_description}, must have fewer than 10000 characters |
|
| Label {label_name} does not exist |
|
| Label with name {label_name} already exists |
|
| The following labels were not found:[ {label_names}]. All labels must exist when assigned |
|
Updated 2 months ago
