Fortify Scans API

View and manage security scans

OpenAPI Specification

fortify-scans-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Fortify on Demand Alert Definitions Scans API
  description: REST API for Fortify on Demand (FoD), the cloud-based application security testing service from OpenText. Provides programmatic access to manage applications, releases, initiate static, dynamic, and mobile scans, retrieve vulnerability results, and manage tenant-level settings. Supports OAuth2 client credentials and resource owner password grant flows for authentication.
  version: v3
  contact:
    name: OpenText Fortify Support
    url: https://www.opentext.com/support
    email: fortify-support@microfocus.com
  license:
    name: Proprietary
    url: https://www.opentext.com/about/legal/website-terms-of-use
  x-logo:
    url: https://www.microfocus.com/brand/fortify-logo.png
servers:
- url: https://api.ams.fortify.com
  description: Fortify on Demand - Americas
- url: https://api.emea.fortify.com
  description: Fortify on Demand - EMEA
- url: https://api.apac.fortify.com
  description: Fortify on Demand - APAC
security:
- bearerAuth: []
tags:
- name: Scans
  description: View and manage security scans
paths:
  /api/v3/applications/{applicationId}/scans:
    get:
      operationId: listApplicationScans
      summary: Fortify List application scans
      description: Returns a paginated list of scans for the specified application.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ApplicationId'
      - $ref: '#/components/parameters/OrderBy'
      - $ref: '#/components/parameters/OrderByDirection'
      - $ref: '#/components/parameters/Fields'
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Successful response with list of scans
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScanListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v3/releases/{releaseId}/scans:
    get:
      operationId: listReleaseScans
      summary: Fortify List release scans
      description: Returns a paginated list of scans for the specified release.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ReleaseId'
      - $ref: '#/components/parameters/OrderBy'
      - $ref: '#/components/parameters/OrderByDirection'
      - $ref: '#/components/parameters/Fields'
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Successful response with list of scans
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScanListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v3/releases/{releaseId}/scans/{scanId}:
    get:
      operationId: getReleaseScan
      summary: Fortify Get release scan
      description: Returns summary information for the specified scan.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ReleaseId'
      - name: scanId
        in: path
        required: true
        description: Unique identifier of the scan
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Successful response with scan details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Scan'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v3/releases/{releaseId}/scans/{scanId}/polling-summary:
    get:
      operationId: getReleaseScanPollingSummary
      summary: Fortify Get scan polling summary
      description: Returns the current scan status for a specific scan, useful for polling scan progress.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ReleaseId'
      - name: scanId
        in: path
        required: true
        description: Unique identifier of the scan
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Successful response with scan polling summary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PollingScanSummary'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v3/releases/{releaseId}/assessment-types:
    get:
      operationId: listReleaseAssessmentTypes
      summary: Fortify List assessment types
      description: Returns a list of available assessment types and entitlements for the specified release.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ReleaseId'
      - name: scanType
        in: query
        required: true
        description: Type of scan to retrieve assessment types for
        schema:
          type: string
          enum:
          - Static
          - Dynamic
          - Mobile
          - OpenSource
      - $ref: '#/components/parameters/Filters'
      - $ref: '#/components/parameters/OrderBy'
      - $ref: '#/components/parameters/OrderByDirection'
      - $ref: '#/components/parameters/Fields'
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Successful response with assessment types
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReleaseAssessmentTypeListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /api/v3/releases/{releaseId}/import-scan-session-id:
    get:
      operationId: getReleaseImportScanSessionId
      summary: Fortify Get import scan session ID
      description: Initiates an import scan session and returns a session identifier for uploading third-party scan results.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ReleaseId'
      responses:
        '200':
          description: Successful response with import scan session ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetImportScanSessionIdResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /scans:
    get:
      operationId: listScans
      summary: Fortify List scans
      description: Retrieves a paginated list of DAST scans. Supports filtering by status, settings, and other criteria.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Limit_2'
      - name: status
        in: query
        description: Filter by scan status
        schema:
          type: string
          enum:
          - Queued
          - Pending
          - Running
          - Complete
          - Failed
          - Paused
          - ImportingScanResults
          - Unknown
      - name: scanSettingsId
        in: query
        description: Filter by scan settings identifier
        schema:
          type: string
          format: uuid
      - name: orderBy
        in: query
        description: Field to sort results by
        schema:
          type: string
      - name: orderByDirection
        in: query
        description: Sort direction
        schema:
          type: string
          enum:
          - ASC
          - DESC
      responses:
        '200':
          description: Successful response with list of scans
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScanListResponse_2'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '403':
          $ref: '#/components/responses/Forbidden_2'
  /scans/{scanId}:
    get:
      operationId: getScan
      summary: Fortify Get scan
      description: Retrieves details for a specific scan by identifier.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ScanId'
      responses:
        '200':
          description: Successful response with scan details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DastScan'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteScan
      summary: Fortify Delete scan
      description: Deletes a specific scan and its results.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ScanId'
      responses:
        '200':
          description: Scan deleted successfully
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '404':
          $ref: '#/components/responses/NotFound'
  /scans/{scanId}/action:
    post:
      operationId: performScanAction
      summary: Fortify Perform scan action
      description: Performs an action on a scan such as pausing, resuming, cancelling, or retrying.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ScanId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScanActionRequest'
      responses:
        '200':
          description: Action performed successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '404':
          $ref: '#/components/responses/NotFound'
  /scans/{scanId}/scan-log:
    get:
      operationId: getScanLog
      summary: Fortify Get scan log
      description: Retrieves the scan log for a specific scan.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ScanId'
      responses:
        '200':
          description: Successful response with scan log content
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '404':
          $ref: '#/components/responses/NotFound'
  /scans/{scanId}/scan-summary:
    get:
      operationId: getScanSummary
      summary: Fortify Get scan summary
      description: Retrieves a summary of the scan results including vulnerability counts and scan metrics.
      tags:
      - Scans
      parameters:
      - $ref: '#/components/parameters/ScanId'
      responses:
        '200':
          description: Successful response with scan summary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DastScanSummary'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '404':
          $ref: '#/components/responses/NotFound'
  /scans/start-scan:
    post:
      operationId: startScan
      summary: Fortify Start scan
      description: Starts a new DAST scan using the specified scan settings configuration.
      tags:
      - Scans
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartScanRequest'
      responses:
        '200':
          description: Scan started successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StartScanResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '403':
          $ref: '#/components/responses/Forbidden_2'
  /scans/start-scan-cicd:
    post:
      operationId: startScanCicd
      summary: Fortify Start scan from CI/CD
      description: Starts a new DAST scan from a CI/CD pipeline using a pre-configured CI/CD token that references the scan settings. This is the primary endpoint for CI/CD integration.
      tags:
      - Scans
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartScanCicdRequest'
      responses:
        '200':
          description: Scan started successfully from CI/CD
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StartScanResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '403':
          $ref: '#/components/responses/Forbidden_2'
