Synack cloudaccounts API

Cloud account assets.

OpenAPI Specification

synack-cloudaccounts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Assessment Service Assessment Groups cloudaccounts 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: cloudaccounts
  description: Cloud account assets.
paths:
  /v2/bulk/assets:
    post:
      operationId: postAssetBulk
      tags:
      - cloudaccounts
      description: 'Creates Assets in my Synack org. Note: In the Body, choose the Object pull down that corresponds to the asset type you want to add; Object 1 for Cloud, Object 2 for Hosts, Object 3 for Mobile, Object 4 for Networks, Object 5 for Web. For example; to add more than 1 Host IP address, choose Option 2, then specify multiple IP ranges with /32 CIDRs (adding a new Item for each).

        '
      x-mint:
        metadata:
          title: Bulk Create Assets
      requestBody:
        description: Supply Asset UID for the asset to upsert
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleOrMultiAsset'
      responses:
        '201':
          $ref: '#/components/responses/SingleOrMultiAssetResponse'
        '202':
          $ref: '#/components/responses/202StatusAccepted'
        '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:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/bulk/assets/lifecycle-state:update:
    post:
      operationId: bulkUpdateAssetLifecycleState
      tags:
      - cloudaccounts
      description: 'Bulk updates the asset life cycle property. Checks the validity of assets and returns 409 Conflict if rules are violated.

        '
      x-mint:
        metadata:
          title: Bulk Update Asset Lifecycle State
      requestBody:
        description: Supply Organization UID, Asset UIDs for the assets to update, and the lifecycle state to update to.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetBulkLifecycleStateUpdate'
      responses:
        '200':
          $ref: '#/components/responses/AssetBulkLifecycleStateUpdateResponse'
        '202':
          $ref: '#/components/responses/202StatusAccepted'
        '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:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/bulk/assets/criticality:update:
    post:
      operationId: bulkUpdateAssetCriticality
      tags:
      - cloudaccounts
      description: 'Bulk update the criticality of multiple assets.

        '
      x-mint:
        metadata:
          title: Bulk Update Asset Criticality
      requestBody:
        description: The Organization UID, Asset UIDs to be updated, and the criticality value to be set on the assets.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetBulkCriticalityUpdate'
      responses:
        '200':
          $ref: '#/components/responses/AssetBulkCriticalityUpdateResponse'
        '202':
          $ref: '#/components/responses/202StatusAccepted'
        '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:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/assets:
    get:
      operationId: getAssets
      tags:
      - cloudaccounts
      description: 'Retrieve the list of assets for one or more organizations, considering filtering and pagination query parameters. When an organization-level OAuth2 scope is provided, the results will be restricted to those organizations the user is authorized for. Similarly, if a listing- level OAuth2 scope is provided, the results will be restricted to those listings the user is authorized for.

        Additional query parameters generally restrict the resulting set of assets according to AND semantics.

        Use of organizationUid and listingUid query parameters will further restrict the results.

        If neither are specified, the returned assets are the set of assets the user is allowed to access with organization OR listing specific privileges.

        If listing UIDs are supplied without organization UIDs, then only the assets assigned to those listings (which the user is authorized for) will be returned. Conversely, if organization UIDs are supplied without listing UIDs, then only the assets owned by those organizations (which the the user is authorized for) will be returned.

        Should both organization UIDs and listing UIDs be supplied, then the set of assets returned is restricted to assets assigned to any of the supplied listings, AND owned by any of the supplied organizations, further restricted to only those the user is authorized to access.

        Researcher users are restricted to only viewing credentials of in scope assets for listings to which they have been assigned.

        '
      x-mint:
        metadata:
          title: Get Assets
      parameters:
      - $ref: '#/components/parameters/OrganizationUIDQuery'
      - $ref: '#/components/parameters/ListingUIDQuery'
      - $ref: '#/components/parameters/AssetTypeQuery'
      - $ref: '#/components/parameters/HostTypeQuery'
      - in: query
        name: search
        schema:
          type: string
        required: false
        description: 'Optional query parameter for a search string that will be used to match within the label or location properties of assets. If this query parameter is provided, any location query parameter will be ignored.

          '
      - in: query
        name: active
        schema:
          type: boolean
        required: false
        description: 'Optional parameter that determines whether the response includes assets regardless of active state (the default, if this query parameter is not provided); active assets only if true; or inactive assets only if false.

          '
      - in: query
        name: inProduction
        schema:
          type: boolean
        required: false
        description: 'Optional query parameter that determines whether production or non-production assets will be included in the response.

          '
      - in: query
        name: maxHostDiscoveryAgeMins
        schema:
          type: integer
          default: 0
        required: false
        description: 'Optional query parameter to get host assets which are discovered by cloudEnumeration scanner shifted by maxHostDiscoveryAgeMins. Assets which are added via boss or discovered by other type of scanners will be included in response. E.g. CloudEnumeration hosts are valid for 1 hour from each time they are discovered, maxHostDiscoveryAgeMins=0 means that if the end time of the relationship has passed, the asset will not be returned - maxHostDiscoveryAgeMins=60 however, would return assets that were still valid 60 minutes ago

          '
      - in: query
        name: scope[]
        schema:
          type: array
          items:
            $ref: '#/components/schemas/Scope'
        required: false
        explode: true
        description: Restrict the returned assets to only assets associated to listings by the specified scopes.
      - in: query
        name: cloudPlatform[]
        schema:
          type: array
          items:
            $ref: '#/components/schemas/CloudPlatform'
        required: false
        explode: true
        description: Restrict the returned assets to only assets enumerated from a particular cloud platform.
      - in: query
        name: location
        schema:
          type: string
        required: false
        description: 'Prefix search of the derived location property.

          '
      - in: query
        name: errorCode[]
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ErrorCode'
        required: false
        explode: true
        description: Filter assets to only include assets with matching error codes.
      - in: query
        name: portNumber[]
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PortNumber'
        required: false
        explode: true
        description: Filter assets to only include hosts with open ports matching the port number.
      - in: query
        name: maxOpenPorts
        schema:
          type: integer
          format: int32
          minimum: 0
          maximum: 65535
        required: false
        description: Max open ports from a single IP address.
      - in: query
        name: hasNetwork
        schema:
          type: boolean
        required: false
        description: 'Filter assets to include/exclude those with networks.

          Deprecating.

          '
      - in: query
        name: networkUid[]
        schema:
          type: array
          items:
            $ref: '#/components/schemas/UID'
        required: false
        explode: true
        description: 'Unique identifier for a network.

          If not supplied the request will apply to all networks the user is authorized to access.

          Deprecating.

          '
      - in: query
        name: gatewayId[]
        schema:
          type: array
          items:
            $ref: '#/components/schemas/GatewayID'
        required: false
        explode: true
        description: 'Unique gateway id.

          If not supplied the request will apply to all gateways.

          '
      - in: query
        name: earliestCreatedAt
        schema:
          type: string
          format: date-time
        required: false
        description: Filter assets with a createdAt date greater or equal to this value
      - in: query
        name: latestCreatedAt
        schema:
          type: string
          format: date-time
        required: false
        description: Filter assets with a createdAt date less than or equal to this value
      - in: query
        name: userUid
        schema:
          $ref: '#/components/schemas/UserUID'
        required: false
        description: Restricts the credentials to only those available to the user. This query parameter is ignored if the user is a researcher.
      - in: query
        name: relationshipTargetAssetUid
        schema:
          $ref: '#/components/schemas/AssetUID'
        required: false
        description: 'Filter assets which have a relationship with targetAssetUid equal to this value.

          '
      - in: query
        name: relationshipType
        schema:
          $ref: '#/components/schemas/AssetRelationshipType'
        required: false
        description: 'Filter assets which have a relationship of this type.

          '
      - $ref: '#/components/parameters/PerPageQuery'
      - $ref: '#/components/parameters/PageQuery'
      - in: query
        name: sort
        schema:
          type: string
          enum:
          - location
          - label
          - createdAt
          - updatedAt
          - lastReachableAt
          - lastScan
        description: Optional property to sort results by.
        required: false
      - $ref: '#/components/parameters/SortDirQuery'
      - in: query
        name: origin
        schema:
          type: string
          enum:
          - provided
          - discovered
        description: Optional property to filter results by human created or system discovered assets.
        required: false
      - name: lifecycleState[]
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - confirmed
            - unconfirmed
            - archived
            - ignored
        description: Optional property to filter results by asset lifecycle state. When not supplied, all assets except `archived` will be returned.
      - in: query
        name: omitFields
        description: Fields to omit from response.
        schema:
          type: array
          items:
            type: string
            enum:
            - ALL
            - relationships
            - externalRelationships
            - ports
            - networks
            - scopeRules
            - binaries
            - userRoles
      - $ref: '#/components/parameters/IpRanges'
      responses:
        '200':
          $ref: '#/components/responses/PaginatedArrayOfAssets'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gr
        - asset_or
        - asset_lr
        - asset_srt_lr
        - asset_scan_gr
    post:
      operationId: postAsset
      tags:
      - cloudaccounts
      description: 'Creates an asset in my Synack org. In the Body, choose the Object pull down that corresponds to the asset type you want to add; Object 1 for Cloud, Object 2 for Host, Object 3 for Mobile, Object 4 for Network, Object 5 for Web

        '
      x-mint:
        metadata:
          title: Create Asset
      requestBody:
        description: Asset to create. If the asset is of cloud account type, only its metadata returned in the response as credential data is restricted to asset_scan_gr scope. If the asset is of webapp type, corresponding FQDN or IP host asset will also be created.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleOrMultiAsset'
      responses:
        '201':
          $ref: '#/components/responses/SingleOrMultiAssetResponse'
        '202':
          $ref: '#/components/responses/202StatusAccepted'
        '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:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/assets/{assetUid}:
    parameters:
    - $ref: '#/components/parameters/AssetUIDPath'
    get:
      operationId: getAsset
      tags:
      - cloudaccounts
      description: 'Retrieves a single asset. If the user is a researcher, only the credentials they are authorized to access will be returned. If the asset is of cloud account type, only a user with asset_scan_gr scope can access its credential data.

        '
      x-mint:
        metadata:
          title: Get Asset
      parameters:
      - in: query
        name: userUid
        schema:
          $ref: '#/components/schemas/UserUID'
        required: false
        description: Restricts the credentials to only those available to the user. This query parameter is ignored if the user is a researcher.
      responses:
        '200':
          $ref: '#/components/responses/SingleAssetResponse'
        '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:
        - asset_gr
        - asset_scan_gr
        - asset_or
        - asset_lr
        - asset_srt_lr
    patch:
      operationId: patchAsset
      tags:
      - cloudaccounts
      description: 'Patches the properties of a single asset.

        '
      x-mint:
        metadata:
          title: Patch Asset
      requestBody:
        description: Asset properties to patch.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleAsset'
      responses:
        '200':
          $ref: '#/components/responses/SingleAssetResponse'
        '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:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
    delete:
      x-excluded: true
      operationId: deleteAsset
      tags:
      - cloudaccounts
      description: 'Deletes an asset. This is intended to be a privileged operation. Regular use should be to mark the asset as inactive. Any relationships that involve the deleted asset will be also be deleted, as will any association to listings.

        '
      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:
        - asset_gw
        - asset_client_ow
        - asset_boss_ow
        - asset_client_lw
        - asset_boss_lw
  /v2/asset-stats:
    get:
      operationId: getAssetStats
      tags:
      - cloudaccounts
      description: 'Returns active assets under test (in scope for a listing) and total active assets for the supplied organization and listings.

        '
      x-mint:
        metadata:
          title: Get Asset Stats
      parameters:
      - $ref: '#/components/parameters/SingleOrganizationUIDQuery'
      - $ref: '#/components/parameters/ListingUIDQuery'
      responses:
        '200':
          $ref: '#/components/responses/SingleAssetStat'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gr
        - asset_or
        - asset_lr
  /v2/organizations/{organizationUid}/discovered-assets:
    get:
      operationId: getDiscoveredAssetSummaries
      tags:
      - cloudaccounts
      description: 'Retrieve the list summarized properties for discovered assets belonging to  an organization, considering filtering and pagination query parameters.

        Additional query parameters generally restrict the resulting set of assets according to AND semantics.

        '
      x-mint:
        metadata:
          title: Get Discovered Assets
      parameters:
      - $ref: '#/components/parameters/OrganizationUIDPath'
      - $ref: '#/components/parameters/ListingUIDQuery'
      - $ref: '#/components/parameters/AssetTypeQuery'
      - $ref: '#/components/parameters/HostTypeQuery'
      - in: query
        name: seedUid[]
        schema:
          $ref: '#/components/schemas/SeedUID'
        required: false
        description: Restrict the returned asset summaries to only those discovered from provided seed identifier.
      - in: query
        name: search
        schema:
          type: string
        required: false
        description: 'Optional query parameter for a search string that will be used to match within the label or location properties of assets. If this query parameter is provided, any location query parameter will be ignored.

          '
      - $ref: '#/components/parameters/PerPageQuery'
      - $ref: '#/components/parameters/PageQuery'
      - in: query
        name: sort
        schema:
          type: string
          enum:
          - location
          - label
          - createdAt
          - updatedAt
          - lastReachableAt
        description: Optional property to sort results by.
        required: false
      - $ref: '#/components/parameters/SortDirQuery'
      responses:
        '200':
          $ref: '#/components/responses/PaginatedDiscoveredAssetsResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
      security:
      - OAuth2:
        - asset_gr
        - asset_or
        - asset_lr
        - asset_srt_lr
        - asset_scan_gr
