From 423a960bacdda85f9da098eac13b7b2fd0cbfd96 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Tue, 9 Jun 2026 10:56:24 +0000 Subject: [PATCH] Regenerate client from commit 9ba78ad of spec repo --- config/_default/menus/api.en.yaml | 82 ++ content/en/api/latest/csm-ownership/_index.md | 3 + .../index.md | 3 + .../index.md | 3 + .../index.md | 3 + .../index.md | 3 + .../index.md | 3 + .../index.md | 3 + content/en/api/v2/csm-ownership/_index.md | 4 + content/en/api/v2/csm-ownership/examples.json | 601 ++++++++++ data/api/v2/full_spec.yaml | 1064 +++++++++++++++++ data/api/v2/translate_actions.json | 26 + data/api/v2/translate_tags.json | 4 + 13 files changed, 1802 insertions(+) create mode 100644 content/en/api/latest/csm-ownership/_index.md create mode 100644 content/en/api/latest/csm-ownership/get-an-ownership-inference-by-owner-type/index.md create mode 100644 content/en/api/latest/csm-ownership/get-the-evidence-for-an-ownership-inference/index.md create mode 100644 content/en/api/latest/csm-ownership/list-ownership-history-by-owner-type/index.md create mode 100644 content/en/api/latest/csm-ownership/list-ownership-inference-history-for-a-resource/index.md create mode 100644 content/en/api/latest/csm-ownership/list-ownership-inferences-for-a-resource/index.md create mode 100644 content/en/api/latest/csm-ownership/submit-feedback-on-an-ownership-inference/index.md create mode 100644 content/en/api/v2/csm-ownership/_index.md create mode 100644 content/en/api/v2/csm-ownership/examples.json diff --git a/config/_default/menus/api.en.yaml b/config/_default/menus/api.en.yaml index 2e417a48d4f..974aa014070 100644 --- a/config/_default/menus/api.en.yaml +++ b/config/_default/menus/api.en.yaml @@ -8083,6 +8083,88 @@ menu: - GetCSMCloudAccountsCoverageAnalysis unstable: [] order: 1 + - name: CSM Ownership + url: /api/latest/csm-ownership/ + identifier: csm-ownership + generated: true + - name: List ownership history by owner type + url: /api/latest/csm-ownership/list-ownership-history-by-owner-type/ + identifier: csm-ownership-list-ownership-history-by-owner-type + parent: csm-ownership + generated: true + params: + versions: + - v2 + operationids: + - ListOwnershipHistoryByOwnerType + unstable: + - v2 + order: 4 + - name: Submit feedback on an ownership inference + url: /api/latest/csm-ownership/submit-feedback-on-an-ownership-inference/ + identifier: csm-ownership-submit-feedback-on-an-ownership-inference + parent: csm-ownership + generated: true + params: + versions: + - v2 + operationids: + - CreateOwnershipFeedback + unstable: + - v2 + order: 6 + - name: Get the evidence for an ownership inference + url: /api/latest/csm-ownership/get-the-evidence-for-an-ownership-inference/ + identifier: csm-ownership-get-the-evidence-for-an-ownership-inference + parent: csm-ownership + generated: true + params: + versions: + - v2 + operationids: + - GetOwnershipEvidence + unstable: + - v2 + order: 5 + - name: Get an ownership inference by owner type + url: /api/latest/csm-ownership/get-an-ownership-inference-by-owner-type/ + identifier: csm-ownership-get-an-ownership-inference-by-owner-type + parent: csm-ownership + generated: true + params: + versions: + - v2 + operationids: + - GetOwnershipInference + unstable: + - v2 + order: 2 + - name: List ownership inference history for a resource + url: /api/latest/csm-ownership/list-ownership-inference-history-for-a-resource/ + identifier: csm-ownership-list-ownership-inference-history-for-a-resource + parent: csm-ownership + generated: true + params: + versions: + - v2 + operationids: + - ListOwnershipHistory + unstable: + - v2 + order: 3 + - name: List ownership inferences for a resource + url: /api/latest/csm-ownership/list-ownership-inferences-for-a-resource/ + identifier: csm-ownership-list-ownership-inferences-for-a-resource + parent: csm-ownership + generated: true + params: + versions: + - v2 + operationids: + - ListOwnershipInferences + unstable: + - v2 + order: 1 - name: CSM Threats url: /api/latest/csm-threats/ identifier: csm-threats diff --git a/content/en/api/latest/csm-ownership/_index.md b/content/en/api/latest/csm-ownership/_index.md new file mode 100644 index 00000000000..b87b1bee143 --- /dev/null +++ b/content/en/api/latest/csm-ownership/_index.md @@ -0,0 +1,3 @@ +--- +title: CSM Ownership +--- diff --git a/content/en/api/latest/csm-ownership/get-an-ownership-inference-by-owner-type/index.md b/content/en/api/latest/csm-ownership/get-an-ownership-inference-by-owner-type/index.md new file mode 100644 index 00000000000..9590866490d --- /dev/null +++ b/content/en/api/latest/csm-ownership/get-an-ownership-inference-by-owner-type/index.md @@ -0,0 +1,3 @@ +--- +title: Get an ownership inference by owner type +--- diff --git a/content/en/api/latest/csm-ownership/get-the-evidence-for-an-ownership-inference/index.md b/content/en/api/latest/csm-ownership/get-the-evidence-for-an-ownership-inference/index.md new file mode 100644 index 00000000000..f470ab7c445 --- /dev/null +++ b/content/en/api/latest/csm-ownership/get-the-evidence-for-an-ownership-inference/index.md @@ -0,0 +1,3 @@ +--- +title: Get the evidence for an ownership inference +--- diff --git a/content/en/api/latest/csm-ownership/list-ownership-history-by-owner-type/index.md b/content/en/api/latest/csm-ownership/list-ownership-history-by-owner-type/index.md new file mode 100644 index 00000000000..f34b92aef6b --- /dev/null +++ b/content/en/api/latest/csm-ownership/list-ownership-history-by-owner-type/index.md @@ -0,0 +1,3 @@ +--- +title: List ownership history by owner type +--- diff --git a/content/en/api/latest/csm-ownership/list-ownership-inference-history-for-a-resource/index.md b/content/en/api/latest/csm-ownership/list-ownership-inference-history-for-a-resource/index.md new file mode 100644 index 00000000000..4621b3b6e66 --- /dev/null +++ b/content/en/api/latest/csm-ownership/list-ownership-inference-history-for-a-resource/index.md @@ -0,0 +1,3 @@ +--- +title: List ownership inference history for a resource +--- diff --git a/content/en/api/latest/csm-ownership/list-ownership-inferences-for-a-resource/index.md b/content/en/api/latest/csm-ownership/list-ownership-inferences-for-a-resource/index.md new file mode 100644 index 00000000000..27622f55f87 --- /dev/null +++ b/content/en/api/latest/csm-ownership/list-ownership-inferences-for-a-resource/index.md @@ -0,0 +1,3 @@ +--- +title: List ownership inferences for a resource +--- diff --git a/content/en/api/latest/csm-ownership/submit-feedback-on-an-ownership-inference/index.md b/content/en/api/latest/csm-ownership/submit-feedback-on-an-ownership-inference/index.md new file mode 100644 index 00000000000..ed79c51d414 --- /dev/null +++ b/content/en/api/latest/csm-ownership/submit-feedback-on-an-ownership-inference/index.md @@ -0,0 +1,3 @@ +--- +title: Submit feedback on an ownership inference +--- diff --git a/content/en/api/v2/csm-ownership/_index.md b/content/en/api/v2/csm-ownership/_index.md new file mode 100644 index 00000000000..bbf382bc15a --- /dev/null +++ b/content/en/api/v2/csm-ownership/_index.md @@ -0,0 +1,4 @@ +--- +title: CSM Ownership +headless: true +--- diff --git a/content/en/api/v2/csm-ownership/examples.json b/content/en/api/v2/csm-ownership/examples.json new file mode 100644 index 00000000000..00eb5a37c5d --- /dev/null +++ b/content/en/api/v2/csm-ownership/examples.json @@ -0,0 +1,601 @@ +{ + "ListOwnershipInferences": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "items": [ + { + "checksum": "abc123", + "confidence": "0.9500", + "created_at": "2026-01-15T10:00:00Z", + "evidence_versions": [ + [] + ], + "explanation": "High confidence match", + "id": "test-resource:team", + "owner_type": "team", + "primary_contact_ref": "ref:handle/team-a", + "sources": [ + [] + ], + "status": "suggested", + "updated_at": "2026-01-15T10:00:00Z" + } + ] + }, + "id": "test-resource", + "type": "ownership_inferences" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

