Synack Seeds API

Collections of seeds associated with a listing.

OpenAPI Specification

synack-seeds-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Assessment Service Assessment Groups Seeds API
  version: 1.0.0
  description: 'APIs for managing Assessment and related operations on the Synack.

    '
  contact:
    name: Synack Engineering
    email: engineering@synack.com
servers:
- url: https://client.synack.com/api/assessment
  description: Commercial
- url: https://client.synack.us/api/assessment
  description: FedRAMP (Medium)
security:
- bearerAuth: []
tags:
- name: Seeds
  description: Collections of seeds associated with a listing.
paths:
  /v1/organizations/{organizationUid}/seed-groups:
    parameters:
    - $ref: '#/components/parameters/OrganizationUIDPath'
    get:
      operationId: getSeedGroups
      tags:
      - Seeds
      description: 'Retrieve and filter seed groups.

        '
      x-mint:
        metadata:
          title: Get Seed Groups
      parameters:
      - $ref: '#/components/parameters/PerPageQuery'
      - $ref: '#/components/parameters/PageQuery'
      - in: query
        name: sort
        schema:
          type: string
          enum:
          - name
          - totalSeeds
          - createdAt
          - updatedAt
          - createdBy
          - scanStatus
          - lastScanAt
          default: name
        description: Optional property to sort results by.
      - $ref: '#/components/parameters/SortDirQuery'
      - in: query
        name: search
        schema:
          type: string
        required: false
        description: 'Optional query parameter for a search string that will be used to match within seed group name.

          '
      - in: query
        name: tag
        schema:
          type: array
          items:
            type: string
        required: false
        description: 'Optional query parameter for a tag that will be used to filter seed groups.

          '
      responses:
        '200':
          $ref: '#/components/responses/PaginatedSeedGroupsResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - assetdiscovery_or
        - assetdiscovery_gr
        - assetdiscovery_lr
    post:
      operationId: postSeedGroup
      tags:
      - Seeds
      description: 'Creates a new seed group and seeds if valid.

        '
      x-mint:
        metadata:
          title: Create Seed Group
      requestBody:
        description: Supply Asset UID for the asset to upsert
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewSeedGroup'
      responses:
        '201':
          $ref: '#/components/responses/SingleSeedGroupWithSeedsResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - assetdiscovery_ow
        - asset_client_lw
  /v1/organizations/{organizationUid}/seed-groups/{seedGroupUid}:
    parameters:
    - $ref: '#/components/parameters/OrganizationUIDPath'
    - $ref: '#/components/parameters/SeedGroupUIDPath'
    get:
      operationId: getSeedGroup
      tags:
      - Seeds
      description: 'Retrieves a single seed group.

        '
      x-mint:
        metadata:
          title: Get Seed Group
      responses:
        '200':
          $ref: '#/components/responses/SingleSeedGroupResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - assetdiscovery_or
    patch:
      operationId: patchSeedGroup
      tags:
      - Seeds
      description: 'Updates a seed group.

        '
      x-mint:
        metadata:
          title: Update Seed Group
      requestBody:
        description: 'Changed properties for a single seed group.

          '
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SeedGroupUpdate'
      responses:
        '200':
          $ref: '#/components/responses/SingleSeedGroupResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - assetdiscovery_ow
    delete:
      operationId: deleteSeedGroup
      tags:
      - Seeds
      description: 'Deletes a seed group. All seeds in the seed group will be deleted, and any assets discovered from those seeds will be removed from the listing associated with the seed group that owns the deleted seed.

        '
      x-mint:
        metadata:
          title: Delete Seed Group
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - assetdiscovery_ow
  /v1/organizations/{organizationUid}/seed-groups/{seedGroupUid}/seeds:
    parameters:
    - $ref: '#/components/parameters/OrganizationUIDPath'
    - $ref: '#/components/parameters/SeedGroupUIDPath'
    get:
      operationId: getSeeds
      tags:
      - Seeds
      description: 'Retrieve and filter seeds for a seed group.

        '
      x-mint:
        metadata:
          title: Get Seeds in a Seed Group
      parameters:
      - $ref: '#/components/parameters/PerPageQuery'
      - $ref: '#/components/parameters/PageQuery'
      - in: query
        name: sort
        schema:
          type: string
          enum:
          - name
          - seedType
          - createdAt
          - updatedAt
          - createdBy
          default: name
        description: Optional property to sort results by.
      - $ref: '#/components/parameters/SortDirQuery'
      - in: query
        name: search
        schema:
          type: string
        required: false
        description: 'Optional query parameter for a search string that will be used to match within seed name.

          '
      - in: query
        name: seedType
        schema:
          type: array
          items:
            $ref: '#/components/schemas/SeedType'
        required: false
        description: 'Filter the response to include only seeds with a seed type.

          '
      - in: query
        name: tag
        schema:
          type: array
          items:
            type: string
        required: false
        description: 'Optional query parameter for a tag that will be used to filter seeds.

          '
      responses:
        '200':
          $ref: '#/components/responses/PaginatedSeedsResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - assetdiscovery_or
        - assetdiscovery_gr
        - assetdiscovery_lr
    post:
      operationId: postSeed
      tags:
      - Seeds
      description: 'Creates a new seed if valid.

        '
      x-mint:
        metadata:
          title: Create Seed
      requestBody:
        description: 'Properties of new seed.

          '
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewSeed'
      responses:
        '201':
          $ref: '#/components/responses/SingleSeedResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - assetdiscovery_ow
        - asset_client_lw
  /v1/organizations/{organizationUid}/seed-groups/{seedGroupUid}/seeds/{seedUid}:
    parameters:
    - $ref: '#/components/parameters/OrganizationUIDPath'
    - $ref: '#/components/parameters/SeedGroupUIDPath'
    - $ref: '#/components/parameters/SeedUIDPath'
    get:
      operationId: getSeed
      tags:
      - Seeds
      description: 'Retrieves a single seed.

        '
      x-mint:
        metadata:
          title: Get Seed
      responses:
        '200':
          $ref: '#/components/responses/SingleSeedResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - assetdiscovery_or
        - assetdiscovery_gr
        - assetdiscovery_lr
    delete:
      operationId: deleteSeed
      tags:
      - Seeds
      description: 'Delete seeds. Any assets discovered from those seeds will be removed from the listing associated with the seed group that owns the deleted seed.

        '
      x-mint:
        metadata:
          title: Delete Seed
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - assetdiscovery_ow
  /v1/organizations/{organizationUid}/seed-groups/{seedGroupUid}/tags/batchUpdate:
    parameters:
    - $ref: '#/components/parameters/OrganizationUIDPath'
    - $ref: '#/components/parameters/SeedGroupUIDPath'
    post:
      operationId: updateSeedGroupTags
      tags:
      - Seeds
      description: 'Updates a seed groups tags.

        '
      x-mint:
        metadata:
          title: Update Seed Group Tags
      requestBody:
        description: 'Tags update.

          '
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchTagsUpdate'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '413':
          $ref: '#/components/responses/413RequestEntityTooLarge'
        '422':
          $ref: '#/components/responses/422EntityNotProcessable'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - assetdiscovery_ow