components:
  responses:
    SingleOrMultiAssetResponse:
      description: A single asset or an array of assets.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SingleOrMultiAsset'
    PaginatedArrayOfAssets:
      description: Paginated assets.
      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:
            $ref: '#/components/schemas/ArrayOfAssets'
    503ServiceUnavailable:
      description: Service Unavailable.
      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'
    422EntityNotProcessable:
      description: Entity Not Processable
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    401Unauthorized:
      description: Unauthorized.
    202StatusAccepted:
      description: Request accepted and being processed.
    AssetBulkCriticalityUpdateResponse:
      description: Count of assets updated.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CriticalityUpdateCount'
    403Forbidden:
      description: Forbidden
    PaginatedDiscoveredAssetsResponse:
      description: Paginated discovered asset summaries.
      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:
            $ref: '#/components/schemas/DiscoveredAssetsPage'
    400BadRequest:
      description: Bad Request
    SingleAssetResponse:
      description: The current state of the requested asset.
      headers:
        ETag:
          $ref: '#/components/headers/ETag'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SingleAsset'
    AssetBulkLifecycleStateUpdateResponse:
      description: Count of lifecycle states updated.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LifecycleUpdateCount'
    409Conflict:
      description: Conflict.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    404NotFound:
      description: Not found.
    500InternalServerError:
      description: Internal Server Error.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    204NoContent:
      description: No content.
    SingleAssetStat:
      description: Response containing a single asset stat.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AssetStat'
  parameters:
    OrganizationUIDQuery:
      name: organizationUid[]
      in: query
      explode: true
      schema:
        type: array
        items:
          $ref: '#/components/schemas/OrganizationUID'
      required: false
      description: Unique identifier for an organization. If not supplied the request will apply to all organizations the user is authorized to access.
    IpRanges:
      name: ipRanges[]
      in: query
      schema:
        $ref: '#/components/schemas/ArrayOfIpRanges'
      required: false
      explode: true
      description: Restrict the returned asset summaries to only assets of the specified ip ranges.
    ListingUIDQuery:
      name: listingUid[]
      in: query
      explode: true
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ListingUID'
      required: false
      description: Unique identifier for an listing. If not supplied the request will apply to all listings the user is authorized to access.
    OrganizationUIDPath:
      name: organizationUid
      in: path
      schema:
        $ref: '#/components/schemas/OrganizationUID'
      required: true
      description: Unique identifier for an organization.
    AssetTypeQuery:
      name: assetType[]
      in: query
      schema:
        type: array
        items:
          $ref: '#/components/schemas/AssetType'
      required: false
      explode: true
      description: Restrict the returned asset summaries to only assets of the specified type.
    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.

        '
    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.
    HostTypeQuery:
      name: hostType[]
      in: query
      schema:
        type: array
        items:
          $ref: '#/components/schemas/HostType'
      required: false
      explode: true
      description: 'Restrict the returned asset summaries to only the types of host assets requested when assetType also includes host.

        '
    SingleOrganizationUIDQuery:
      name: organizationUid
      in: query
      explode: true
      schema:
        $ref: '#/components/schemas/OrganizationUID'
      required: true
      description: Unique identifier for an organization. If not supplied the request will apply to all organizations the user is authorized to access.
    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.

        '
    AssetUIDPath:
      name: assetUid
      in: path
      schema:
        $ref: '#/components/schemas/AssetUID'
      required: true
      description: Unique identifier for an asset.
  schemas:
    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.
    DiscoveredAssetsPage:
      type: object
      properties:
        totalByStatus:
          $ref: '#/components/schemas/DiscoveredAssetsTotals'
        discoveredAssets:
          $ref: '#/components/schemas/ArrayOfAssetSummaries'
    GatewayID:
      type: string
      pattern: ^[0-9a-f]{16}
      description: Identifier for Launchpoint-managed VPN gateway.
    AssetRelationshipType:
      type: string
      description: Type or relationship between assets.
      enum:
      - discoveredBy
    AssetCriticality:
      type: string
      description: Indicates importance of the asset to the customer.
      default: undefined
      enum:
      - high
      - medium
      - low
      - undefined
    AssetBulkLifecycleStateUpdate:
      type: object
      required:
      - organizationUid
      - uid
      - lifecycleState
      properties:
        organizationUid:
          $ref: '#/components/schemas/OrganizationUID'
        assetUids:
          type: array
          items:
            $ref: '#/components/schemas/AssetUID'
        lifecycleState:
          $ref: '#/components/schemas/AssetLifecycleState'
    ArrayOfRelatedAssets:
      type: array
      items:
        $ref: '#/components/schemas/RelatedAsset'
    IpRange:
      type: string
      description: IP Range could be a CIDR or an IP Range
    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:
  

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