The data wrapper for the ownership inferences collection response.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of the ownership inferences collection response.

\n
\n
\n
\n
\n
\n

items [required]

\n
\n

[object]

\n

The list of inferences for a resource, with one inference per owner type.

\n
\n
\n
\n
\n
\n

checksum [required]

\n
\n

string

\n

A checksum that uniquely identifies the current state of the inference. Required when submitting feedback.

\n
\n \n
\n
\n
\n
\n
\n

confidence [required]

\n
\n

string

\n

The confidence score of the inference, expressed as a numeric string with up to four decimal places.

\n
\n \n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time when the inference was created.

\n
\n \n
\n
\n
\n
\n
\n

evidence_versions [required]

\n
\n

[object]

\n

The list of evidence versions associated with an inference.

\n
\n \n
\n
\n
\n
\n
\n

explanation [required]

\n
\n

string

\n

A human-readable explanation of how the inference was produced.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The identifier of the inference, formatted as resource_id:owner_type.

\n
\n \n
\n
\n
\n
\n
\n

owner_type [required]

\n
\n

enum

\n

The owner type for an ownership inference. \nAllowed enum values: user,team,service,unknown

\n
\n \n
\n
\n
\n
\n
\n

primary_contact_ref

\n
\n

string

\n

The primary contact reference for the inferred owner, formatted as ref:handle/<owner_handle>.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[object]

\n

The list of sources backing an ownership inference. Empty when the inference status is not whitelisted to expose sources.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

The lifecycle status of an ownership inference. \nAllowed enum values: suggested,persisted,overridden,failed,unknown

\n
\n \n
\n
\n
\n
\n
\n

updated_at [required]

\n
\n

date-time

\n

The time when the inference was last updated.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The resource identifier associated with the returned inferences.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The type of the ownership inferences collection resource. The value should always be ownership_inferences. \nAllowed enum values: ownership_inferences

default: ownership_inferences

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "ListOwnershipHistory": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "items": [ + { + "checksum": "", + "confidence": "0.9000", + "created_at": "2026-01-15T10:00:00Z", + "evidence_versions": [ + [] + ], + "explanation": "", + "failed_at": "2026-01-15T10:00:00Z", + "failure_reason": "missing evidence", + "id": 100, + "owner_type": "team", + "primary_contact_ref": "ref:handle/team-a", + "resource_id": "res-1", + "retry_schedule": "2026-01-15T11:00:00Z", + "sources": [ + [] + ], + "status": "suggested" + } + ], + "pagination": { + "has_more": false, + "next_cursor": "eyJpZCI6OTh9" + } + }, + "id": "res-1", + "type": "ownership_history" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

The data wrapper for an ownership history response.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of an ownership history response.

\n
\n
\n
\n
\n
\n

items [required]

\n
\n

[object]

\n

The list of history entries returned for this page.

\n
\n
\n
\n
\n
\n

checksum [required]

\n
\n

string

\n

A checksum identifying the state of the inference at this point in time.

\n
\n \n
\n
\n
\n
\n
\n

confidence [required]

\n
\n

string

\n

The confidence score of the inference, expressed as a numeric string with up to four decimal places.

\n
\n \n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time this history entry was created.

\n
\n \n
\n
\n
\n
\n
\n

evidence_versions [required]

\n
\n

[object]

\n

The list of evidence versions associated with an inference.

\n
\n \n
\n
\n
\n
\n
\n

explanation [required]

\n
\n

string

\n

A human-readable explanation of how the inference was produced.

\n
\n \n
\n
\n
\n
\n
\n

failed_at

\n
\n

date-time

\n

The time when this inference failed, if applicable.

\n
\n \n
\n
\n
\n
\n
\n

failure_reason

\n
\n

string

\n

The reason why this inference failed, if applicable.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unique identifier of the history entry.

\n
\n \n
\n
\n
\n
\n
\n

owner_type [required]

\n
\n

enum

\n

The owner type for an ownership inference. \nAllowed enum values: user,team,service,unknown

\n
\n \n
\n
\n
\n
\n
\n

primary_contact_ref

\n
\n

string

\n

The primary contact reference for the inferred owner, formatted as ref:handle/<owner_handle>.

\n
\n \n
\n
\n
\n
\n
\n

resource_id [required]

\n
\n

string

\n

The identifier of the resource that the inference applies to.

\n
\n \n
\n
\n
\n
\n
\n

retry_schedule

\n
\n

date-time

\n

The scheduled retry time for a failed inference, if applicable.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[object]

\n

The list of sources backing an ownership inference. Empty when the inference status is not whitelisted to expose sources.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

The lifecycle status of an ownership inference. \nAllowed enum values: suggested,persisted,overridden,failed,unknown

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

