JFrog · Arazzo Workflow

JFrog Secure Publish Artifact

Version 1.0.0

Deploy an artifact then immediately scan it with Xray for issues.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub ArtifactoryCI/CDContainer RegistryDevOpsMLOpsPackage ManagementSecuritySoftware Supply ChainArazzoWorkflows

Provider

jfrog

Workflows

secure-publish-artifact
Deploy an artifact and scan it with Xray in one flow.
Deploys an artifact to Artifactory, triggers an Xray scan for its component, then reads the artifact security summary back.
3 steps inputs: componentID, content, itemPath, repoKey outputs: artifacts, downloadUri, scanInfo
1
deploy
Deploy the artifact to the target repository path.
2
scan
Trigger an Xray scan for the deployed artifact's component.
3
summary
Read the artifact summary to capture the security issues and licenses for the freshly published artifact.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: JFrog Secure Publish Artifact
  summary: Deploy an artifact then immediately scan it with Xray for issues.
  description: >-
    A secure publish flow that spans Artifactory and Xray. The workflow deploys
    an artifact to a repository path, then triggers an Xray scan for the
    corresponding component and reads the artifact summary so the publisher sees
    its security posture right after upload. Because both specs are referenced,
    operationIds are namespaced. Every step spells out its request inline so the
    flow can be read and executed without opening the underlying OpenAPI
    description.
  version: 1.0.0
  x-realizes-capability-ids:
  - BC-620.40
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-620.40
      capability_name: Vulnerability Management
      spec: jfrog-scanning-api-openapi.yml
      confidence: 0.75
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: artifactsStorageApi
  url: ../openapi/jfrog-artifacts-storage-api-openapi.yml
  type: openapi
- name: scanningApi
  url: ../openapi/jfrog-scanning-api-openapi.yml
  type: openapi
- name: summaryApi
  url: ../openapi/jfrog-summary-api-openapi.yml
  type: openapi
workflows:
- workflowId: secure-publish-artifact
  summary: Deploy an artifact and scan it with Xray in one flow.
  description: >-
    Deploys an artifact to Artifactory, triggers an Xray scan for its component,
    then reads the artifact security summary back.
  inputs:
    type: object
    required:
    - repoKey
    - itemPath
    - content
    - componentID
    properties:
      repoKey:
        type: string
        description: The repository key to deploy into.
      itemPath:
        type: string
        description: The repository path for the artifact.
      content:
        type: string
        description: The raw artifact content to deploy.
      componentID:
        type: string
        description: 'The Xray component id for the artifact (e.g. docker://image:tag).'
  steps:
  - stepId: deploy
    description: >-
      Deploy the artifact to the target repository path.
    operationId: $sourceDescriptions.artifactsStorageApi.deployArtifact
    parameters:
    - name: repoKey
      in: path
      value: $inputs.repoKey
    - name: itemPath
      in: path
      value: $inputs.itemPath
    requestBody:
      contentType: application/octet-stream
      payload: $inputs.content
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      downloadUri: $response.body#/downloadUri
      deployedPath: $response.body#/path
  - stepId: scan
    description: >-
      Trigger an Xray scan for the deployed artifact's component.
    operationId: $sourceDescriptions.scanningApi.scanArtifact
    requestBody:
      contentType: application/json
      payload:
        componentID: $inputs.componentID
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      info: $response.body#/info
  - stepId: summary
    description: >-
      Read the artifact summary to capture the security issues and licenses for
      the freshly published artifact.
    operationId: $sourceDescriptions.summaryApi.getArtifactSummary
    requestBody:
      contentType: application/json
      payload:
        paths:
        - $inputs.repoKey/$inputs.itemPath
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      artifacts: $response.body#/artifacts
  outputs:
    downloadUri: $steps.deploy.outputs.downloadUri
    scanInfo: $steps.scan.outputs.info
    artifacts: $steps.summary.outputs.artifacts

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/jfrog-secure-publish-artifact-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.