# no-required-schema-properties-undefined

Ensures there are no required schema properties that are undefined.

| OAS | Compatibility |
|  --- | --- |
| 2.0 | ✅ |
| 3.0 | ✅ |
| 3.1 | ✅ |
| 3.2 | ✅ |


| AsyncAPI | Compatibility |
|  --- | --- |
| 2.6 | ✅ |
| 3.0 | ✅ |



```mermaid
flowchart TD

Root ==> Components ==> Schemas

style Schemas fill:#codaf9,stroke:#0044d4,stroke-width:5px
```

| Arazzo | Compatibility |
|  --- | --- |
| 1.0 | ✅ |


## API design principles

If a required schema property is declared but not defined, this rule informs you which of the required schema properties are missing.

## Configuration

| Option | Type | Description |
|  --- | --- | --- |
| severity | string | Possible values: `off`, `warn`, `error`. Default `warn` (in `recommended` configuration). |


An example configuration:


```yaml
rules:
  no-required-schema-properties-undefined: error
```

## Examples

Given this configuration:


```yaml
rules:
  no-required-schema-properties-undefined: error
```

Example of **incorrect** schema properties:


```yaml
schemas:
  Pet:
    type: object
    required:
      - id
      - name
    properties:
      id:
        type: integer
        format: int64
```

Expected error message when linting incorrect schema example:


```bash
Required property 'name' is undefined.
```

Example of **correct** schema properties:


```yaml
schemas:
  Pet:
    type: object
    required:
      - id
      - name
    properties:
      id:
        type: integer
        format: int64
      name:
        type: string
        example: doggie
```

The rule is case-sensitive, which means a property `name` does not match the string `Name` in the `required` list:


```yaml
schemas:
  Pet:
    type: object
    properties:
      name:
        type: string
    required:
      - Name
```

The rule also accepts composed types as **correct**.


```yaml
schemas:
  Pet:
    type: object
    anyOf:
      - required:
        - id
      - required:
        - name
    properties:
      id:
        type: integer
        format: int64
      name:
        type: string
        example: doggie
```

## Related rules

- [no-schema-type-mismatch](/docs/cli/rules/common/no-schema-type-mismatch)
- [no-enum-type-mismatch](/docs/cli/rules/common/no-enum-type-mismatch)
- [no-mixed-number-range-constraints](/docs/cli/rules/common/no-mixed-number-range-constraints)
- [no-invalid-schema-examples](/docs/cli/rules/oas/no-invalid-schema-examples)


## Resources

- [Rule source](https://github.com/Redocly/redocly-cli/blob/main/packages/core/src/rules/common/no-required-schema-properties-undefined.ts)
- [Schema docs](https://redocly.com/docs/openapi-visual-reference/schemas/)