pagination [required]

\n
\n

object

\n

Cursor-based pagination metadata for the history response.

\n
\n
\n
\n
\n
\n

has_more [required]

\n
\n

boolean

\n

Whether more history entries are available beyond this page.

\n
\n \n
\n
\n
\n
\n
\n

next_cursor

\n
\n

string

\n

An opaque, base64-encoded cursor token. Pass it as the cursor query parameter to retrieve the next page. Absent or null when there are no further pages.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The resource identifier for which history is returned.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The type of the ownership history resource. The value should always be ownership_history. \nAllowed enum values: ownership_history

default: ownership_history

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetOwnershipInference": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "checksum": "abc123", + "confidence": "0.9500", + "created_at": "2026-01-15T10:00:00Z", + "evidence_versions": [ + [] + ], + "explanation": "High confidence match", + "owner_type": "team", + "primary_contact_ref": "ref:handle/team-a", + "sources": [ + [] + ], + "status": "suggested", + "updated_at": "2026-01-15T10:00:00Z" + }, + "id": "test-resource:team", + "type": "ownership_inference" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

The data wrapper for a single ownership inference response.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of a single ownership inference.

\n
\n
\n
\n
\n
\n

checksum [required]

\n
\n

string

\n

A checksum that uniquely identifies the current state of the inference. Required when submitting feedback.

\n
\n \n
\n
\n
\n
\n
\n

confidence [required]

\n
\n

string

\n

The confidence score of the inference, expressed as a numeric string with up to four decimal places.

\n
\n \n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time when the inference was created.

\n
\n \n
\n
\n
\n
\n
\n

evidence_versions [required]

\n
\n

[object]

\n

The list of evidence versions associated with an inference.

\n
\n \n
\n
\n
\n
\n
\n

explanation [required]

\n
\n

string

\n

A human-readable explanation of how the inference was produced.

\n
\n \n
\n
\n
\n
\n
\n

owner_type [required]

\n
\n

enum

\n

The owner type for an ownership inference. \nAllowed enum values: user,team,service,unknown

\n
\n \n
\n
\n
\n
\n
\n

primary_contact_ref

\n
\n

string

\n

The primary contact reference for the inferred owner, formatted as ref:handle/<owner_handle>.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[object]

\n

The list of sources backing an ownership inference. Empty when the inference status is not whitelisted to expose sources.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

The lifecycle status of an ownership inference. \nAllowed enum values: suggested,persisted,overridden,failed,unknown

\n
\n \n
\n
\n
\n
\n
\n

updated_at [required]

\n
\n

date-time

\n

The time when the inference was last updated.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The identifier of the inference, formatted as resource_id:owner_type.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The type of the ownership inference resource. The value should always be ownership_inference. \nAllowed enum values: ownership_inference

default: ownership_inference

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetOwnershipEvidence": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "evidence_versions": [ + [] + ] + }, + "id": "test-resource", + "type": "ownership_evidence" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

The data wrapper for an ownership evidence response.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of an ownership evidence response.

\n
\n
\n
\n
\n
\n

evidence_versions [required]

\n
\n

[object]

\n

The list of evidence versions associated with an inference.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The identifier of the resource the evidence applies to.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The type of the ownership evidence resource. The value should always be ownership_evidence. \nAllowed enum values: ownership_evidence

