Api Diagnostic - Create Or Update

Creates a new Diagnostic for an API or updates an existing one.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics/{diagnosticId}?api-version=2024-05-01

URI Parameters

Name In Required Type Description
apiId
path True

string

API identifier. Must be unique in the current API Management service instance.

diagnosticId
path True

string

Diagnostic identifier. Must be unique in the current API Management service instance.

Regex pattern: ^[^*#&+:<>?]+$

resourceGroupName
path True

string

The name of the resource group. The name is case insensitive.

serviceName
path True

string

The name of the API Management service.

Regex pattern: ^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$

subscriptionId
path True

string

uuid

The ID of the target subscription. The value must be an UUID.

api-version
query True

string

The API version to use for this operation.

Request Header

Name Required Type Description
If-Match

string

ETag of the Entity. Not required when creating an entity, but required when updating an entity.

Request Body

Name Required Type Description
properties.loggerId True

string

Resource Id of a target logger.

properties.alwaysLog

AlwaysLog

Specifies for what type of messages sampling settings should not apply.

properties.backend

PipelineDiagnosticSettings

Diagnostic settings for incoming/outgoing HTTP messages to the Backend

properties.frontend

PipelineDiagnosticSettings

Diagnostic settings for incoming/outgoing HTTP messages to the Gateway.

properties.httpCorrelationProtocol

HttpCorrelationProtocol

Sets correlation protocol to use for Application Insights diagnostics.

properties.logClientIp

boolean

Log the ClientIP. Default is false.

properties.metrics

boolean

Emit custom metrics via emit-metric policy. Applicable only to Application Insights diagnostic settings.

properties.operationNameFormat

OperationNameFormat

The format of the Operation Name for Application Insights telemetries. Default is Name.

properties.sampling

SamplingSettings

Sampling settings for Diagnostic.

properties.verbosity

Verbosity

The verbosity level applied to traces emitted by trace policies.

Responses

Name Type Description
200 OK

DiagnosticContract

Diagnostic was successfully updated.

Headers

ETag: string

201 Created

DiagnosticContract

Diagnostic was successfully created.

Headers

ETag: string

Other Status Codes

ErrorResponse

Error response describing why the operation failed.

Security

azure_auth

Azure Active Directory OAuth2 Flow.

Type: oauth2
Flow: implicit
Authorization URL: https://login.microsoftonline.com/common/oauth2/authorize

Scopes

Name Description
user_impersonation impersonate your user account

Examples

ApiManagementCreateApiDiagnostic

Sample request

PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ApiManagement/service/apimService1/apis/57d1f7558aa04f15146d9d8a/diagnostics/applicationinsights?api-version=2024-05-01

{
  "properties": {
    "alwaysLog": "allErrors",
    "loggerId": "/loggers/applicationinsights",
    "sampling": {
      "samplingType": "fixed",
      "percentage": 50
    },
    "frontend": {
      "request": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      },
      "response": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      }
    },
    "backend": {
      "request": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      },
      "response": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      }
    }
  }
}

Sample response

{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ApiManagement/service/apimService1/apis/57d1f7558aa04f15146d9d8a/diagnostics/applicationinsights",
  "type": "Microsoft.ApiManagement/service/apis/diagnostics",
  "name": "applicationinsights",
  "properties": {
    "alwaysLog": "allErrors",
    "loggerId": "/loggers/applicationinsights",
    "sampling": {
      "samplingType": "fixed",
      "percentage": 50
    },
    "frontend": {
      "request": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      },
      "response": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      }
    },
    "backend": {
      "request": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      },
      "response": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      }
    }
  }
}
{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ApiManagement/service/apimService1/apis/57d1f7558aa04f15146d9d8a/diagnostics/applicationinsights",
  "type": "Microsoft.ApiManagement/service/apis/diagnostics",
  "name": "applicationinsights",
  "properties": {
    "alwaysLog": "allErrors",
    "loggerId": "/loggers/applicationinsights",
    "sampling": {
      "samplingType": "fixed",
      "percentage": 50
    },
    "frontend": {
      "request": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      },
      "response": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      }
    },
    "backend": {
      "request": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      },
      "response": {
        "headers": [
          "Content-type"
        ],
        "body": {
          "bytes": 512
        }
      }
    }
  }
}

Definitions

Name Description
AlwaysLog

Specifies for what type of messages sampling settings should not apply.

BodyDiagnosticSettings

Body logging settings.

DataMasking
DataMaskingEntity
DataMaskingMode

Data masking mode.

DiagnosticContract

Diagnostic details.

ErrorAdditionalInfo

The resource management error additional info.

ErrorDetail

The error detail.

ErrorResponse

