diff --git a/schema-docs.md b/schema-docs.md
index 044f9e2a..cc40ca1e 100644
--- a/schema-docs.md
+++ b/schema-docs.md
@@ -2767,7 +2767,7 @@ Usages:
| Property | Type | Required? | Constraints | Description |
|---|---|---|---|---|
-| `processors` | `array` of [`LogRecordProcessor`](#logrecordprocessor) | `true` | No constraints. | Configure log record processors. |
+| `processors` | `array` of [`LogRecordProcessor`](#logrecordprocessor) | `true` | * `minItems`: `1`
| Configure log record processors. |
| `limits` | [`LogRecordLimits`](#logrecordlimits) | `false` | No constraints. | Configure log record limits. See also attribute_limits. |
| `logger_configurator/development`
**WARNING:** This property is [experimental](README.md#experimental-features). | [`ExperimentalLoggerConfigurator`](#experimentalloggerconfigurator) | `false` | No constraints. | Configure loggers.
|
@@ -3155,7 +3155,7 @@ Usages:
| Property | Type | Required? | Constraints | Description |
|---|---|---|---|---|
-| `readers` | `array` of [`MetricReader`](#metricreader) | `true` | No constraints. | Configure metric readers. |
+| `readers` | `array` of [`MetricReader`](#metricreader) | `true` | * `minItems`: `1`
| Configure metric readers. |
| `views` | `array` of [`View`](#view) | `false` | No constraints. | Configure views.
Each view has a selector which determines the instrument(s) it applies to, and a configuration for the resulting stream(s).
|
| `exemplar_filter` | [`ExemplarFilter`](#exemplarfilter) | `false` | No constraints. | Configure the exemplar filter.
Values include: trace_based, always_on, always_off. For behavior of values see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#metrics-sdk-configuration.
If omitted or null, trace_based is used.
|
| `meter_configurator/development`
**WARNING:** This property is [experimental](README.md#experimental-features). | [`ExperimentalMeterConfigurator`](#experimentalmeterconfigurator) | `false` | No constraints. | Configure meters.
|
@@ -5763,7 +5763,7 @@ Usages:
| Property | Type | Required? | Constraints | Description |
|---|---|---|---|---|
-| `processors` | `array` of [`SpanProcessor`](#spanprocessor) | `true` | No constraints. | Configure span processors. |
+| `processors` | `array` of [`SpanProcessor`](#spanprocessor) | `true` | * `minItems`: `1`
| Configure span processors. |
| `limits` | [`SpanLimits`](#spanlimits) | `false` | No constraints. | Configure span limits. See also attribute_limits. |
| `sampler` | [`Sampler`](#sampler) | `false` | No constraints. | Configure the sampler.
If omitted, parent based sampler with a root of always_on is used.
|
| `tracer_configurator/development`
**WARNING:** This property is [experimental](README.md#experimental-features). | [`ExperimentalTracerConfigurator`](#experimentaltracerconfigurator) | `false` | No constraints. | Configure tracers.
|
diff --git a/scripts/generate-markdown.js b/scripts/generate-markdown.js
index 5bbc0bc5..d5f88d71 100644
--- a/scripts/generate-markdown.js
+++ b/scripts/generate-markdown.js
@@ -287,6 +287,8 @@ function resolveAndFormatConstraints(schema, linebreak) {
'maxContains',
'uniqueItems',
'const',
+ 'minItems',
+ 'maxItems',
// skip enum because we have special formatting for enum types
];