{
  "description": "Configuration describes an Dapr configuration setting.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "ConfigurationSpec is the spec for an configuration.",
      "properties": {
        "accessControl": {
          "additionalProperties": false,
          "description": "AccessControlSpec is the spec object in ConfigurationSpec.",
          "properties": {
            "defaultAction": {
              "type": [
                "string",
                "null"
              ]
            },
            "policies": {
              "items": {
                "additionalProperties": false,
                "description": "AppPolicySpec defines the policy data structure for each app.",
                "properties": {
                  "appId": {
                    "type": "string"
                  },
                  "defaultAction": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "namespace": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "operations": {
                    "items": {
                      "additionalProperties": false,
                      "description": "AppOperationAction defines the data structure for each app operation.",
                      "properties": {
                        "action": {
                          "type": "string"
                        },
                        "httpVerb": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "array",
                            "null"
                          ]
                        },
                        "name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "action",
                        "name"
                      ],
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "trustDomain": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "appId"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "trustDomain": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "api": {
          "additionalProperties": false,
          "description": "APISpec describes the configuration for Dapr APIs.",
          "properties": {
            "allowed": {
              "description": "List of allowed APIs. Can be used in conjunction with denied.",
              "items": {
                "additionalProperties": false,
                "description": "APIAccessRule describes an access rule for allowing or denying a Dapr API.",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "protocol": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "version": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "version"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "denied": {
              "description": "List of denied APIs. Can be used in conjunction with allowed.",
              "items": {
                "additionalProperties": false,
                "description": "APIAccessRule describes an access rule for allowing or denying a Dapr API.",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "protocol": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "version": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "version"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "appHttpPipeline": {
          "additionalProperties": false,
          "description": "PipelineSpec defines the middleware pipeline.",
          "properties": {
            "handlers": {
              "items": {
                "additionalProperties": false,
                "description": "HandlerSpec defines a request handlers.",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "selector": {
                    "additionalProperties": false,
                    "description": "SelectorSpec selects target services to which the handler is to be applied.",
                    "properties": {
                      "fields": {
                        "items": {
                          "additionalProperties": false,
                          "description": "SelectorField defines a selector fields.",
                          "properties": {
                            "field": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "field",
                            "value"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "fields"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "type": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "type"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "handlers"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "components": {
          "additionalProperties": false,
          "description": "ComponentsSpec describes the configuration for Dapr components",
          "properties": {
            "deny": {
              "description": "Denylist of component types that cannot be instantiated",
              "items": {
                "type": "string"
              },
              "type": [
                "array",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "features": {
          "items": {
            "additionalProperties": false,
            "description": "FeatureSpec defines the features that are enabled/disabled.",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "enabled",
              "name"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "httpPipeline": {
          "additionalProperties": false,
          "description": "PipelineSpec defines the middleware pipeline.",
          "properties": {
            "handlers": {
              "items": {
                "additionalProperties": false,
                "description": "HandlerSpec defines a request handlers.",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "selector": {
                    "additionalProperties": false,
                    "description": "SelectorSpec selects target services to which the handler is to be applied.",
                    "properties": {
                      "fields": {
                        "items": {
                          "additionalProperties": false,
                          "description": "SelectorField defines a selector fields.",
                          "properties": {
                            "field": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "field",
                            "value"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "fields"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "type": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "type"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "handlers"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "logging": {
          "additionalProperties": false,
          "description": "LoggingSpec defines the configuration for logging.",
          "properties": {
            "apiLogging": {
              "additionalProperties": false,
              "description": "Configure API logging.",
              "properties": {
                "enabled": {
                  "description": "Default value for enabling API logging. Sidecars can always override this by setting `--enable-api-logging` to true or false explicitly. The default value is false.",
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "obfuscateURLs": {
                  "description": "When enabled, obfuscates the values of URLs in HTTP API logs, logging the route name rather than the full path being invoked, which could contain PII. Default: false. This option has no effect if API logging is disabled.",
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "omitHealthChecks": {
                  "description": "If true, health checks are not reported in API logs. Default: false. This option has no effect if API logging is disabled.",
                  "type": [
                    "boolean",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "metric": {
          "additionalProperties": false,
          "default": {
            "enabled": true
          },
          "description": "MetricSpec defines metrics configuration.",
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "http": {
              "additionalProperties": false,
              "description": "MetricHTTP defines configuration for metrics for the HTTP server",
              "properties": {
                "increasedCardinality": {
                  "description": "If true, metrics for the HTTP server are collected with increased cardinality. The default is true in Dapr 1.13, but will be changed to false in 1.14+",
                  "type": [
                    "boolean",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "rules": {
              "items": {
                "additionalProperties": false,
                "description": "MetricsRule defines configuration options for a metric.",
                "properties": {
                  "labels": {
                    "items": {
                      "additionalProperties": false,
                      "description": "MetricsLabel defines an object that allows to set regex expressions for a label.",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "regex": {
                          "additionalProperties": {
                            "type": "string"
                          },
                          "type": "object"
                        }
                      },
                      "required": [
                        "name",
                        "regex"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "labels",
                  "name"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            }
          },
          "required": [
            "enabled"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "metrics": {
          "additionalProperties": false,
          "default": {
            "enabled": true
          },
          "description": "MetricSpec defines metrics configuration.",
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "http": {
              "additionalProperties": false,
              "description": "MetricHTTP defines configuration for metrics for the HTTP server",
              "properties": {
                "increasedCardinality": {
                  "description": "If true, metrics for the HTTP server are collected with increased cardinality. The default is true in Dapr 1.13, but will be changed to false in 1.14+",
                  "type": [
                    "boolean",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "rules": {
              "items": {
                "additionalProperties": false,
                "description": "MetricsRule defines configuration options for a metric.",
                "properties": {
                  "labels": {
                    "items": {
                      "additionalProperties": false,
                      "description": "MetricsLabel defines an object that allows to set regex expressions for a label.",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "regex": {
                          "additionalProperties": {
                            "type": "string"
                          },
                          "type": "object"
                        }
                      },
                      "required": [
                        "name",
                        "regex"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "labels",
                  "name"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            }
          },
          "required": [
            "enabled"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "mtls": {
          "additionalProperties": false,
          "description": "MTLSSpec defines mTLS configuration.",
          "properties": {
            "allowedClockSkew": {
              "type": [
                "string",
                "null"
              ]
            },
            "controlPlaneTrustDomain": {
              "type": [
                "string",
                "null"
              ]
            },
            "enabled": {
              "type": "boolean"
            },
            "sentryAddress": {
              "type": [
                "string",
                "null"
              ]
            },
            "tokenValidators": {
              "description": "Additional token validators to use. When Dapr is running in Kubernetes mode, this is in addition to the built-in \"kubernetes\" validator. In self-hosted mode, enabling a custom validator will disable the built-in \"insecure\" validator.",
              "items": {
                "additionalProperties": false,
                "description": "ValidatorSpec contains additional token validators to use.",
                "properties": {
                  "name": {
                    "description": "Name of the validator",
                    "enum": [
                      "jwks"
                    ],
                    "type": "string"
                  },
                  "options": {
                    "description": "Options for the validator, if any",
                    "type": [
                      "object",
                      "null"
                    ],
                    "x-kubernetes-preserve-unknown-fields": true
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "workloadCertTTL": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "enabled"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "nameResolution": {
          "additionalProperties": false,
          "description": "NameResolutionSpec is the spec for name resolution configuration.",
          "properties": {
            "component": {
              "type": "string"
            },
            "configuration": {
              "description": "DynamicValue is a dynamic value struct for the component.metadata pair value.",
              "type": "object",
              "x-kubernetes-preserve-unknown-fields": true
            },
            "version": {
              "type": "string"
            }
          },
          "required": [
            "component",
            "configuration",
            "version"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "secrets": {
          "additionalProperties": false,
          "description": "SecretsSpec is the spec for secrets configuration.",
          "properties": {
            "scopes": {
              "items": {
                "additionalProperties": false,
                "description": "SecretsScope defines the scope for secrets.",
                "properties": {
                  "allowedSecrets": {
                    "items": {
                      "type": "string"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "defaultAccess": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "deniedSecrets": {
                    "items": {
                      "type": "string"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "storeName": {
                    "type": "string"
                  }
                },
                "required": [
                  "storeName"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "scopes"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "tracing": {
          "additionalProperties": false,
          "description": "TracingSpec defines distributed tracing configuration.",
          "properties": {
            "otel": {
              "additionalProperties": false,
              "description": "OtelSpec defines Otel exporter configurations.",
              "properties": {
                "endpointAddress": {
                  "type": "string"
                },
                "isSecure": {
                  "type": "boolean"
                },
                "protocol": {
                  "type": "string"
                }
              },
              "required": [
                "endpointAddress",
                "isSecure",
                "protocol"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "samplingRate": {
              "type": "string"
            },
            "stdout": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "zipkin": {
              "additionalProperties": false,
              "description": "ZipkinSpec defines Zipkin trace configurations.",
              "properties": {
                "endpointAddress": {
                  "type": "string"
                }
              },
              "required": [
                "endpointAddress"
              ],
              "type": [
                "object",
                "null"
              ]
            }
          },
          "required": [
            "samplingRate"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "wasm": {
          "additionalProperties": false,
          "description": "WasmSpec describes the security profile for all Dapr Wasm components.",
          "properties": {
            "strictSandbox": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}