> ## Documentation Index
> Fetch the complete documentation index at: https://docs.domino.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Search PPM Snapshots with Workspace Repository Targeting

> Search for ascending snapshot candidates that satisfy the provided package constraints. When workspace repositories are provided, the search is targeted to matching server repositories.



## OpenAPI

````yaml /api-specs/cloud/public-api.yaml post /api/v4/ppm/search
openapi: 3.0.3
info:
  title: Domino Public API
  description: Domino Public API Endpoints
  version: cloud
servers: []
security:
  - DominoApiKey: []
  - BearerAuthentication: []
tags:
  - name: AIGateway
  - name: AppInstances
  - name: AppVersions
  - name: Apps
  - name: AsyncPredictions
  - name: AuditTrail
  - name: BillingTag
  - name: BillingTagSettings
  - name: Cost
  - name: CustomMetrics
  - name: DataSource
  - name: DatasetRw
  - name: DeploymentTargets
  - name: Environments
  - name: Extensions
  - name: GenAI
  - name: HardwareTier
  - name: Jobs
  - name: ModelAPI
  - name: ModelAPIVersion
  - name: ModelDeployment
  - name: Organizations
  - name: PPM
  - name: PersonalAccessToken
  - name: ProjectSharedDatasets
  - name: ProjectTemplates
  - name: Projects
  - name: ProjectsCommits
  - name: ProjectsFiles
  - name: RegisteredModels
  - name: ServiceAccounts
  - name: Users
  - name: Workspaces
paths:
  /api/v4/ppm/search:
    post:
      tags:
        - PPM
      summary: Search PPM Snapshots with Workspace Repository Targeting
      description: >-
        Search for ascending snapshot candidates that satisfy the provided
        package constraints. When workspace repositories are provided, the
        search is targeted to matching server repositories.
      operationId: search
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
          description: Success
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
components:
  schemas:
    SearchRequest:
      properties:
        biocVersion:
          description: >-
            Bioconductor version for Bioconductor repositories (e.g., "3.19",
            "3.20"). If omitted, auto-discovers latest version
          type: string
        constraints:
          description: >-
            Comma-separated package constraints (e.g.,
            "ggplot2==3.5.0,dplyr>=1.0.0,sf")
          type: string
        forwardLookingSnapshotSearch:
          default: false
          description: >-
            If true, uses currentSnapshot from workspaceRepos as starting point
            for forward search. Requires workspaceRepos to be provided
          type: boolean
        minRVersion:
          description: >-
            Minimum R version for filtering packages (e.g., "4.0", "3.5.0"). If
            provided, only packages that require this R version or greater will
            be returned
          type: string
        repo:
          description: >-
            Specific repository name filter (e.g., "cran", "bioconductor",
            "pypi"). If omitted, query all enabled repos
          type: string
        repoAllowlist:
          description: >-
            Optional list of allowed repository URLs. If provided and non-empty,
            only results from repos matching these URLs will be returned
          items:
            type: string
          type: array
        repoType:
          description: Repository type filter. If omitted, query all repository types
          enum:
            - R
            - Bioconductor
            - Python
          type: string
        workspaceRepos:
          description: >-
            Array of workspace repositories from renv.lock. If provided, search
            is limited to matching server repositories
          items:
            $ref: '#/components/schemas/WorkspaceRepo'
          type: array
      required:
        - constraints
      type: object
    SearchResponse:
      properties:
        repos:
          items:
            $ref: '#/components/schemas/RepoStatus'
          type: array
        snapshots:
          items:
            $ref: '#/components/schemas/SnapshotInfo'
          type: array
      required:
        - snapshots
        - repos
      type: object
    WorkspaceRepo:
      properties:
        baseUrl:
          description: PPM server base URL
          type: string
        currentSnapshot:
          description: Snapshot date or "latest"
          type: string
        fullUrl:
          description: Complete repository URL with snapshot
          type: string
        repoName:
          description: Repository name (e.g., "cran", "bioconductor")
          type: string
      required:
        - baseUrl
        - repoName
        - currentSnapshot
        - fullUrl
      type: object
    RepoStatus:
      properties:
        fullRepoUrl:
          description: >-
            Complete repository base URL without snapshot (e.g.,
            "http://ppm-server:4499/cran")
          type: string
        message:
          description: Success message or error details
          type: string
        repoName:
          description: Repository name (e.g., "cran", "bioconductor", "pypi")
          type: string
        status:
          description: Status of the repository query
          enum:
            - Success
            - Failed
          type: string
      required:
        - repoName
        - status
        - message
        - fullRepoUrl
      type: object
    SnapshotInfo:
      properties:
        packages:
          description: >-
            List of packages with their resolved versions (e.g.,
            ["ggplot2==3.5.0", "dplyr==1.2.0"])
          items:
            type: string
          type: array
        repo:
          description: Repository name (e.g., "validated-cran-repo")
          type: string
        repoType:
          description: >-
            Repository type (R for CRAN, Bioconductor for Bioconductor, Python
            for PyPI)
          enum:
            - R
            - Bioconductor
            - Python
          type: string
        snapshot:
          description: Snapshot date (e.g., "20171010")
          type: string
      required:
        - snapshot
        - repoType
        - repo
        - packages
      type: object
  responses:
    '400':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Bad Request
    '404':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Not Found
    '500':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Internal Server Error
  securitySchemes:
    DominoApiKey:
      in: header
      name: X-Domino-Api-Key
      type: apiKey
    BearerAuthentication:
      in: header
      name: Authorization
      type: apiKey

````