Error response

HttpCorrelationProtocol

Sets correlation protocol to use for Application Insights diagnostics.

HttpMessageDiagnostic

Http message diagnostic settings.

OperationNameFormat

The format of the Operation Name for Application Insights telemetries. Default is Name.

PipelineDiagnosticSettings

Diagnostic settings for incoming/outgoing HTTP messages to the Gateway.

SamplingSettings

Sampling settings for Diagnostic.

SamplingType

Sampling type.

Verbosity

The verbosity level applied to traces emitted by trace policies.

AlwaysLog

Specifies for what type of messages sampling settings should not apply.

Name Type Description
allErrors

string

Always log all erroneous request regardless of sampling settings.

BodyDiagnosticSettings

Body logging settings.

Name Type Description
bytes

integer

Number of request body bytes to log.

DataMasking

Name Type Description
headers

DataMaskingEntity[]

Masking settings for headers

queryParams

DataMaskingEntity[]

Masking settings for Url query parameters

DataMaskingEntity

Name Type Description
mode

DataMaskingMode

Data masking mode.

value

string

The name of an entity to mask (e.g. a name of a header or a query parameter).

DataMaskingMode

Data masking mode.

Name Type Description
Hide

string

Hide the presence of an entity.

Mask

string

Mask the value of an entity.

DiagnosticContract

Diagnostic details.

Name Type Description
id

string

Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

name

string

The name of the resource

properties.alwaysLog

AlwaysLog

Specifies for what type of messages sampling settings should not apply.

properties.backend

PipelineDiagnosticSettings

Diagnostic settings for incoming/outgoing HTTP messages to the Backend

properties.frontend

PipelineDiagnosticSettings

Diagnostic settings for incoming/outgoing HTTP messages to the Gateway.

properties.httpCorrelationProtocol

HttpCorrelationProtocol

Sets correlation protocol to use for Application Insights diagnostics.

properties.logClientIp

boolean

Log the ClientIP. Default is false.

properties.loggerId

string

Resource Id of a target logger.

properties.metrics

boolean

Emit custom metrics via emit-metric policy. Applicable only to Application Insights diagnostic settings.

properties.operationNameFormat

OperationNameFormat

The format of the Operation Name for Application Insights telemetries. Default is Name.

properties.sampling

SamplingSettings

Sampling settings for Diagnostic.

properties.verbosity

Verbosity

The verbosity level applied to traces emitted by trace policies.

type

string

The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"

ErrorAdditionalInfo

The resource management error additional info.

Name Type Description
info

object

The additional info.

type

string

The additional info type.

ErrorDetail

The error detail.

Name Type Description
additionalInfo

ErrorAdditionalInfo[]

The error additional info.

code

string

The error code.

details

ErrorDetail[]

The error details.

message

string

The error message.

target

string

The error target.

ErrorResponse

Error response

Name Type Description
error

ErrorDetail

The error object.

HttpCorrelationProtocol

Sets correlation protocol to use for Application Insights diagnostics.

Name Type Description
Legacy

string

Inject Request-Id and Request-Context headers with request correlation data. See https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/HttpCorrelationProtocol.md.

None

string

Do not read and inject correlation headers.

W3C

string

Inject Trace Context headers. See https://w3c.github.io/trace-context.

HttpMessageDiagnostic

Http message diagnostic settings.

Name Type Description
body

BodyDiagnosticSettings

Body logging settings.

dataMasking

DataMasking

Data masking settings.

headers

string[]

Array of HTTP Headers to log.

OperationNameFormat

The format of the Operation Name for Application Insights telemetries. Default is Name.

Name Type Description
Name

string

API_NAME;rev=API_REVISION - OPERATION_NAME

Url

string

HTTP_VERB URL

PipelineDiagnosticSettings

Diagnostic settings for incoming/outgoing HTTP messages to the Gateway.

Name Type Description
request

HttpMessageDiagnostic

Diagnostic settings for request.

response

HttpMessageDiagnostic

Diagnostic settings for response.

SamplingSettings

Sampling settings for Diagnostic.

Name Type Description
percentage

number

Rate of sampling for fixed-rate sampling.

samplingType

SamplingType

Sampling type.

SamplingType

Sampling type.

Name Type Description
fixed

string

Fixed-rate sampling.

Verbosity

The verbosity level applied to traces emitted by trace policies.

Name Type Description
error

string

Only traces with 'severity' set to 'error' will be sent to the logger attached to this diagnostic instance.

information

string

Traces with 'severity' set to 'information' and 'error' will be sent to the logger attached to this diagnostic instance.

verbose

string

All the traces emitted by trace policies will be sent to the logger attached to this diagnostic instance.