components:
  headers:
    PaginationCurrentPage:
      description: Current page in a paginated response.
      schema:
        type: integer
        format: int32
        minimum: 1
    PaginationTotalPages:
      description: Total number of pages in a paginated response.
      schema:
        type: integer
        format: int32
        minimum: 1
    PaginationLimit:
      description: Maximum number of items returned in a paginated response.
      schema:
        type: integer
        format: int32
        minimum: 1
    PaginationTotalCount:
      description: Total number of items in all pages of a paginated response.
      schema:
        format: int32
        minimum: 1
    ETag:
      description: An identifier for a specific version of a resource
      schema:
        type: string
        pattern: ^(?:W\/)?\".*\"$
    Link:
      description: Standard link header.
      schema:
        type: string
  schemas:
    Tag:
      type: string
      pattern: ^[-_0-9a-zA-Z]{1,16}
    FailedValidation:
      type: object
      required:
      - message
      properties:
        property:
          type: string
          readOnly: true
        value:
          type: string
          readOnly: true
        message:
          type: string
          readOnly: true
    NewSeedGroup:
      type: object
      required:
      - name
      properties:
        name:
          type: string
        autoConfirmationEnabled:
          type: boolean
        seeds:
          type: array
          items:
            $ref: '#/components/schemas/NewSeed'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
    Creatable:
      type: object
      required:
      - createdAt
      - createdBy
      properties:
        createdAt:
          type: string
          format: date-time
          readOnly: true
          description: Automatically set by the server to the time the request was processed whenever the resource was created.
        createdBy:
          $ref: '#/components/schemas/OperationUserUID'
    OperationUserUID:
      type: string
      pattern: ^[0-9a-f]{12}
      readOnly: true
      description: Automatically set by the server to the requesting user whenever the resource is updated. May be a user account or a service account if the action is performed by an automated.
    UID:
      type: string
      pattern: ^[0-9a-f]{12}
      readOnly: true
      description: Unique Identifier.
    Seed:
      allOf:
      - type: object
        required:
        - seedType
        - name
        properties:
          uid:
            $ref: '#/components/schemas/UID'
          seedGroupUid:
            $ref: '#/components/schemas/SeedGroupUID'
          organizationUid:
            $ref: '#/components/schemas/OrganizationUID'
          name:
            type: string
            readOnly: true
            description: User-supplied name for this seed.
          seedType:
            $ref: '#/components/schemas/SeedType'
          tags:
            type: array
            items:
              $ref: '#/components/schemas/Tag'
      - $ref: '#/components/schemas/Updatable'
    SeedGroupUID:
      type: string
      pattern: ^[0-9a-f]{12}
      description: Unique identifier for a seed group.
    SeedGroupUpdate:
      type: object
      properties:
        name:
          type: string
        asmEnabled:
          type: boolean
        autoConfirmationEnabled:
          type: boolean
          description: Indicates whether discovered assets from this seed group will be created as unconfirmed or confirmed.
    SeedUID:
      type: string
      pattern: ^[0-9a-f]{24}
      description: Unique identifier for a seed.
    ProblemDetails:
      type: object
      description: 'See [RFC 7807: Problem Details for HTTP APIs](https://tools.ietf.org/html/rfc7807)'
      properties:
        type:
          type: string
          readOnly: true
        title:
          type: string
          readOnly: true
        status:
          type: integer
          format: int32
          minimum: 100
          maximum: 511
          description: HTTP Status code.
          readOnly: true
        detail:
          type: string
          description: Message detailing the problem.
          readOnly: true
        instance:
          type: string
          description: generated problem instance number to correlate with logs
          readOnly: true
        failedValidation:
          type: array
          description: Array of failed validation rules.
          readOnly: true
          items:
            $ref: '#/components/schemas/FailedValidation'
        failedValidations:
          type: array
          description: Array of indexed failed validation rules.
          readOnly: true
          items:
            $ref: '#/components/schemas/IndexedFailedValidations'
        maxBatchSize:
          type: integer
          description: Maximum processable batch size.
          readOnly: true
        batchSize:
          type: integer
          description: Batch size sent when batch is too large.
          readOnly: true
    IndexedFailedValidations:
      type: object
      properties:
        index:
          type: integer
          description: Zero-based index indicating the which item in request containing an array of items has failed validation.
          readOnly: true
        failedValidation:
          type: array
          description: Array of failed validation rules.
          readOnly: true
          items:
            $ref: '#/components/schemas/FailedValidation'
    SeedType:
      type: string
      enum:
      - ip
      - domain
      - cidr
      - ip_range
    SeedGroup:
      allOf:
      - type: object
        required:
        - autoConfirmationEnabled
        - limitReached
        properties:
          uid:
            $ref: '#/components/schemas/UID'
          organizationUid:
            $ref: '#/components/schemas/OrganizationUID'
          name:
            type: string
            readOnly: true
            description: User-supplied name for this seed group.
          listingUid:
            $ref: '#/components/schemas/ListingUID'
          scanStatus:
            type: string
            readOnly: true
            enum:
            - created
            - in_progress
            - completed
            - failed
          lastScanAt:
            type: string
            format: date-time
            readOnly: true
          asmEnabled:
            type: boolean
            readOnly: true
            description: Indicates whether ASM is enabled for this seed group.
          autoConfirmationEnabled:
            type: boolean
            description: Indicates whether discovered assets from this seed group will be created as unconfirmed or confirmed.
          totalSeeds:
            type: integer
            readOnly: true
            description: Derived count of seeds in this seed group.
          limitReached:
            type: boolean
            description: Indicates that the seed group scan has reached a limit on the number of assets that can be discovered from it.
          tags:
            type: array
            items:
              $ref: '#/components/schemas/Tag'
      - $ref: '#/components/schemas/Updatable'
    OrganizationUID:
      type: string
      pattern: ^[-_0-9a-z]{1,50}
      description: Unique identifier for an organization.
    ArrayOfSeedGroups:
      type: array
      items:
        $ref: '#/components/schemas/SeedGroup'
    NewSeed:
      type: object
      required:
      - name
      - seedType
      properties:
        name:
          type: string
        seedType:
          $ref: '#/components/schemas/SeedType'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
    Updatable:
      allOf:
      - type: object
        properties:
          updatedAt:
            type: string
            format: date-time
            readOnly: true
            description: Automatically set by the server to the time the request was processed whenever the resource is updated.
          updatedBy:
            $ref: '#/components/schemas/OperationUserUID'
      - $ref: '#/components/schemas/Creatable'
    ArrayOfSeeds:
      type: array
      items:
        $ref: '#/components/schemas/Seed'
    BatchTagsUpdate:
      type: object
      description: Tags to remove and add to seeds and seed group
      properties:
        seedGroupTagsToDelete:
          type: array
          description: Array of tags to delete from the seed group.
          items:
            $ref: '#/components/schemas/Tag'
        seedGroupTagsToAdd:
          type: array
          description: Array of tags to add to the seed group.
          items:
            $ref: '#/components/schemas/Tag'
        seedUids:
          type: array
          description: Array of seed uids to apply tag update to.
          items:
            $ref: '#/components/schemas/SeedUID'
        seedTagsToDelete:
          type: array
          description: Array of tags to delete from the supplied seeds.
          items:
            $ref: '#/components/schemas/Tag'
        seedTagsToAdd:
          type: array
          description: Array of tags to add to the supplied seeds.
          items:
            $ref: '#/components/schemas/Tag'
    ListingUID:
      type: string
      pattern: ^[-_0-9a-z]{1,50}
      description: Unique identifier for an listing.
  parameters:
    PerPageQuery:
      name: perPage
      in: query
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 5000
      required: false
      description: 'Requested page size for pagination. A server-selected default of 100 will be used when no perPage is requested via query parameter.

        '
    SortDirQuery:
      name: sortDir
      in: query
      schema:
        type: string
        enum:
        - asc
        - desc
        default: asc
      required: false
      description: Direction of sort-order for items in the response.
    SeedGroupUIDPath:
      name: seedGroupUid
      in: path
      schema:
        $ref: '#/components/schemas/SeedGroupUID'
      required: true
      description: Unique identifier for a seed group.
    OrganizationUIDPath:
      name: organizationUid
      in: path
      schema:
        $ref: '#/components/schemas/OrganizationUID'
      required: true
      description: Unique identifier for an organization group.
    SeedUIDPath:
      name: seedUid
      in: path
      schema:
        $ref: '#/components/schemas/UID'
      required: true
      description: Unique identifier for a seed.
    PageQuery:
      name: page
      in: query
      schema:
        type: integer
        format: int32
        minimum: 1
      required: false
      description: 'Page to retrieve in paginated response. A server-selected default of 1 will be used when no page is requested via query parameter.

        '
  responses:
    PaginatedSeedGroupsResponse:
      description: Paginated seed groups.
      headers:
        Pagination-Limit:
          $ref: '#/components/headers/PaginationLimit'
        Pagination-Current-Page:
          $ref: '#/components/headers/PaginationCurrentPage'
        Pagination-Total-Pages:
          $ref: '#/components/headers/PaginationTotalPages'
        Pagination-Total-Count:
          $ref: '#/components/headers/PaginationTotalCount'
        Link:
          $ref: '#/components/headers/Link'
      content:
        application/json:
          schema:
            type: object
            properties:
              seedGroups:
                $ref: '#/components/schemas/ArrayOfSeedGroups'
    PaginatedSeedsResponse:
      description: Paginated seeds.
      headers:
        Pagination-Limit:
          $ref: '#/components/headers/PaginationLimit'
        Pagination-Current-Page:
          $ref: '#/components/headers/PaginationCurrentPage'
        Pagination-Total-Pages:
          $ref: '#/components/headers/PaginationTotalPages'
        Pagination-Total-Count:
          $ref: '#/components/headers/PaginationTotalCount'
        Link:
          $ref: '#/components/headers/Link'
      content:
        application/json:
          schema:
            type: object
            properties:
              seeds:
                $ref: '#/components/schemas/ArrayOfSeeds'
    409Conflict:
      description: Conflict.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    503ServiceUnavailable:
      description: Service Unavailable.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    403Forbidden:
      description: Forbidden
    500InternalServerError:
      description: Internal Server Error.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    413RequestEntityTooLarge:
      description: 'Returned generally when the size of the request body is too large to process, or specifically when the request contains too many items, typically in a bulk API operation.

        '
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    404NotFound:
      description: Not found.
    SingleSeedGroupResponse:
      description: The current state of the requested asset.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SeedGroup'
    204NoContent:
      description: No content.
    400BadRequest:
      description: Bad Request
    SingleSeedResponse:
      description: The current state of a scope rule.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Seed'
    422EntityNotProcessable:
      description: Entity Not Processable
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    401Unauthorized:
      description: Unauthorized.
    SingleSeedGroupWithSeedsResponse:
      description: The current state of the requested asset.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
      content:
        application/json:
          schema:
            type: object
            properties:
              seedGroup:
                description: The created seed group
                $ref: '#/components/schemas/SeedGroup'
              failedSeedValidations:
                type: array
                description: Array of failed validation rules for the seeds.
                readOnly: true
                items:
                  $ref: '#/components/schemas/FailedValidation'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT