Nuclei · Capability
PDCP API — assets
PDCP API — assets. 17 operations. Lead operation: Delete asset by filters. Self-contained Naftiko capability covering one Nuclei business surface.
What You Can Do
DELETE
Deletev1asset
— Delete asset by filters
/v1/v1/asset
GET
Getv1assetchangelogs
— Get Asset Changelogs for all assets
/v1/v1/asset/changelogs
PATCH
Patchv1assetlabels
— Update Asset Labels
/v1/v1/asset/labels
GET
Getv1assetid
— Get enumerated asset details
/v1/v1/asset/{asset-id}
DELETE
Deletev1assetassetid
— Delete enumerated asset
/v1/v1/asset/{asset-id}
PATCH
Patchv1assetassetid
— Update asset details
/v1/v1/asset/{asset-id}
GET
Getv1assetassetidchangelogs
— Get Asset Changelogs for a given asset_id
/v1/v1/asset/{asset-id}/changelogs
POST
Postv1assetidlabels
— Add labels to an asset
/v1/v1/asset/{asset-id}/labels
PATCH
Patchv1assetidlabels
— Modify labels of an asset
/v1/v1/asset/{asset-id}/labels
DELETE
Deletev1assetidlabels
— Delete labels of an asset
/v1/v1/asset/{asset-id}/labels
GET
Getv1assets
— Get Asset List
/v1/v1/assets
POST
Postv1assets
— Upload Asset
/v1/v1/assets
GET
Getv1assetsassetid
— Get Asset Metadata
/v1/v1/assets/{asset-id}
DELETE
Deletev1assetsassetid
— Delete Asset
/v1/v1/assets/{asset-id}
PATCH
Patchv1assetsassetid
— Update Asset Metadata
/v1/v1/assets/{asset-id}
GET
Getv1assetsidcontents
— Get Asset Content
/v1/v1/assets/{asset-id}/contents
PATCH
Patchv1assetsassetidcontents
— Update Asset Content
/v1/v1/assets/{asset-id}/contents
MCP Tools
delete-asset-filters
Delete asset by filters
idempotent
get-asset-changelogs-all-assets
Get Asset Changelogs for all assets
read-only
idempotent
update-asset-labels
Update Asset Labels
idempotent
get-enumerated-asset-details
Get enumerated asset details
read-only
idempotent
delete-enumerated-asset
Delete enumerated asset
idempotent
update-asset-details
Update asset details
idempotent
get-asset-changelogs-given-asset
Get Asset Changelogs for a given asset_id
read-only
idempotent
add-labels-asset
Add labels to an asset
modify-labels-asset
Modify labels of an asset
idempotent
delete-labels-asset
Delete labels of an asset
idempotent
get-asset-list
Get Asset List
read-only
idempotent
upload-asset
Upload Asset
get-asset-metadata
Get Asset Metadata
read-only
idempotent
delete-asset
Delete Asset
idempotent
update-asset-metadata
Update Asset Metadata
idempotent
get-asset-content
Get Asset Content
read-only
idempotent
update-asset-content
Update Asset Content
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: PDCP API — assets
description: 'PDCP API — assets. 17 operations. Lead operation: Delete asset by filters. Self-contained Naftiko capability
covering one Nuclei business surface.'
tags:
- Nuclei
- assets
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
NUCLEI_API_KEY: NUCLEI_API_KEY
capability:
consumes:
- type: http
namespace: nuclei-assets
baseUri: https://api.projectdiscovery.io
description: PDCP API — assets business capability. Self-contained, no shared references.
resources:
- name: v1-asset
path: /v1/asset
operations:
- name: deletev1asset
method: DELETE
description: Delete asset by filters
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-asset-changelogs
path: /v1/asset/changelogs
operations:
- name: getv1assetchangelogs
method: GET
description: Get Asset Changelogs for all assets
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: time
in: query
type: string
description: time filter to select
- name: event_type
in: query
type: string
description: comma separated event_type e.g. event_type=vul_status,vul_status_change
- name: sort_asc
in: query
type: string
description: comma separated ascending sorting e.g sort_asc=created_at,severity
- name: sort_desc
in: query
type: string
description: comma separated descending sorting e.g sort_desc=created_at,severity
- name: limit
in: query
type: integer
description: limit the number of changelogs returned
- name: offset
in: query
type: integer
description: offset the number of changelogs returned
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: v1-asset-labels
path: /v1/asset/labels
operations:
- name: patchv1assetlabels
method: PATCH
description: Update Asset Labels
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: update_type
in: query
type: string
description: Append or Replace update_type
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-asset-asset_id
path: /v1/asset/{asset_id}
operations:
- name: getv1assetid
method: GET
description: Get enumerated asset details
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: deletev1assetassetid
method: DELETE
description: Delete enumerated asset
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: patchv1assetassetid
method: PATCH
description: Update asset details
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-asset-asset_id-changelogs
path: /v1/asset/{asset_id}/changelogs
operations:
- name: getv1assetassetidchangelogs
method: GET
description: Get Asset Changelogs for a given asset_id
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: time
in: query
type: string
description: time filter to select
- name: event_type
in: query
type: string
description: comma separated event_type e.g. event_type=vul_status,vul_status_change
- name: sort_asc
in: query
type: string
description: comma separated ascending sorting e.g sort_asc=created_at,severity
- name: sort_desc
in: query
type: string
description: comma separated descending sorting e.g sort_desc=created_at,severity
- name: limit
in: query
type: integer
description: number of results to get
- name: offset
in: query
type: integer
description: number of results to skip
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: v1-asset-asset_id-labels
path: /v1/asset/{asset_id}/labels
operations:
- name: postv1assetidlabels
method: POST
description: Add labels to an asset
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: patchv1assetidlabels
method: PATCH
description: Modify labels of an asset
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: update_type
in: query
type: string
description: Append or Replace update_type
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: deletev1assetidlabels
method: DELETE
description: Delete labels of an asset
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: v1-assets
path: /v1/assets
operations:
- name: getv1assets
method: GET
description: Get Asset List
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: offset
in: query
type: integer
description: number of assets to skip
- name: limit
in: query
type: integer
description: number of assets to fetch
- name: search
in: query
type: string
description: search term for asset list
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: postv1assets
method: POST
description: Upload Asset
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: name
in: query
type: string
description: name of asset
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: Content-Type
in: header
type: string
description: set the content type header
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-assets-asset_Id
path: /v1/assets/{asset_Id}
operations:
- name: getv1assetsassetid
method: GET
description: Get Asset Metadata
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: deletev1assetsassetid
method: DELETE
description: Delete Asset
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: patchv1assetsassetid
method: PATCH
description: Update Asset Metadata
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-assets-asset_id-contents
path: /v1/assets/{asset_id}/contents
operations:
- name: getv1assetsidcontents
method: GET
description: Get Asset Content
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: patchv1assetsassetidcontents
method: PATCH
description: Update Asset Content
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: update_type
in: query
type: string
description: use append or replace
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: Content-Type
in: header
type: string
description: set the content type header
- name: body
in: body
type: object
description: Request body (JSON).
required: false
authentication:
type: apikey
key: X-API-Key
value: '{{env.NUCLEI_API_KEY}}'
placement: header
exposes:
- type: rest
namespace: nuclei-assets-rest
port: 8080
description: REST adapter for PDCP API — assets. One Spectral-compliant resource per consumed operation, prefixed with
/v1.
resources:
- path: /v1/v1/asset
name: v1-asset
description: REST surface for v1-asset.
operations:
- method: DELETE
name: deletev1asset
description: Delete asset by filters
call: nuclei-assets.deletev1asset
with:
X-Team-Id: rest.X-Team-Id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/asset/changelogs
name: v1-asset-changelogs
description: REST surface for v1-asset-changelogs.
operations:
- method: GET
name: getv1assetchangelogs
description: Get Asset Changelogs for all assets
call: nuclei-assets.getv1assetchangelogs
with:
time: rest.time
event_type: rest.event_type
sort_asc: rest.sort_asc
sort_desc: rest.sort_desc
limit: rest.limit
offset: rest.offset
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/asset/labels
name: v1-asset-labels
description: REST surface for v1-asset-labels.
operations:
- method: PATCH
name: patchv1assetlabels
description: Update Asset Labels
call: nuclei-assets.patchv1assetlabels
with:
update_type: rest.update_type
X-Team-Id: rest.X-Team-Id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/asset/{asset-id}
name: v1-asset-asset-id
description: REST surface for v1-asset-asset_id.
operations:
- method: GET
name: getv1assetid
description: Get enumerated asset details
call: nuclei-assets.getv1assetid
with:
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- method: DELETE
name: deletev1assetassetid
description: Delete enumerated asset
call: nuclei-assets.deletev1assetassetid
with:
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- method: PATCH
name: patchv1assetassetid
description: Update asset details
call: nuclei-assets.patchv1assetassetid
with:
X-Team-Id: rest.X-Team-Id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/asset/{asset-id}/changelogs
name: v1-asset-asset-id-changelogs
description: REST surface for v1-asset-asset_id-changelogs.
operations:
- method: GET
name: getv1assetassetidchangelogs
description: Get Asset Changelogs for a given asset_id
call: nuclei-assets.getv1assetassetidchangelogs
with:
time: rest.time
event_type: rest.event_type
sort_asc: rest.sort_asc
sort_desc: rest.sort_desc
limit: rest.limit
offset: rest.offset
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/asset/{asset-id}/labels
name: v1-asset-asset-id-labels
description: REST surface for v1-asset-asset_id-labels.
operations:
- method: POST
name: postv1assetidlabels
description: Add labels to an asset
call: nuclei-assets.postv1assetidlabels
with:
X-Team-Id: rest.X-Team-Id
body: rest.body
outputParameters:
- type: object
mapping: $.
- method: PATCH
name: patchv1assetidlabels
description: Modify labels of an asset
call: nuclei-assets.patchv1assetidlabels
with:
update_type: rest.update_type
body: rest.body
outputParameters:
- type: object
mapping: $.
- method: DELETE
name: deletev1assetidlabels
description: Delete labels of an asset
call: nuclei-assets.deletev1assetidlabels
with:
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/assets
name: v1-assets
description: REST surface for v1-assets.
operations:
- method: GET
name: getv1assets
description: Get Asset List
call: nuclei-assets.getv1assets
with:
offset: rest.offset
limit: rest.limit
search: rest.search
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- method: POST
name: postv1assets
description: Upload Asset
call: nuclei-assets.postv1assets
with:
name: rest.name
X-Team-Id: rest.X-Team-Id
Content-Type: rest.Content-Type
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/assets/{asset-id}
name: v1-assets-asset-id
description: REST surface for v1-assets-asset_Id.
operations:
- method: GET
name: getv1assetsassetid
description: Get Asset Metadata
call: nuclei-assets.getv1assetsassetid
with:
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- method: DELETE
name: deletev1assetsassetid
description: Delete Asset
call: nuclei-assets.deletev1assetsassetid
with:
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- method: PATCH
name: patchv1assetsassetid
description: Update Asset Metadata
call: nuclei-assets.patchv1assetsassetid
with:
X-Team-Id: rest.X-Team-Id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/assets/{asset-id}/contents
name: v1-assets-asset-id-contents
description: REST surface for v1-assets-asset_id-contents.
operations:
- method: GET
name: getv1assetsidcontents
description: Get Asset Content
call: nuclei-assets.getv1assetsidcontents
with:
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- method: PATCH
name: patchv1assetsassetidcontents
description: Update Asset Content
call: nuclei-assets.patchv1assetsassetidcontents
with:
update_type: rest.update_type
X-Team-Id: rest.X-Team-Id
Content-Type: rest.Content-Type
body: rest.body
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: nuclei-assets-mcp
port: 9090
transport: http
description: MCP adapter for PDCP API — assets. One tool per consumed operation, routed inline through this capability's
consumes block.
tools:
- name: delete-asset-filters
description: Delete asset by filters
hints:
readOnly: false
destructive: true
idempotent: true
call: nuclei-assets.deletev1asset
with:
X-Team-Id: tools.X-Team-Id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-asset-changelogs-all-assets
description: Get Asset Changelogs for all assets
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-assets.getv1assetchangelogs
with:
time: tools.time
event_type: tools.event_type
sort_asc: tools.sort_asc
sort_desc: tools.sort_desc
limit: tools.limit
offset: tools.offset
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: update-asset-labels
description: Update Asset Labels
hints:
readOnly: false
destructive: false
idempotent: true
call: nuclei-assets.patchv1assetlabels
with:
update_type: tools.update_type
X-Team-Id: tools.X-Team-Id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-enumerated-asset-details
description: Get enumerated asset details
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-assets.getv1assetid
with:
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: delete-enumerated-asset
description: Delete enumerated asset
hints:
readOnly: false
destructive: true
idempotent: true
call: nuclei-assets.deletev1assetassetid
with:
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: update-asset-details
description: Update asset details
hints:
readOnly: false
destructive: false
idempotent: true
call: nuclei-assets.patchv1assetassetid
with:
X-Team-Id: tools.X-Team-Id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-asset-changelogs-given-asset
description: Get Asset Changelogs for a given asset_id
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-assets.getv1assetassetidchangelogs
with:
time: tools.time
event_type: tools.event_type
sort_asc: tools.sort_asc
sort_desc: tools.sort_desc
limit: tools.limit
offset: tools.offset
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: add-labels-asset
description: Add labels to an asset
hints:
readOnly: false
destructive: false
idempotent: false
call: nuclei-assets.postv1assetidlabels
with:
X-Team-Id: tools.X-Team-Id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: modify-labels-asset
description: Modify labels of an asset
hints:
readOnly: false
destructive: false
idempotent: true
call: nuclei-assets.patchv1assetidlabels
with:
update_type: tools.update_type
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: delete-labels-asset
description: Delete labels of an asset
hints:
readOnly: false
destructive: true
idempotent: true
call: nuclei-assets.deletev1assetidlabels
with:
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: get-asset-list
description: Get Asset List
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-assets.getv1assets
with:
offset: tools.offset
limit: tools.limit
search: tools.search
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: upload-asset
description: Upload Asset
hints:
readOnly: false
destructive: false
idempotent: false
call: nuclei-assets.postv1assets
with:
name: tools.name
X-Team-Id: tools.X-Team-Id
Content-Type: tools.Content-Type
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-asset-metadata
description: Get Asset Metadata
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-assets.getv1assetsassetid
with:
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: delete-asset
description: Delete Asset
hints:
readOnly: false
destructive: true
idempotent: true
call: nuclei-assets.deletev1assetsassetid
with:
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: update-asset-metadata
description: Update Asset Metadata
hints:
readOnly: false
destructive: false
idempotent: true
call: nuclei-assets.patchv1assetsassetid
with:
X-Team-Id: tools.X-Team-Id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-asset-content
description: Get Asset Content
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-assets.getv1assetsidcontents
with:
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: update-asset-content
description: Update Asset Content
hints:
readOnly: false
destructive: false
idempotent: true
call: nuclei-assets.patchv1assetsassetidcontents
with:
update_type: tools.update_type
X-Team-Id: tools.X-Team-Id
Content-Type: tools.Content-Type
body: tools.body
outputParameters:
- type: object
mapping: $.