default: ownership_evidence

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "CreateOwnershipFeedback": { + "responses": { + "201": { + "json": { + "data": { + "attributes": { + "action": "confirm", + "checksum": "abc123", + "new_status": "suggested", + "owner_type": "team", + "previous_status": "suggested", + "primary_contact_ref": "ref:handle/team-a", + "updated_at": "2026-01-15T10:00:00Z" + }, + "id": "res-1", + "type": "ownership_feedback_result" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

The data wrapper for an ownership feedback result response.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of an ownership feedback result.

\n
\n
\n
\n
\n
\n

action [required]

\n
\n

enum

\n

The feedback action to apply to an inference. \nAllowed enum values: confirm,reject,correct,persist

\n
\n \n
\n
\n
\n
\n
\n

checksum [required]

\n
\n

string

\n

The checksum of the inference after the feedback was applied.

\n
\n \n
\n
\n
\n
\n
\n

new_status [required]

\n
\n

enum

\n

The lifecycle status of an ownership inference. \nAllowed enum values: suggested,persisted,overridden,failed,unknown

\n
\n \n
\n
\n
\n
\n
\n

owner_type [required]

\n
\n

enum

\n

The owner type for an ownership inference. \nAllowed enum values: user,team,service,unknown

\n
\n \n
\n
\n
\n
\n
\n

previous_status [required]

\n
\n

enum

\n

The lifecycle status of an ownership inference. \nAllowed enum values: suggested,persisted,overridden,failed,unknown

\n
\n \n
\n
\n
\n
\n
\n

primary_contact_ref

\n
\n

string

\n

The primary contact reference for the inferred owner after the feedback was applied, formatted as ref:handle/<owner_handle>.

\n
\n \n
\n
\n
\n
\n
\n

updated_at [required]

\n
\n

date-time

\n

The time when the inference was updated by the feedback.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The identifier of the resource that the feedback was applied to.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The type of the ownership feedback result resource. The value should always be ownership_feedback_result. \nAllowed enum values: ownership_feedback_result

default: ownership_feedback_result

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "409": { + "json": { + "data": { + "attributes": { + "checksum": "abc123", + "confidence": "0.9500", + "created_at": "2026-01-15T10:00:00Z", + "evidence_versions": [ + [] + ], + "explanation": "High confidence match", + "owner_type": "team", + "primary_contact_ref": "ref:handle/team-a", + "sources": [ + [] + ], + "status": "suggested", + "updated_at": "2026-01-15T10:00:00Z" + }, + "id": "test-resource:team", + "type": "ownership_inference" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

The data wrapper for a single ownership inference response.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of a single ownership inference.

\n
\n
\n
\n
\n
\n

checksum [required]

\n
\n

string

\n

A checksum that uniquely identifies the current state of the inference. Required when submitting feedback.

\n
\n \n
\n
\n
\n
\n
\n

confidence [required]

\n
\n

string

\n

The confidence score of the inference, expressed as a numeric string with up to four decimal places.

\n
\n \n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time when the inference was created.

\n
\n \n
\n
\n
\n
\n
\n

evidence_versions [required]

\n
\n

[object]

\n

The list of evidence versions associated with an inference.

\n
\n \n
\n
\n
\n
\n
\n

explanation [required]

\n
\n

string

\n

A human-readable explanation of how the inference was produced.

\n
\n \n
\n
\n
\n
\n
\n

owner_type [required]

\n
\n

enum

\n

The owner type for an ownership inference. \nAllowed enum values: user,team,service,unknown

\n
\n \n
\n
\n
\n
\n
\n

primary_contact_ref

\n
\n

string

\n

The primary contact reference for the inferred owner, formatted as ref:handle/<owner_handle>.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[object]

\n

The list of sources backing an ownership inference. Empty when the inference status is not whitelisted to expose sources.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

The lifecycle status of an ownership inference. \nAllowed enum values: suggested,persisted,overridden,failed,unknown

\n
\n \n
\n
\n
\n
\n
\n

updated_at [required]

\n
\n

date-time

\n

The time when the inference was last updated.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The identifier of the inference, formatted as resource_id:owner_type.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The type of the ownership inference resource. The value should always be ownership_inference. \nAllowed enum values: ownership_inference

default: ownership_inference

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "action": "confirm", + "actor_handle": "user@example.com", + "actor_type": "user", + "inference_checksum": "abc123" + }, + "type": "ownership_feedback" + } + }, + "json": { + "data": { + "attributes": { + "action": "confirm", + "actor_handle": "user@example.com", + "actor_type": "user", + "corrected_owner_handle": "team-b", + "corrected_owner_type": "team", + "inference_checksum": "abc123", + "reason": "Confirmed by team lead." + }, + "type": "ownership_feedback" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

The data wrapper for an ownership feedback request.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of an ownership feedback request.

\n
\n
\n
\n
\n
\n

action [required]

\n
\n

enum

\n

The feedback action to apply to an inference. \nAllowed enum values: confirm,reject,correct,persist

\n
\n \n
\n
\n
\n
\n
\n

actor_handle [required]

\n
\n

string

\n

The handle of the actor submitting the feedback.

\n
\n \n
\n
\n
\n
\n
\n

actor_type [required]

\n
\n

string

\n

The type of actor submitting the feedback, for example user or service.

\n
\n \n
\n
\n
\n
\n
\n

corrected_owner_handle

\n
\n

string

\n

The corrected owner handle. Required when action is correct.

\n
\n \n
\n
\n
\n
\n
\n

corrected_owner_type

\n
\n

string

\n

The corrected owner type. Required when action is correct.

\n
\n \n
\n
\n
\n
\n
\n

inference_checksum [required]

\n
\n

string

\n

The checksum of the inference being acted upon. Must match the current inference checksum or the request returns a conflict.

\n
\n \n
\n
\n
\n
\n
\n

reason

\n
\n

string

\n

An optional free-form reason explaining the feedback.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The type of the ownership feedback request resource. The value should always be ownership_feedback. \nAllowed enum values: ownership_feedback

default: ownership_feedback

\n
\n \n
\n
\n
\n
" + } + }, + "ListOwnershipHistoryByOwnerType": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "items": [ + { + "checksum": "", + "confidence": "0.9000", + "created_at": "2026-01-15T10:00:00Z", + "evidence_versions": [ + [] + ], + "explanation": "", + "failed_at": "2026-01-15T10:00:00Z", + "failure_reason": "missing evidence", + "id": 100, + "owner_type": "team", + "primary_contact_ref": "ref:handle/team-a", + "resource_id": "res-1", + "retry_schedule": "2026-01-15T11:00:00Z", + "sources": [ + [] + ], + "status": "suggested" + } + ], + "pagination": { + "has_more": false, + "next_cursor": "eyJpZCI6OTh9" + } + }, + "id": "res-1", + "type": "ownership_history" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

The data wrapper for an ownership history response.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of an ownership history response.

\n
\n
\n
\n
\n
\n

items [required]

\n
\n

[object]

\n

The list of history entries returned for this page.

\n
\n
\n
\n
\n
\n

checksum [required]

\n
\n

string

\n

A checksum identifying the state of the inference at this point in time.

\n
\n \n
\n
\n
\n
\n
\n

confidence [required]

\n
\n

string

\n

The confidence score of the inference, expressed as a numeric string with up to four decimal places.

\n
\n \n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time this history entry was created.

\n
\n \n
\n
\n
\n
\n
\n

evidence_versions [required]

\n
\n

[object]

\n

The list of evidence versions associated with an inference.

\n
\n \n
\n
\n
\n
\n
\n

explanation [required]

\n
\n

string

\n

A human-readable explanation of how the inference was produced.

\n
\n \n
\n
\n
\n
\n
\n

failed_at

\n
\n

date-time

\n

The time when this inference failed, if applicable.

\n
\n \n
\n
\n
\n
\n
\n

failure_reason

\n
\n

string

\n

The reason why this inference failed, if applicable.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unique identifier of the history entry.

\n
\n \n
\n
\n
\n
\n
\n

owner_type [required]

\n
\n

enum

\n

The owner type for an ownership inference. \nAllowed enum values: user,team,service,unknown

\n
\n \n
\n
\n
\n
\n
\n

primary_contact_ref

\n
\n

string

\n

The primary contact reference for the inferred owner, formatted as ref:handle/<owner_handle>.

\n
\n \n
\n
\n
\n
\n
\n

resource_id [required]

\n
\n

string

\n

The identifier of the resource that the inference applies to.

\n
\n \n
\n
\n
\n
\n
\n

retry_schedule

\n
\n

date-time

\n

The scheduled retry time for a failed inference, if applicable.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[object]

\n

The list of sources backing an ownership inference. Empty when the inference status is not whitelisted to expose sources.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

The lifecycle status of an ownership inference. \nAllowed enum values: suggested,persisted,overridden,failed,unknown

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

pagination [required]

\n
\n

object

\n

Cursor-based pagination metadata for the history response.

\n
\n
\n
\n
\n
\n

has_more [required]

\n
\n

boolean

\n

Whether more history entries are available beyond this page.

\n
\n \n
\n
\n
\n
\n
\n

next_cursor

\n
\n

string

\n

An opaque, base64-encoded cursor token. Pass it as the cursor query parameter to retrieve the next page. Absent or null when there are no further pages.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The resource identifier for which history is returned.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The type of the ownership history resource. The value should always be ownership_history. \nAllowed enum values: ownership_history

default: ownership_history

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + } +} \ No newline at end of file diff --git a/data/api/v2/full_spec.yaml b/data/api/v2/full_spec.yaml index 9972a379429..373cd74a896 100644 --- a/data/api/v2/full_spec.yaml +++ b/data/api/v2/full_spec.yaml @@ -67744,6 +67744,569 @@ components: required: - data type: object + OwnershipEvidenceAttributes: + description: The attributes of an ownership evidence response. + properties: + evidence_versions: + $ref: "#/components/schemas/OwnershipEvidenceVersions" + required: + - evidence_versions + type: object + OwnershipEvidenceData: + description: The data wrapper for an ownership evidence response. + properties: + attributes: + $ref: "#/components/schemas/OwnershipEvidenceAttributes" + id: + description: The identifier of the resource the evidence applies to. + example: test-resource + type: string + type: + $ref: "#/components/schemas/OwnershipEvidenceType" + required: + - id + - type + - attributes + type: object + OwnershipEvidenceResponse: + description: The response returned when retrieving the evidence backing an ownership inference for an owner type. + properties: + data: + $ref: "#/components/schemas/OwnershipEvidenceData" + required: + - data + type: object + OwnershipEvidenceType: + default: ownership_evidence + description: The type of the ownership evidence resource. The value should always be `ownership_evidence`. + enum: + - ownership_evidence + example: ownership_evidence + type: string + x-enum-varnames: + - OWNERSHIP_EVIDENCE + OwnershipEvidenceVersion: + additionalProperties: {} + description: A single evidence version entry describing how an inference was produced. + example: + pipeline_id: p1 + version: v3 + type: object + OwnershipEvidenceVersions: + description: The list of evidence versions associated with an inference. + example: + - pipeline_id: p1 + version: v3 + items: + $ref: "#/components/schemas/OwnershipEvidenceVersion" + nullable: true + type: array + OwnershipFeedbackAction: + description: The feedback action to apply to an inference. + enum: + - confirm + - reject + - correct + - persist + example: confirm + type: string + x-enum-varnames: + - CONFIRM + - REJECT + - CORRECT + - PERSIST + OwnershipFeedbackRequest: + description: The request body for submitting ownership feedback. + properties: + data: + $ref: "#/components/schemas/OwnershipFeedbackRequestData" + required: + - data + type: object + OwnershipFeedbackRequestAttributes: + description: The attributes of an ownership feedback request. + properties: + action: + $ref: "#/components/schemas/OwnershipFeedbackAction" + actor_handle: + description: The handle of the actor submitting the feedback. + example: user@example.com + type: string + actor_type: + description: The type of actor submitting the feedback, for example `user` or `service`. + example: user + type: string + corrected_owner_handle: + description: The corrected owner handle. Required when `action` is `correct`. + example: team-b + nullable: true + type: string + corrected_owner_type: + description: The corrected owner type. Required when `action` is `correct`. + example: team + nullable: true + type: string + inference_checksum: + description: The checksum of the inference being acted upon. Must match the current inference checksum or the request returns a conflict. + example: abc123 + type: string + reason: + description: An optional free-form reason explaining the feedback. + example: Confirmed by team lead. + nullable: true + type: string + required: + - action + - actor_handle + - actor_type + - inference_checksum + type: object + OwnershipFeedbackRequestData: + description: The data wrapper for an ownership feedback request. + properties: + attributes: + $ref: "#/components/schemas/OwnershipFeedbackRequestAttributes" + type: + $ref: "#/components/schemas/OwnershipFeedbackType" + required: + - type + - attributes + type: object + OwnershipFeedbackResponse: + description: The response returned after applying ownership feedback to an inference. + properties: + data: + $ref: "#/components/schemas/OwnershipFeedbackResultData" + required: + - data + type: object + OwnershipFeedbackResultAttributes: + description: The attributes of an ownership feedback result. + properties: + action: + $ref: "#/components/schemas/OwnershipFeedbackAction" + checksum: + description: The checksum of the inference after the feedback was applied. + example: abc123 + type: string + new_status: + $ref: "#/components/schemas/OwnershipInferenceStatus" + owner_type: + $ref: "#/components/schemas/OwnershipOwnerType" + previous_status: + $ref: "#/components/schemas/OwnershipInferenceStatus" + primary_contact_ref: + description: The primary contact reference for the inferred owner after the feedback was applied, formatted as `ref:handle/`. + example: ref:handle/team-a + nullable: true + type: string + updated_at: + description: The time when the inference was updated by the feedback. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + required: + - action + - previous_status + - new_status + - owner_type + - checksum + - updated_at + type: object + OwnershipFeedbackResultData: + description: The data wrapper for an ownership feedback result response. + properties: + attributes: + $ref: "#/components/schemas/OwnershipFeedbackResultAttributes" + id: + description: The identifier of the resource that the feedback was applied to. + example: res-1 + type: string + type: + $ref: "#/components/schemas/OwnershipFeedbackResultType" + required: + - id + - type + - attributes + type: object + OwnershipFeedbackResultType: + default: ownership_feedback_result + description: The type of the ownership feedback result resource. The value should always be `ownership_feedback_result`. + enum: + - ownership_feedback_result + example: ownership_feedback_result + type: string + x-enum-varnames: + - OWNERSHIP_FEEDBACK_RESULT + OwnershipFeedbackType: + default: ownership_feedback + description: The type of the ownership feedback request resource. The value should always be `ownership_feedback`. + enum: + - ownership_feedback + example: ownership_feedback + type: string + x-enum-varnames: + - OWNERSHIP_FEEDBACK + OwnershipHistoryAttributes: + description: The attributes of an ownership history response. + properties: + items: + $ref: "#/components/schemas/OwnershipHistoryItems" + pagination: + $ref: "#/components/schemas/OwnershipHistoryPagination" + required: + - items + - pagination + type: object + OwnershipHistoryData: + description: The data wrapper for an ownership history response. + properties: + attributes: + $ref: "#/components/schemas/OwnershipHistoryAttributes" + id: + description: The resource identifier for which history is returned. + example: res-1 + type: string + type: + $ref: "#/components/schemas/OwnershipHistoryType" + required: + - id + - type + - attributes + type: object + OwnershipHistoryItem: + description: A single ownership inference history entry. + properties: + checksum: + description: A checksum identifying the state of the inference at this point in time. + example: "" + type: string + confidence: + description: The confidence score of the inference, expressed as a numeric string with up to four decimal places. + example: "0.9000" + type: string + created_at: + description: The time this history entry was created. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + evidence_versions: + $ref: "#/components/schemas/OwnershipEvidenceVersions" + explanation: + description: A human-readable explanation of how the inference was produced. + example: "" + type: string + failed_at: + description: The time when this inference failed, if applicable. + example: "2026-01-15T10:00:00Z" + format: date-time + nullable: true + type: string + failure_reason: + description: The reason why this inference failed, if applicable. + example: missing evidence + nullable: true + type: string + id: + description: The unique identifier of the history entry. + example: 100 + format: int64 + type: integer + owner_type: + $ref: "#/components/schemas/OwnershipOwnerType" + primary_contact_ref: + description: The primary contact reference for the inferred owner, formatted as `ref:handle/`. + example: ref:handle/team-a + nullable: true + type: string + resource_id: + description: The identifier of the resource that the inference applies to. + example: res-1 + type: string + retry_schedule: + description: The scheduled retry time for a failed inference, if applicable. + example: "2026-01-15T11:00:00Z" + format: date-time + nullable: true + type: string + sources: + $ref: "#/components/schemas/OwnershipInferenceSources" + status: + $ref: "#/components/schemas/OwnershipInferenceStatus" + required: + - id + - resource_id + - owner_type + - confidence + - explanation + - evidence_versions + - sources + - checksum + - status + - created_at + type: object + OwnershipHistoryItems: + description: The list of history entries returned for this page. + items: + $ref: "#/components/schemas/OwnershipHistoryItem" + type: array + OwnershipHistoryPagination: + description: Cursor-based pagination metadata for the history response. + properties: + has_more: + description: Whether more history entries are available beyond this page. + example: false + type: boolean + next_cursor: + description: An opaque, base64-encoded cursor token. Pass it as the `cursor` query parameter to retrieve the next page. Absent or `null` when there are no further pages. + example: eyJpZCI6OTh9 + nullable: true + type: string + required: + - has_more + type: object + OwnershipHistoryResponse: + description: The response returned when listing the inference history for a resource. + properties: + data: + $ref: "#/components/schemas/OwnershipHistoryData" + required: + - data + type: object + OwnershipHistoryType: + default: ownership_history + description: The type of the ownership history resource. The value should always be `ownership_history`. + enum: + - ownership_history + example: ownership_history + type: string + x-enum-varnames: + - OWNERSHIP_HISTORY + OwnershipInferenceAttributes: + description: The attributes of a single ownership inference. + properties: + checksum: + description: A checksum that uniquely identifies the current state of the inference. Required when submitting feedback. + example: abc123 + type: string + confidence: + description: The confidence score of the inference, expressed as a numeric string with up to four decimal places. + example: "0.9500" + type: string + created_at: + description: The time when the inference was created. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + evidence_versions: + $ref: "#/components/schemas/OwnershipEvidenceVersions" + explanation: + description: A human-readable explanation of how the inference was produced. + example: High confidence match + type: string + owner_type: + $ref: "#/components/schemas/OwnershipOwnerType" + primary_contact_ref: + description: The primary contact reference for the inferred owner, formatted as `ref:handle/`. + example: ref:handle/team-a + nullable: true + type: string + sources: + $ref: "#/components/schemas/OwnershipInferenceSources" + status: + $ref: "#/components/schemas/OwnershipInferenceStatus" + updated_at: + description: The time when the inference was last updated. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + required: + - owner_type + - confidence + - explanation + - evidence_versions + - sources + - status + - checksum + - created_at + - updated_at + type: object + OwnershipInferenceData: + description: The data wrapper for a single ownership inference response. + properties: + attributes: + $ref: "#/components/schemas/OwnershipInferenceAttributes" + id: + description: The identifier of the inference, formatted as `resource_id:owner_type`. + example: test-resource:team + type: string + type: + $ref: "#/components/schemas/OwnershipInferenceType" + required: + - id + - type + - attributes + type: object + OwnershipInferenceItem: + description: A single ownership inference, scoped to a specific owner type. + properties: + checksum: + description: A checksum that uniquely identifies the current state of the inference. Required when submitting feedback. + example: abc123 + type: string + confidence: + description: The confidence score of the inference, expressed as a numeric string with up to four decimal places. + example: "0.9500" + type: string + created_at: + description: The time when the inference was created. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + evidence_versions: + $ref: "#/components/schemas/OwnershipEvidenceVersions" + explanation: + description: A human-readable explanation of how the inference was produced. + example: High confidence match + type: string + id: + description: The identifier of the inference, formatted as `resource_id:owner_type`. + example: test-resource:team + type: string + owner_type: + $ref: "#/components/schemas/OwnershipOwnerType" + primary_contact_ref: + description: The primary contact reference for the inferred owner, formatted as `ref:handle/`. + example: ref:handle/team-a + nullable: true + type: string + sources: + $ref: "#/components/schemas/OwnershipInferenceSources" + status: + $ref: "#/components/schemas/OwnershipInferenceStatus" + updated_at: + description: The time when the inference was last updated. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + required: + - id + - owner_type + - confidence + - explanation + - evidence_versions + - sources + - status + - checksum + - created_at + - updated_at + type: object + OwnershipInferenceItems: + description: The list of inferences for a resource, with one inference per owner type. + items: + $ref: "#/components/schemas/OwnershipInferenceItem" + type: array + OwnershipInferenceListAttributes: + description: The attributes of the ownership inferences collection response. + properties: + items: + $ref: "#/components/schemas/OwnershipInferenceItems" + required: + - items + type: object + OwnershipInferenceListData: + description: The data wrapper for the ownership inferences collection response. + properties: + attributes: + $ref: "#/components/schemas/OwnershipInferenceListAttributes" + id: + description: The resource identifier associated with the returned inferences. + example: test-resource + type: string + type: + $ref: "#/components/schemas/OwnershipInferencesType" + required: + - id + - type + - attributes + type: object + OwnershipInferenceListResponse: + description: The response returned when listing all current ownership inferences for a resource. + properties: + data: + $ref: "#/components/schemas/OwnershipInferenceListData" + required: + - data + type: object + OwnershipInferenceResponse: + description: The response returned when retrieving a single ownership inference for an owner type. + properties: + data: + $ref: "#/components/schemas/OwnershipInferenceData" + required: + - data + type: object + OwnershipInferenceSource: + additionalProperties: {} + description: A source describing how an inference was derived. + example: + kind: code_owners + type: object + OwnershipInferenceSources: + description: The list of sources backing an ownership inference. Empty when the inference status is not whitelisted to expose sources. + example: + - kind: code_owners + items: + $ref: "#/components/schemas/OwnershipInferenceSource" + type: array + OwnershipInferenceStatus: + description: The lifecycle status of an ownership inference. + enum: + - suggested + - persisted + - overridden + - failed + - unknown + example: suggested + type: string + x-enum-varnames: + - SUGGESTED + - PERSISTED + - OVERRIDDEN + - FAILED + - UNKNOWN + OwnershipInferenceType: + default: ownership_inference + description: The type of the ownership inference resource. The value should always be `ownership_inference`. + enum: + - ownership_inference + example: ownership_inference + type: string + x-enum-varnames: + - OWNERSHIP_INFERENCE + OwnershipInferencesType: + default: ownership_inferences + description: The type of the ownership inferences collection resource. The value should always be `ownership_inferences`. + enum: + - ownership_inferences + example: ownership_inferences + type: string + x-enum-varnames: + - OWNERSHIP_INFERENCES + OwnershipOwnerType: + description: The owner type for an ownership inference. + enum: + - user + - team + - service + - unknown + example: team + type: string + x-enum-varnames: + - USER + - TEAM + - SERVICE + - UNKNOWN PESymbolFileEvent: description: Metadata for a PE/PDB symbol file upload, sent as a JSON-encoded `event` field. properties: @@ -121277,6 +121840,500 @@ paths: summary: Get all CSM Serverless Agents tags: ["CSM Agents"] x-menu-order: 4 + /api/v2/csm/ownership/{resource_id}: + get: + description: Get all current ownership inferences for a resource, one per owner type (`user`, `team`, `service`, `unknown`). + operationId: ListOwnershipInferences + parameters: + - description: The identifier of the resource to retrieve ownership inferences for. + in: path + name: resource_id + required: true + schema: + example: test-resource + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + items: + - checksum: abc123 + confidence: "0.9500" + created_at: "2026-01-15T10:00:00Z" + evidence_versions: + - pipeline_id: p1 + explanation: High confidence match + id: test-resource:team + owner_type: team + primary_contact_ref: ref:handle/team-a + sources: [] + status: suggested + updated_at: "2026-01-15T10:00:00Z" + id: test-resource + type: ownership_inferences + schema: + $ref: "#/components/schemas/OwnershipInferenceListResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List ownership inferences for a resource + tags: ["CSM Ownership"] + x-menu-order: 1 + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/ownership/{resource_id}/history: + get: + description: List inference history entries for a resource across all owner types, ordered from most recent to oldest. Uses cursor-based pagination. + operationId: ListOwnershipHistory + parameters: + - description: The identifier of the resource to retrieve inference history for. + in: path + name: resource_id + required: true + schema: + example: res-1 + type: string + - description: An opaque, base64-encoded cursor token returned by a previous call in `pagination.next_cursor`. Omit to fetch the first page. + in: query + name: cursor + required: false + schema: + example: eyJpZCI6OTh9 + type: string + - description: The maximum number of history entries to return per page. + in: query + name: limit + required: false + schema: + default: 25 + example: 25 + format: int32 + maximum: 100 + minimum: 1 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + items: + - checksum: "" + confidence: "0.9000" + created_at: "2026-01-15T10:00:00Z" + evidence_versions: + explanation: "" + failed_at: + failure_reason: + id: 100 + owner_type: team + primary_contact_ref: ref:handle/team-a + resource_id: res-1 + retry_schedule: + sources: [] + status: suggested + pagination: + has_more: false + next_cursor: + id: res-1 + type: ownership_history + schema: + $ref: "#/components/schemas/OwnershipHistoryResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List ownership inference history for a resource + tags: ["CSM Ownership"] + x-menu-order: 3 + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/ownership/{resource_id}/{owner_type}: + get: + description: |- + Get the current ownership inference for a resource for a specific owner type. + + This endpoint supports ETag-based caching. Pass the previously returned `ETag` value in the `If-None-Match` request header to receive a `304 Not Modified` response when the inference has not changed. + operationId: GetOwnershipInference + parameters: + - description: The identifier of the resource to retrieve the ownership inference for. + in: path + name: resource_id + required: true + schema: + example: test-resource + type: string + - description: The owner type of the inference to retrieve. + in: path + name: owner_type + required: true + schema: + $ref: "#/components/schemas/OwnershipOwnerType" + - description: A previously returned `ETag` value. When supplied and the resource has not changed, the endpoint returns `304 Not Modified`. + in: header + name: If-None-Match + required: false + schema: + example: '"abc123"' + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + checksum: abc123 + confidence: "0.9500" + created_at: "2026-01-15T10:00:00Z" + evidence_versions: + - pipeline_id: p1 + explanation: High confidence match + owner_type: team + primary_contact_ref: ref:handle/team-a + sources: [] + status: suggested + updated_at: "2026-01-15T10:00:00Z" + id: test-resource:team + type: ownership_inference + schema: + $ref: "#/components/schemas/OwnershipInferenceResponse" + description: OK + headers: + Cache-Control: + description: The cache control directives applied to the response. + schema: + example: private, max-age=60 + type: string + ETag: + description: A strong validator that identifies the current state of the inference. + schema: + example: '"abc123"' + type: string + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get an ownership inference by owner type + tags: ["CSM Ownership"] + x-menu-order: 2 + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/ownership/{resource_id}/{owner_type}/evidence: + get: + description: |- + Get the evidence versions backing the current ownership inference for a resource and owner type. + + This endpoint supports weak ETag caching. Pass the previously returned `ETag` value in the `If-None-Match` request header to receive a `304 Not Modified` response when the evidence has not changed. + operationId: GetOwnershipEvidence + parameters: + - description: The identifier of the resource to retrieve evidence for. + in: path + name: resource_id + required: true + schema: + example: test-resource + type: string + - description: The owner type of the inference to retrieve evidence for. + in: path + name: owner_type + required: true + schema: + $ref: "#/components/schemas/OwnershipOwnerType" + - description: A previously returned weak `ETag` value. When supplied and the evidence has not changed, the endpoint returns `304 Not Modified`. + in: header + name: If-None-Match + required: false + schema: + example: W/"f2e126916327bda8" + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + evidence_versions: + - pipeline_id: p1 + version: v3 + id: test-resource + type: ownership_evidence + schema: + $ref: "#/components/schemas/OwnershipEvidenceResponse" + description: OK + headers: + ETag: + description: A weak validator that identifies the current state of the evidence. + schema: + example: W/"f2e126916327bda8" + type: string + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get the evidence for an ownership inference + tags: ["CSM Ownership"] + x-menu-order: 5 + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/ownership/{resource_id}/{owner_type}/feedback: + post: + description: |- + Submit feedback on the current ownership inference for a resource and owner type. Valid actions are `confirm`, `reject`, `correct`, and `persist`. + + The request must include the current inference `checksum` in `inference_checksum`. If the checksum does not match the current inference state, the endpoint returns `409 Conflict`. + + When `action` is `correct`, `corrected_owner_handle` and `corrected_owner_type` are required. + operationId: CreateOwnershipFeedback + parameters: + - description: The identifier of the resource that the feedback applies to. + in: path + name: resource_id + required: true + schema: + example: res-1 + type: string + - description: The type of owner that the feedback applies to. + in: path + name: owner_type + required: true + schema: + $ref: "#/components/schemas/OwnershipOwnerType" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + action: confirm + actor_handle: user@example.com + actor_type: user + inference_checksum: abc123 + type: ownership_feedback + schema: + $ref: "#/components/schemas/OwnershipFeedbackRequest" + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + action: confirm + checksum: abc123 + new_status: suggested + owner_type: team + previous_status: suggested + primary_contact_ref: ref:handle/team-a + updated_at: "2026-01-15T10:00:00Z" + id: res-1 + type: ownership_feedback_result + schema: + $ref: "#/components/schemas/OwnershipFeedbackResponse" + description: Created + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/OwnershipInferenceResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Submit feedback on an ownership inference + tags: ["CSM Ownership"] + x-menu-order: 6 + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/ownership/{resource_id}/{owner_type}/history: + get: + description: List inference history entries for a resource filtered by owner type, ordered from most recent to oldest. Uses cursor-based pagination. + operationId: ListOwnershipHistoryByOwnerType + parameters: + - description: The identifier of the resource to retrieve inference history for. + in: path + name: resource_id + required: true + schema: + example: res-1 + type: string + - description: The owner type to filter history by. + in: path + name: owner_type + required: true + schema: + $ref: "#/components/schemas/OwnershipOwnerType" + - description: An opaque, base64-encoded cursor token returned by a previous call in `pagination.next_cursor`. Omit to fetch the first page. + in: query + name: cursor + required: false + schema: + example: eyJpZCI6OTh9 + type: string + - description: The maximum number of history entries to return per page. + in: query + name: limit + required: false + schema: + default: 25 + example: 25 + format: int32 + maximum: 100 + minimum: 1 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + items: + - checksum: "" + confidence: "0.9000" + created_at: "2026-01-15T10:00:00Z" + evidence_versions: + explanation: "" + failed_at: + failure_reason: + id: 100 + owner_type: team + primary_contact_ref: ref:handle/team-a + resource_id: res-1 + retry_schedule: + sources: [] + status: suggested + pagination: + has_more: false + next_cursor: + id: res-1 + type: ownership_history + schema: + $ref: "#/components/schemas/OwnershipHistoryResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List ownership history by owner type + tags: ["CSM Ownership"] + x-menu-order: 4 + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/current_user: get: description: |- @@ -184237,6 +185294,13 @@ tags: all in a unified view for seamless collaboration and faster remediation. Go to https://docs.datadoghq.com/security/cloud_security_management to learn more. name: "CSM Coverage Analysis" + - description: |- + Datadog Cloud Security Management (CSM) Ownership infers the most likely owner + for a cloud resource by combining ownership signals from across the platform, + and lets you review the inference, inspect its evidence, and submit feedback to + persist, override, or correct the inferred owner. + For more information, see [Cloud Security Management](https://docs.datadoghq.com/security/cloud_security_management). + name: "CSM Ownership" - description: |- Workload Protection monitors file, network, and process activity across your environment to detect real-time threats to your infrastructure. See [Workload Protection](https://docs.datadoghq.com/security/workload_protection/) for more information on setting up Workload Protection. diff --git a/data/api/v2/translate_actions.json b/data/api/v2/translate_actions.json index f14c6c205c0..c27fded5323 100644 --- a/data/api/v2/translate_actions.json +++ b/data/api/v2/translate_actions.json @@ -1434,6 +1434,32 @@ "description": "Get the list of all CSM Serverless Agents running on your hosts and containers.", "summary": "Get all CSM Serverless Agents" }, + "ListOwnershipInferences": { + "description": "Get all current ownership inferences for a resource, one per owner type (`user`, `team`, `service`, `unknown`).", + "summary": "List ownership inferences for a resource" + }, + "ListOwnershipHistory": { + "description": "List inference history entries for a resource across all owner types, ordered from most recent to oldest. Uses cursor-based pagination.", + "summary": "List ownership inference history for a resource" + }, + "GetOwnershipInference": { + "description": "Get the current ownership inference for a resource for a specific owner type.\n\nThis endpoint supports ETag-based caching. Pass the previously returned `ETag` value in the `If-None-Match` request header to receive a `304 Not Modified` response when the inference has not changed.", + "summary": "Get an ownership inference by owner type" + }, + "GetOwnershipEvidence": { + "description": "Get the evidence versions backing the current ownership inference for a resource and owner type.\n\nThis endpoint supports weak ETag caching. Pass the previously returned `ETag` value in the `If-None-Match` request header to receive a `304 Not Modified` response when the evidence has not changed.", + "summary": "Get the evidence for an ownership inference" + }, + "CreateOwnershipFeedback": { + "description": "Submit feedback on the current ownership inference for a resource and owner type. Valid actions are `confirm`, `reject`, `correct`, and `persist`.\n\nThe request must include the current inference `checksum` in `inference_checksum`. If the checksum does not match the current inference state, the endpoint returns `409 Conflict`.\n\nWhen `action` is `correct`, `corrected_owner_handle` and `corrected_owner_type` are required.", + "summary": "Submit feedback on an ownership inference", + "request_description": "", + "request_schema_description": "The request body for submitting ownership feedback." + }, + "ListOwnershipHistoryByOwnerType": { + "description": "List inference history entries for a resource filtered by owner type, ordered from most recent to oldest. Uses cursor-based pagination.", + "summary": "List ownership history by owner type" + }, "GetCurrentUser": { "description": "Get the user associated with the current authentication context.\nThe response includes the user's profile attributes (name, email, handle,\nstatus, MFA state), along with related resources: the user's organization,\nassigned roles with their granted permissions, and team-scoped roles.\nNo additional permissions are required beyond valid authentication.", "summary": "Get current user" diff --git a/data/api/v2/translate_tags.json b/data/api/v2/translate_tags.json index 099ae168ed4..79abe564239 100644 --- a/data/api/v2/translate_tags.json +++ b/data/api/v2/translate_tags.json @@ -75,6 +75,10 @@ "name": "CSM Coverage Analysis", "description": "Datadog Cloud Security Management (CSM) delivers real-time threat detection\nand continuous configuration audits across your entire cloud infrastructure,\nall in a unified view for seamless collaboration and faster remediation.\nGo to https://docs.datadoghq.com/security/cloud_security_management to learn more." }, + "csm-ownership": { + "name": "CSM Ownership", + "description": "Datadog Cloud Security Management (CSM) Ownership infers the most likely owner\nfor a cloud resource by combining ownership signals from across the platform,\nand lets you review the inference, inspect its evidence, and submit feedback to\npersist, override, or correct the inferred owner.\nFor more information, see [Cloud Security Management](https://docs.datadoghq.com/security/cloud_security_management)." + }, "csm-threats": { "name": "CSM Threats", "description": "Workload Protection monitors file, network, and process activity across your environment to detect real-time threats to your infrastructure. See [Workload Protection](https://docs.datadoghq.com/security/workload_protection/) for more information on setting up Workload Protection.\n\n**Note**: These endpoints are split based on whether you are using the US1-FED site or not. Please reference the specific resource for the site you are using."