Skip to main content
POST
Create or update an asset

Authorizations

Authorization
string
header
required

Access token from POST /oauth/token.

Headers

Idempotency-Key
string
required

A unique key, up to 256 characters, that makes the request safe to retry. Use a new UUID for each distinct request. If you send the same key again, you get the first response back, for at least 24 hours after the first request completes. Only successful (2xx) responses are stored. If the first request is still running, you get 409 idempotency_in_progress: wait the number of seconds in Retry-After, then retry. See Idempotency.

Maximum string length: 256
Example:

"b0f8e5a2-3c1d-4e6f-8a9b-0c1d2e3f4a5b"

Body

application/json

Creates one CUSTOM or INFORMATION asset. It appears in Secfix like an asset added in the app. Send externalSource and externalAssetId to link it to a record in your system: a later create with the same pair in the same category updates this asset instead of adding another, and changes only the fields you send.

categoryKey
enum<string>
required

Category to create the asset in: CUSTOM or INFORMATION, in any letter case.

Available options:
CUSTOM,
INFORMATION
Example:

"CUSTOM"

name
string
required

Asset name, 1-255 characters. Leading and trailing spaces are removed.

Maximum string length: 255
Example:

"Office badge printer"

classification
enum<string>

Data classification, in any letter case. Defaults to INTERNAL.

Available options:
RESTRICTED,
CONFIDENTIAL,
INTERNAL,
PUBLIC,
UNKNOWN
Example:

"CONFIDENTIAL"

customIdentifier
string

Serial number or asset ID, shown in Secfix as ID/Serial No. Up to 255 characters. Free text and not unique: to identify the asset in your system, use externalSource and externalAssetId.

Maximum string length: 255
Example:

"SN-48213"

dataStored
object

What data the asset stores. On create, fields you leave out stay unset.

description
string

Asset description, up to 500 characters.

Maximum string length: 500
Example:

"Printer in the front office."

externalAssetId
string

The asset's id in your system. Up to 255 characters; leading and trailing spaces are removed. Must be unique per workspace, category and externalSource among assets that haven't been deleted. Matched exactly. Send it with externalSource. You can't change it later.

Maximum string length: 255
Example:

"CI-1042"

externalSource
string

A name you choose for the system the asset comes from, such as servicenow. Up to 255 characters; leading and trailing spaces are removed. Matched exactly, so send the same value every time. Send it with externalAssetId.

Maximum string length: 255
Example:

"servicenow-cmdb"

ownerEmail
string

Owner's email address, case-insensitive. Send ownerId or ownerEmail, not both.

Maximum string length: 320
Example:

"alex@example.com"

ownerId
string<uuid>

Owner's employee id. Send ownerId or ownerEmail, not both. An asset without an owner shows as incomplete.

Example:

"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"

Response

An asset with the same externalSource and externalAssetId already existed and was updated.

An inventory asset. Fields marked with a category are only set for assets in that category. For EMPLOYEE assets, id is the employee's id.

accountId
string

Cloud account id. CLOUD assets only.

Example:

"123456789012"

auditStatus
enum<string>
read-only

Audit status, as shown in the Secfix app: COMPLETE when every field the category needs for an audit is set, otherwise INCOMPLETE. Left out when Secfix hasn't computed it yet. Read-only.

Available options:
COMPLETE,
INCOMPLETE
Example:

"INCOMPLETE"

categoryKey
enum<string>

The asset's category key. For cloud assets it's the sub-type, such as CLOUD_QUEUE.

Available options:
CLOUD,
COMPUTER,
CUSTOM,
INFORMATION,
EMPLOYEE
Example:

"CLOUD"

classification
string

Data classification.

Example:

"CONFIDENTIAL"

createdAt
string<date-time>

When the asset was created (UTC).

Example:

"2026-01-15T09:30:00.000Z"

customIdentifier
string

Serial number or asset ID, shown in Secfix as ID/Serial No.: the provider's resource id for cloud assets, the serial number for computers, and free text for CUSTOM and INFORMATION assets. Not unique.

Example:

"i-0abc123def456"

dataStored
object

What data a CUSTOM or INFORMATION asset stores. Set it with dataStored on create or update.

description
string

Asset description.

Example:

"Primary production web server."

email
string

Employee's email address. Personal data. EMPLOYEE assets only.

Example:

"jane.doe@example.com"

externalAssetId
string

The asset's id in your system, as sent on create. Left out for other assets.

Example:

"CI-1042"

externalSource
string

The system the asset comes from, as sent on create. Only set on CUSTOM and INFORMATION assets created through the API.

Example:

"servicenow-cmdb"

id
string<uuid>

The asset's id (UUID).

Example:

"3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f"

lastCheckedAt
string<date-time>

When the asset was last checked for compliance (UTC). Left out for assets that aren't checked.

Example:

"2026-06-30T02:00:00.000Z"

name
string

Asset name.

Example:

"prod-web-01"

osVersion
string

Operating system and version. COMPUTER assets only.

Example:

"macOS 14.5"

ownerId
string<uuid>

Owner's employee id: the owner the Secfix app shows. The owner can be someone GET /v1/employees doesn't list, such as a service account or a person excluded from compliance, so looking them up there can return 404.

Example:

"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"

ownerSource
string

Where the owner assignment comes from.

Example:

"MANUAL"

ownerStatus
enum<string>
read-only

COMPLETE when the asset has an owner, otherwise INCOMPLETE. Set for every category. This isn't the audit status; see auditStatus. Read-only.

Available options:
COMPLETE,
INCOMPLETE
Example:

"COMPLETE"

region
string

Cloud region or location. CLOUD assets only.

Example:

"eu-central-1"

serialNumber
string

Hardware serial number. COMPUTER assets only.

Example:

"C02XY1234ABC"

tags
object[]

Tags on the asset.

type
string

Asset type within its category.

Example:

"SERVER"