Binarly Grid API

The Grid API from Binarly — 12 operation(s) for grid.

Operations 12

POST /api/v4/grids/products:gridList Grid List Products #
POST /api/v4/grids/images:gridList Grid List Images #
POST /api/v4/grids/scans:gridList Grid List Scans #
POST /api/v4/grids/files:gridList Grid List Files #
POST /api/v4/grids/findings:gridList Grid List Findings #
POST /api/v4/grids/dependencies:gridList Grid List Dependencies #
POST /api/v4/grids/components:gridList Grid List Components #
POST /api/v4/grids/cryptographicAssets:gridList Grid List Cryptographic Assets #
POST /api/v4/grids/customRules:gridList Grid List Custom Rules #
POST /api/v4/grids/users:gridList Grid List Users #
POST /api/v4/grids/groups:gridList Grid List Groups #
POST /api/v4/grids/groupMembers:gridList Grid List Group Members #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/binarly-grid-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

binarly-grid-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Binarly Assistant Grid API
  version: 4.275.2
security:
- auth: []
tags:
- name: Grid
paths:
  /api/v4/grids/products:gridList:
    post:
      summary: Grid List Products
      operationId: GridListProducts
      x-permission: ''
      x-pass-resource-ids:
        resourceType: Product
        permission: products.view
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridProducts'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
  /api/v4/grids/images:gridList:
    post:
      summary: Grid List Images
      operationId: GridListImages
      x-permission: ''
      x-pass-resource-ids:
        resourceType: Product
        permission: products.view
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridImagesQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridImages'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
  /api/v4/grids/scans:gridList:
    post:
      summary: Grid List Scans
      operationId: GridListScans
      x-permission: ''
      x-pass-resource-ids:
        resourceType: Product
        permission: products.view
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridScans'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
  /api/v4/grids/files:gridList:
    post:
      summary: Grid List Files
      operationId: GridListFiles
      x-permission: ''
      x-pass-resource-ids:
        resourceType: Product
        permission: products.view
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridFiles'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
  /api/v4/grids/findings:gridList:
    post:
      summary: Grid List Findings
      operationId: GridListFindings
      x-permission: ''
      x-pass-resource-ids:
        resourceType: Product
        permission: products.view
      tags:
      - Grid
      parameters:
      - $ref: '#/components/parameters/QueryOptionalContentType'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridFindingsQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridFindings'
            text/csv:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
  /api/v4/grids/dependencies:gridList:
    post:
      summary: Grid List Dependencies
      operationId: GridListDependencies
      x-permission: ''
      x-pass-resource-ids:
        resourceType: Product
        permission: products.view
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridDependencies'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
  /api/v4/grids/components:gridList:
    post:
      summary: Grid List Components
      operationId: GridListComponents
      x-permission: ''
      x-pass-resource-ids:
        resourceType: Product
        permission: products.view
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridComponents'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
  /api/v4/grids/cryptographicAssets:gridList:
    post:
      summary: Grid List Cryptographic Assets
      operationId: GridListCryptographicAssets
      x-permission: ''
      x-pass-resource-ids:
        resourceType: Product
        permission: products.view
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridCryptographicAssets'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
  /api/v4/grids/customRules:gridList:
    post:
      summary: Grid List Custom Rules
      operationId: GridListRules
      x-permission: customRules.list
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridRules'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
  /api/v4/grids/users:gridList:
    post:
      summary: Grid List Users
      operationId: GridListUsers
      x-permission: users.list
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridUsers'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/v4/grids/groups:gridList:
    post:
      summary: Grid List Groups
      operationId: GridListGroups
      x-permission: groups.list
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridGroups'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /api/v4/grids/groupMembers:gridList:
    post:
      summary: Grid List Group Members
      operationId: GridListGroupMembers
      x-permission: ''
      tags:
      - Grid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GridQuery'
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GridGroupMembers'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    GridScans:
      allOf:
      - $ref: '#/components/schemas/WithGridScans'
      - $ref: '#/components/schemas/WithTotals'
    WithOptionalDependencyComponentsCount:
      type: object
      properties:
        dependencyComponentsCount:
          type: integer
    WithGridFiles:
      type: object
      required:
      - rows
      properties:
        rows:
          type: array
          items:
            $ref: '#/components/schemas/GridFile'
    FindingTypeCount:
      allOf:
      - $ref: '#/components/schemas/WithFindingType'
      - $ref: '#/components/schemas/WithCount'
    WithOptionalCompareRightImageId:
      type: object
      properties:
        compareRightImageId:
          $ref: '#/components/schemas/ULID'
    WithResourceType:
      type: object
      required:
      - resourceType
      properties:
        resourceType:
          $ref: '#/components/schemas/ResourceType'
    WithOptionalReferences:
      type: object
      properties:
        references:
          type: array
          items:
            $ref: '#/components/schemas/FindingReference'
    WithOptionalArchiveTime:
      type: object
      properties:
        archiveTime:
          type: string
          readOnly: true
    WithOptionalFindingsBySeverity:
      type: object
      properties:
        findingsBySeverity:
          $ref: '#/components/schemas/CountBySeverity'
    WithOptionalUserStatus:
      type: object
      properties:
        status:
          type: string
          x-go-type: string
          enum:
          - active
          - archived
    WithOptionalGroupRoleNames:
      type: object
      properties:
        groupRoleNames:
          type: array
          items:
            type: string
    GridDependencies:
      allOf:
      - $ref: '#/components/schemas/WithGridDependencies'
      - $ref: '#/components/schemas/WithTotals'
    WithOptionalImageId:
      type: object
      properties:
        imageId:
          allOf:
          - $ref: '#/components/schemas/ULID'
    WithOptionalClassifications:
      type: object
      properties:
        classifications:
          type: array
          items:
            $ref: '#/components/schemas/FindingClassification'
    GridRule:
      allOf:
      - $ref: '#/components/schemas/WithName'
      - $ref: '#/components/schemas/WithOptionalTitle'
      - $ref: '#/components/schemas/WithOptionalDescription'
      - $ref: '#/components/schemas/WithSeverity'
      - $ref: '#/components/schemas/WithIsEnabled'
      - $ref: '#/components/schemas/WithAuthor'
      - $ref: '#/components/schemas/WithUpdateTime'
    WithOptionalImages:
      type: object
      properties:
        images:
          type: array
          items:
            $ref: '#/components/schemas/Image'
    File:
      allOf:
      - $ref: '#/components/schemas/WithId'
      - $ref: '#/components/schemas/WithCreateTime'
      - $ref: '#/components/schemas/WithOptionalParent'
      - $ref: '#/components/schemas/WithAuthor'
      - $ref: '#/components/schemas/WithFilename'
      - $ref: '#/components/schemas/WithIsAttachment'
      - $ref: '#/components/schemas/WithDownloadUrl'
      - $ref: '#/components/schemas/WithOptionalMetadata'
    WithUnsafeFunctionsCount:
      type: object
      required:
      - unsafeFunctionsCount
      properties:
        unsafeFunctionsCount:
          type: integer
    WithOptionalDownloadUrl:
      type: object
      properties:
        downloadUrl:
          type: string
          readOnly: true
    WithIsLatest:
      type: object
      required:
      - isLatest
      properties:
        isLatest:
          type: boolean
    CountBySeverity:
      type: object
      readOnly: true
      properties:
        critical:
          type: integer
        high:
          type: integer
        medium:
          type: integer
        low:
          type: integer
        unspecified:
          type: integer
        total:
          type: integer
    ErrorResponse:
      required:
      - message
      type: object
      properties:
        message:
          type: string
          readOnly: true
          x-go-type-skip-optional-pointer: true
        details:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetail'
    WithTotals:
      type: object
      required:
      - total
      properties:
        total:
          type: integer
    WithPermissions:
      type: object
      required:
      - permissions
      properties:
        permissions:
          type: array
          items:
            type: string
            example: users.create
    GridImages:
      allOf:
      - $ref: '#/components/schemas/WithGridImages'
      - $ref: '#/components/schemas/WithTotals'
    WithExpiredCertificatesCount:
      type: object
      required:
      - expiredCertificatesCount
      properties:
        expiredCertificatesCount:
          type: integer
    WithOptionalArchivedBy:
      type: object
      properties:
        archivedBy:
          $ref: '#/components/schemas/User'
    GridFindings:
      allOf:
      - $ref: '#/components/schemas/WithGridFindings'
      - $ref: '#/components/schemas/WithTotals'
    FindingReference:
      type: object
      required:
      - description
      - url
      properties:
        description:
          type: string
        url:
          type: string
    WithVendor:
      type: object
      required:
      - vendor
      properties:
        vendor:
          type: string
    WithOptionalHasKnownFix:
      type: object
      properties:
        hasKnownFix:
          type: boolean
    WithOptionalAttachmentsCount:
      type: object
      properties:
        attachmentsCount:
          type: integer
    WithGridProducts:
      type: object
      required:
      - rows
      properties:
        rows:
          type: array
          items:
            $ref: '#/components/schemas/GridProduct'
    WithDownloadUrl:
      type: object
      required:
      - downloadUrl
      properties:
        downloadUrl:
          type: string
          readOnly: true
    WithOptionalIsEstimatedEpss:
      type: object
      properties:
        isEstimatedEpss:
          type: boolean
    WithPublicPoc:
      type: object
      required:
      - publicPoc
      properties:
        publicPoc:
          type: integer
    WithProperty:
      type: object
      required:
      - property
      properties:
        property: {}
    WithProductId:
      type: object
      required:
      - productId
      properties:
        productId:
          allOf:
          - $ref: '#/components/schemas/ULID'
    GridUsers:
      allOf:
      - $ref: '#/components/schemas/WithGridUsers'
      - $ref: '#/components/schemas/WithTotals'
    WithOptionalVersion:
      type: object
      properties:
        version:
          type: string
    WithOptionalIsLatest:
      type: object
      properties:
        isLatest:
          type: boolean
    WithOptionalLatestGridProductScan:
      type: object
      properties:
        latestScan:
          $ref: '#/components/schemas/GridScan'
    WithOptionalFiles:
      type: object
      properties:
        files:
          type: array
          items:
            $ref: '#/components/schemas/File'
    FindingClassification:
      type: object
      properties:
        cwe:
          type: string
        attck:
          type: string
        mbc:
          type: string
    WithFindingTypeCounts:
      type: object
      required:
      - findingTypeCounts
      properties:
        findingTypeCounts:
          type: array
          items:
            $ref: '#/components/schemas/FindingTypeCount'
    GridUser:
      allOf:
      - $ref: '#/components/schemas/WithId'
      - $ref: '#/components/schemas/WithCreateTime'
      - $ref: '#/components/schemas/WithEmail'
      - $ref: '#/components/schemas/WithOptionalUserStatus'
      - $ref: '#/components/schemas/WithOptionalResourceType'
      - $ref: '#/components/schemas/WithOptionalOrgRoleBindings'
      - $ref: '#/components/schemas/WithOptionalOrgRoleNames'
    WithProductName:
      type: object
      required:
      - productName
      properties:
        productName:
          type: string
    NISTIR8547Recommendations:
      type: object
      properties:
        recommendations:
          type: array
          items:
            $ref: '#/components/schemas/NISTIR8547Recommendation'
    WithOptionalDisplayName:
      type: object
      properties:
        displayName:
          type: string
    NISTIR8547KeyEstablishmentSecurity:
      type: object
      properties:
        keyEstablishment:
          $ref: '#/components/schemas/NISTIR8547KeyEstablishment'
      required:
      - keyEstablishment
    WithOptionalLatestGridProductScanState:
      type: object
      properties:
        latestScanState:
          $ref: '#/components/schemas/GridProductScanState'
    Component:
      allOf:
      - $ref: '#/components/schemas/WithPlatformId'
      - $ref: '#/components/schemas/WithName'
      - $ref: '#/components/schemas/WithPath'
      - $ref: '#/components/schemas/WithOptionalContainerPath'
      - $ref: '#/components/schemas/WithOptionalAttributes'
      - $ref: '#/components/schemas/WithOptionalKind'
      - $ref: '#/components/schemas/WithOptionalMd5'
      - $ref: '#/components/schemas/WithOptionalSha1'
      - $ref: '#/components/schemas/WithOptionalSha256'
    NISTIR8547HashAndXOF:
      type: object
      properties:
        collisionSecurityStrength:
          type: string
        collisionSecurityCategory:
          type: integer
        preimageSecurityStrength:
          type: string
        preimageSecurityCategory:
          type: integer
      required:
      - collisionSecurityStrength
      - collisionSecurityCategory
      - preimageSecurityStrength
      - preimageSecurityCategory
    WithGridGroups:
      type: object
      required:
      - rows
      properties:
        rows:
          type: array
          items:
            $ref: '#/components/schemas/GridGroup'
    GridComponents:
      allOf:
      - $ref: '#/components/schemas/WithGridComponents'
      - $ref: '#/components/schemas/WithTotals'
    WithOptionalCreateTime:
      type: object
      properties:
        createTime:
          type: string
          readOnly: true
          example: '2024-01-01T01:00:00Z'
    WithCreateTime:
      type: object
      required:
      - createTime
      properties:
        createTime:
          type: string
          readOnly: true
          example: '2024-01-01T01:00:00Z'
    WithOptionalSha1:
      type: object
      properties:
        sha1:
          type: string
    WithOptionalFileId:
      type: object
      properties:
        fileId:
          allOf:
          - $ref: '#/components/schemas/ULID'
    WithOptionalCryptoAlgorithmName:
      type: object
      properties:
        cryptoAlgorithmName:
          type: string
    GridGroupMember:
      allOf:
      - $ref: '#/components/schemas/WithGroupId'
      - $ref: '#/components/schemas/WithId'
      - $ref: '#/components/schemas/WithCreateTime'
      - $ref: '#/components/schemas/WithEmail'
      - $ref: '#/components/schemas/WithOptionalUserStatus'
      - $ref: '#/components/schemas/WithOptionalResourceType'
      - $ref: '#/components/schemas/WithOptionalGroupRoleBindings'
      - $ref: '#/components/schemas/WithOptionalGroupRoleNames'
    WithOptionalComponentName:
      type: object
      properties:
        componentName:
          type: string
    WithOptionalAuthor:
      type: object
      properties:
        author:
          $ref: '#/components/schemas/User'
    ResourceType:
      type: string
      enum:
      - Org
      - Group
      - Product
      - User
      - Image
      - Finding
      - Occurrence
    NISTIR8547Transition:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/NISTIR8547ApprovalStatus'
        year:
          type: integer
    GridFinding:
      allOf:
      - $ref: '#/components/schemas/WithId'
      - $ref: '#/components/schemas/WithOptionalProductId'
      - $ref: '#/components/schemas/WithOptionalProductName'
      - $ref: '#/components/schemas/WithOptionalImages'
      - $ref: '#/components/schemas/WithOptionalCreateTime'
      - $ref: '#/components/schemas/WithOptionalName'
      - $ref: '#/components/schemas/WithOptionalToolName'
      - $ref: '#/components/schemas/WithOptionalFindingType'
      - $ref: '#/components/schemas/WithOptionalFindingSubtype'
      - $ref: '#/components/schemas/WithOptionalIdentifiers'
      - $ref: '#/components/schemas/WithOptionalClassifications'
      - $ref: '#/components/schemas/WithOptionalReferences'
      - $ref: '#/components/schemas/WithOptionalComponent'
      - $ref: '#/components/schemas/WithOptionalSeverity'
      - $ref: '#/components/schemas/WithOptionalDescription'
      - $ref: '#/components/schemas/WithOptionalIsEstimatedEpss'
      - $ref: '#/components/schemas/WithOptionalIsReachable'
      - $ref: '#/components/schemas/WithOptionalHasJiraTicket'
      - $ref: '#/components/schemas/WithOptionalFindingStatus'
      - $ref: '#/components/schemas/WithOptionalComponentName'
      - $ref: '#/components/schemas/WithOptionalComponentId'
      - $ref: '#/components/schemas/WithOptionalDisplayName'
      - $ref: '#/components/schemas/WithOptionalComponentNames'
      - $ref: '#/components/schemas/WithOptionalIsSsvcParanoidDecision'
      - $ref: '#/components/schemas/WithOptionalHasKnownFix'
      - $ref: '#/components/schemas/WithOptionalKnownFixedVersion'
      - $ref: '#/components/schemas/WithOptionalIsKev'
      - $ref: '#/components/schemas/WithOptionalIsKnownRansomwareUse'
      - $ref: '#/components/schemas/WithOptionalDependencyComponentsCount'
      - $ref: '#/components/schemas/WithOptionalImageId'
      - $ref: '#/components/schemas/WithOptionalScanId'
      - $ref: '#/components/schemas/WithOptionalDependencyId'
      - $ref: '#/components/schemas/WithOptionalReferencedArtefactId'
      - $ref: '#/components/schemas/WithOptionalCvssLatestBaseScore'
      - $ref: '#/components/schemas/WithOptionalEpssProbability'
      - $ref: '#/components/schemas/WithOptionalSecret'
      - $ref: '#/components/schemas/WithOptionalSsvcDecision'
      - $ref: '#/components/schemas/WithOptionalCryptoAlgorithmName'
      - $ref: '#/components/schemas/WithOptionalCryptoAlgorithmPrimitive'
      - $ref: '#/components/schemas/WithOptionalDependency'
      - $ref: '#/components/schemas/WithOptionalIsNistIR8547Compliant'
      - $ref: '#/components/schemas/WithOptionalCryptoProtocolName'
      - $ref: '#/components/schemas/WithOptionalCompareLeftImageId'
      - $ref: '#/components/schemas/WithOptionalCompareRightImageId'
      - $ref: '#/components/schemas/WithOptionalCompareSide'
      - $ref: '#/components/schemas/WithOptionalCompliance'
      - $ref: '#/components/schemas/WithOptionalExploitabilityPredicates'
      - $ref: '#/components/schemas/WithOptionalEmsScore'
      - $ref: '#/components/schemas/WithOptionalConfidence'
      - $ref: '#/components/schemas/WithOptionalExploitabilityCounts'
    WithOptionalDependencyId:
      type: object
      properties:
        dependencyId:
          allOf:
          - $ref: '#/components/schemas/ULID'
    WithGroupId:
      type: object
      required:
      - groupId
      properties:
        groupId:
          allOf:
          - $ref: '#/components/schemas/ULID'
    WithGridRules:
      type: object
      required:
      - rows
      properties:
        rows:
          type: array
          items:
            $ref: '#/components/schemas/GridRule'
    WithOptionalSsvcDecision:
      type: object
      properties:
        ssvcDecision:
          type: string
          enum:
          - track
          - trackStar
          - attend
          - act
    WithGridImages:
      type: object
      required:
      - rows
      properties:
        rows:
          type: array
          items:
            $ref: '#/components/schemas/GridImage'
    WithKevCount:
      type: object
      required:
      - kev
      properties:
        kev:
          type: integer
    WithOptionalContainerPath:
      type: object
      properties:
        containerPath:
          type: string
    ImageCounts:
      allOf:
      - $ref: '#/components/schemas/WithNewEscalationsCount'
      - $ref: '#/components/schemas/WithDependenciesCount'
      - $ref: '#/components/schemas/WithCryptographicAssetsCount'
      - $ref: '#/components/schemas/WithFindingTypeCounts'
      - $ref: '#/components/schemas/WithKevCount'
      - $ref: '#/components/schemas/WithExpiredCertificatesCount'
      - $ref: '#/components/schemas/WithUnsafeFunctionsCount'
    Image:
      allOf:
      - $ref: '#/components/schemas/WithId'
      - $ref: '#/components/schemas/WithName'
      - $ref: '#/components/schemas/WithVersion'
      - $ref: '#/components/schemas/WithOptionalParent'
      - $ref: '#/components/schemas/WithCreateTime'
      - $ref: '#/components/schemas/WithAuthor'
      - $ref: '#/components/schemas/WithOptionalFiles'
      - $ref: '#/components/schemas/WithOptionalScans'
      - $ref: '#/components/schemas/WithOptionalLatestScan'
      - $ref: '#/components/schemas/WithOptionalIsArchived'
      - $ref: '#/components/schemas/WithOptionalImageCounts'
    WithGridDependencies:
      type: object
      required:
      - rows
      properties:
        rows:
          type: array
          items:
            $ref: '#/components/schemas/GridDependency'
    Scan:
      allOf:
      - $ref: '#/components/schemas/WithId'
      - $ref: '#/components/schemas/WithCreateTime'
      - $ref: '#/components/schemas/WithOptionalParent'
      - $ref: '#/components/schemas/WithAuthor'
      - $ref: '#/components/schemas/WithOptionalLatestScanState'
    WithUserId:
      type: object
      required:
      - userId
      properties:
        userId:
          type: string
          readOnly: true
          x-go-type-skip-optional-pointer: true
    WithOptionalComponentsCount:
      type: object
      properties:
        componentsCount:
          type: integer
    NISTIR8547HashAndXOFSecurity:
      type: object
      properties:
        hashAndXOF:
          $ref: '#/components/schemas/NISTIR8547HashAndXOF'
      required:
      - hashAndXOF
    ForbiddenErrorResponse:
      type: object
      required:
      - message
      - permission
      - resourceName
      properties:
        message:
          type: string
        permission:
          type: string
        resourceName:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetail'
    WithOptionalLatestGridProductImage:
      type: object
      properties:
        latestImage:
          $ref: '#/components/schemas/GridImage'
    WithImageName:
      type: object
      required:
      - imageName
      properties:
        imageName:
          type: string
    ExploitabilityCounts:
      allOf:
      - $ref: '#/components/schemas/WithRansomware'
      - $ref: '#/components/schemas/WithKevCount'
      - $ref: '#/components/schemas/WithPublicPoc'
      - $ref: '#/components/schemas/WithPublicExploit'
      - $ref: '#/components/schemas/WithWeaponisedExploit'
    WithPlatformId:
      type: object
      required:
      - id
      properties:
        id:
          type: string
    WithRansomware:
      type: object
      required:
      - ransomware
      properties:
        ransomware:
          type: integer
    ScanState:
      allOf:
      - $ref: '#/components/schemas/WithId'
      - $ref: '#/components/schemas/WithScanStateType'
      - $ref: '#/components/schemas/WithOptionalParent'
      - $ref: '#/components/schemas/WithCreateTime'
      - $ref: '#/components/schemas/WithOptionalAuthor'
      - $ref: '#/components/schemas/WithOptionalSource'
    WithOptionalAttributes:
      type: object
      properties:
        attributes: {}
    WithOptionalExploitabilityCounts:
      type: object
      properties:
        exploitabilityCounts:
          $ref: '#/components/schemas/ExploitabilityCounts'
    WithCount:
      type: object
      required:
      - count
      properties:
        count:
          type: integer
    WithOptionalFindingType:
      type: object
      properties:
        type:
          type: string
          enum:
          - knownVulnerability
          - unknownVulnerability
          - maliciousCode
          - suspiciousCode
          - dependencyVulnerability
          - cryptographicAsset
          - mitigation
          - weakness
          - supplyChainFailure
          - secret
          - leakedSecret
          - uncategorized
    WithFilename:
      type: object
      required:
      - filename
      properties:
        filename:
          type: string
    ResourceName:
      type: string
      example: products/{productId}
    WithNewEscalationsCount:
      type: object
      required:
      - newEscalationsCount
      properties:
        newEscalationsCount:
          type: integer
    WithOptionalToolName:
      type: object
      properties:
        toolName:
          type: string
    WithOptionalIdentifiers:
      type: object
      properties:
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/FindingIdentifier'
    WithOptionalCompliance:
      type: object
      properties:
        compliance:
          type: array
          items:
            $ref: '#/components/schemas/FindingCompliance'
    WithOptionalDuration:
      description: Duration in milliseconds
      type: object
      properties:
        duration:
          type: integer
          format: int64
          minimum: 0
    WithOptionalReferencedArtefac

# --- truncated at 32 KB (62 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/binarly/refs/heads/main/openapi/binarly-grid-api-openapi.yml