components:
  responses:
    Forbidden:
      description: Forbidden - insufficient permissions or scopes
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized_2:
      description: Unauthorized - authentication required or token invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse_2'
    Forbidden_2:
      description: Forbidden - insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse_2'
    TooManyRequests:
      description: Too many requests - rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Not found - the specified resource does not exist
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Unauthorized - authentication required or token expired
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Bad request - invalid parameters or request body
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse_2'
  parameters:
    Offset:
      name: offset
      in: query
      description: Number of records to skip for pagination
      schema:
        type: integer
        format: int32
        default: 0
    Limit_2:
      name: limit
      in: query
      description: Maximum number of records to return
      schema:
        type: integer
        format: int32
        default: 50
    ScanId:
      name: scanId
      in: path
      required: true
      description: Unique identifier of the scan
      schema:
        type: string
        format: uuid
    OrderBy:
      name: orderBy
      in: query
      description: Field name to sort results by
      schema:
        type: string
    Limit:
      name: limit
      in: query
      description: Maximum number of records to return (max 50)
      schema:
        type: integer
        format: int32
        default: 50
        maximum: 50
    OrderByDirection:
      name: orderByDirection
      in: query
      description: Sort direction
      schema:
        type: string
        enum:
        - ASC
        - DESC
    ReleaseId:
      name: releaseId
      in: path
      required: true
      description: Unique identifier of the release
      schema:
        type: integer
        format: int32
    Filters:
      name: filters
      in: query
      description: Filter expression using Fortify on Demand filter syntax. Multiple filters can be combined.
      schema:
        type: string
    Fields:
      name: fields
      in: query
      description: Comma-separated list of fields to include in the response
      schema:
        type: string
    ApplicationId:
      name: applicationId
      in: path
      required: true
      description: Unique identifier of the application
      schema:
        type: integer
        format: int32
  schemas:
    ErrorResponse_2:
      type: object
      description: Error response
      properties:
        errorCode:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: string
    PollingScanSummary:
      type: object
      description: Scan status for polling
      properties:
        scanId:
          type: integer
          format: int32
          description: Unique identifier of the scan
        analysisStatusType:
          type: string
          description: Current analysis status
        analysisStatusTypeValue:
          type: integer
          format: int32
          description: Numeric value of the analysis status
        pauseDetails:
          type: array
          items:
            type: object
            properties:
              reason:
                type: string
              notes:
                type: string
        passFailStatus:
          type: boolean
          description: Whether the scan passes the security policy
    AssessmentType:
      type: object
      description: Represents an assessment type
      properties:
        assessmentTypeId:
          type: integer
          format: int32
          description: Unique identifier
        name:
          type: string
          description: Assessment type name
        scanType:
          type: string
          description: Scan type
        entitlementId:
          type: integer
          format: int32
          description: Associated entitlement
        frequencyType:
          type: string
          description: Frequency type
    Scan:
      type: object
      description: Represents a security scan
      properties:
        scanId:
          type: integer
          format: int32
          description: Unique identifier of the scan
        scanType:
          type: string
          description: Type of scan performed
          enum:
          - Static
          - Dynamic
          - Mobile
          - OpenSource
        analysisStatusType:
          type: string
          description: Current analysis status
        startedDateTime:
          type: string
          format: date-time
          description: Date and time when the scan started
        completedDateTime:
          type: string
          format: date-time
          description: Date and time when the scan completed
        totalIssues:
          type: integer
          format: int32
          description: Total number of issues found
        issueCountCritical:
          type: integer
          format: int32
          description: Number of critical issues found
        issueCountHigh:
          type: integer
          format: int32
          description: Number of high issues found
        issueCountMedium:
          type: integer
          format: int32
          description: Number of medium issues found
        issueCountLow:
          type: integer
          format: int32
          description: Number of low issues found
        releaseId:
          type: integer
          format: int32
          description: Identifier of the associated release
        applicationId:
          type: integer
          format: int32
          description: Identifier of the associated application
    ScanListResponse:
      type: object
      description: Paginated list of scans
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Scan'
        totalCount:
          type: integer
          format: int32
          description: Total number of scans matching the query
    GetImportScanSessionIdResponse:
      type: object
      description: Response with import scan session ID
      properties:
        importScanSessionId:
          type: string
          description: Session identifier for importing scan results
    ReleaseAssessmentTypeListResponse:
      type: object
      description: List of available assessment types for a release
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/AssessmentType'
        totalCount:
          type: integer
          format: int32
    ScanListResponse_2:
      type: object
      description: Paginated list of scans
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/DastScan'
        totalCount:
          type: integer
          format: int32
    DastScan:
      type: object
      description: Represents a DAST scan
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier of the scan
        name:
          type: string
          description: Name of the scan
        scanSettingsId:
          type: string
          format: uuid
          description: Identifier of the scan settings used
        scanSettingsName:
          type: string
          description: Name of the scan settings
        status:
          type: string
          description: Current scan status
          enum:
          - Queued
          - Pending
          - Running
          - Complete
          - Failed
          - Paused
          - ImportingScanResults
          - Unknown
        sensorId:
          type: string
          format: uuid
          description: Identifier of the assigned sensor
        sensorName:
          type: string
          description: Name of the assigned sensor
        startTime:
          type: string
          format: date-time
          description: Scan start time
        endTime:
          type: string
          format: date-time
          description: Scan end time
        totalVulnerabilities:
          type: integer
          format: int32
          description: Total number of vulnerabilities found
        criticalCount:
          type: integer
          format: int32
          description: Number of critical vulnerabilities
        highCount:
          type: integer
          format: int32
          description: Number of high vulnerabilities
        mediumCount:
          type: integer
          format: int32
          description: Number of medium vulnerabilities
        lowCount:
          type: integer
          format: int32
          description: Number of low vulnerabilities
        infoCount:
          type: integer
          format: int32
          description: Number of informational findings
        sscApplicationVersionId:
          type: integer
          format: int64
          description: SSC application version identifier
        createdDate:
          type: string
          format: date-time
          description: Date when the scan was created
    ScanActionRequest:
      type: object
      description: Request to perform an action on a scan
      required:
      - actionType
      properties:
        actionType:
          type: string
          description: Type of action to perform
          enum:
          - Pause
          - Resume
          - Cancel
          - Retry
    ErrorResponse:
      type: object
      description: Error response
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              errorCode:
                type: integer
                format: int32
              message:
                type: string
    StartScanRequest:
      type: object
      description: Request to start a scan
      required:
      - scanSettingsId
      properties:
        scanSettingsId:
          type: string
          format: uuid
          description: Scan settings to use
        name:
          type: string
          description: Optional name for the scan
        overrides:
          type: object
          description: Optional scan parameter overrides
          properties:
            startUrl:
              type: string
              format: uri
            scanPolicyId:
              type: string
              format: uuid
            sensorPoolId:
              type: string
              format: uuid
    StartScanResponse:
      type: object
      description: Response after starting a scan
      properties:
        scanId:
          type: string
          format: uuid
          description: Identifier of the newly created scan
        status:
          type: string
          description: Initial scan status
    DastScanSummary:
      type: object
      description: Summary of a DAST scan
      properties:
        scanId:
          type: string
          format: uuid
          description: Scan identifier
        status:
          type: string
          description: Scan status
        totalVulnerabilities:
          type: integer
          format: int32
          description: Total vulnerabilities found
        criticalCount:
          type: integer
          format: int32
        highCount:
          type: integer
          format: int32
        mediumCount:
          type: integer
          format: int32
        lowCount:
          type: integer
          format: int32
        infoCount:
          type: integer
          format: int32
        pagesScanned:
          type: integer
          format: int32
          description: Number of pages scanned
        requestsMade:
          type: integer
          format: int32
          description: Number of HTTP requests made
        scanDuration:
          type: string
          description: Duration of the scan
    StartScanCicdRequest:
      type: object
      description: Request to start a scan from CI/CD pipeline
      required:
      - cicdToken
      properties:
        cicdToken:
          type: string
          format: uuid
          description: CI/CD token that references scan settings
        name:
          type: string
          description: Optional name for the scan
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: OAuth2 Bearer token obtained from POST /oauth/token using either client_credentials or password grant type.
externalDocs:
  description: Fortify on Demand API Reference
  url: https://api.ams.fortify.com/swagger/ui/index