Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,6 @@
"json-schema/code-generation/from-enums",
"json-schema/code-generation/from-json"
]
},
{
"group": "Validation",
"pages": [
"json-schema/validation/data-validation",
"json-schema/validation/error-handling",
"json-schema/validation/version-features"
]
}
]
}
Expand Down
19 changes: 0 additions & 19 deletions docs/json-schema/advanced/conditional-validation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -628,22 +628,3 @@ $complexSchema = Schema::object('complex_validation')
Different validation rules for different API versions or client types.
</Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
<Card
title="Schema Definitions"
icon="bookmark"
href="/advanced/definitions-refs"
>
Learn to create reusable schema components for complex conditional logic
</Card>
<Card
title="Dependent Schemas"
icon="link"
href="/advanced/dependent-schemas"
>
Explore property-dependent validation in modern JSON Schema versions
</Card>
</CardGroup>
19 changes: 0 additions & 19 deletions docs/json-schema/advanced/definitions-refs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -539,22 +539,3 @@ $schema->addDefinition(
Reuse field validation patterns across different forms and input structures.
</Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
<Card
title="Conditional Validation"
icon="code-branch"
href="/advanced/conditional-validation"
>
Learn how to use definitions with conditional validation logic
</Card>
<Card
title="Code Generation"
icon="code"
href="/code-generation/from-classes"
>
Generate schemas with definitions from PHP classes
</Card>
</CardGroup>
19 changes: 0 additions & 19 deletions docs/json-schema/advanced/dependent-schemas.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -563,22 +563,3 @@ $schema->dependentSchemas([
Profile settings where enabled features require additional information.
</Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
<Card
title="Pattern Properties"
icon="regex"
href="/advanced/pattern-properties"
>
Learn about regex-based property validation patterns
</Card>
<Card
title="Conditional Validation"
icon="code-branch"
href="/advanced/conditional-validation"
>
Master if/then/else and other conditional validation techniques
</Card>
</CardGroup>
19 changes: 0 additions & 19 deletions docs/json-schema/advanced/pattern-properties.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -489,22 +489,3 @@ $schema->patternProperties([
Allow users to define custom fields that follow specific naming rules.
</Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
<Card
title="Object Schema"
icon="cube"
href="/schema-types/object"
>
Learn more about object validation and additional properties
</Card>
<Card
title="Code Generation"
icon="code"
href="/code-generation/from-classes"
>
Generate schemas with pattern properties from PHP classes
</Card>
</CardGroup>
19 changes: 0 additions & 19 deletions docs/json-schema/advanced/string-formats.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -211,22 +211,3 @@ $userProfileSchema->isValid($validProfile); // true
Validate formatted data during import processes with appropriate type checking.
</Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
<Card
title="String Schema"
icon="text"
href="/schema-types/string"
>
Learn more about string validation and pattern matching
</Card>
<Card
title="Validation Guide"
icon="check-circle"
href="/validation/data-validation"
>
Master data validation techniques and error handling
</Card>
</CardGroup>
19 changes: 0 additions & 19 deletions docs/json-schema/advanced/unevaluated-properties.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -423,22 +423,3 @@ $schema = Schema::object('strict_user', SchemaVersion::Draft_2019_09)
Validate data during migration with strict control over allowed properties and transformations.
</Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
<Card
title="Dependent Schemas"
icon="link"
href="/advanced/dependent-schemas"
>
Learn about property-dependent validation in modern JSON Schema
</Card>
<Card
title="Version Features"
icon="code-branch"
href="/validation/version-features"
>
Understand JSON Schema version compatibility and feature support
</Card>
</CardGroup>
19 changes: 0 additions & 19 deletions docs/json-schema/code-generation/from-classes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -512,22 +512,3 @@ Validation rules like minLength, pattern, format are not extracted from docblock
Generate schemas for application configuration classes.
</Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
<Card
title="From Closures"
icon="code"
href="/code-generation/from-closures"
>
Learn to generate schemas from function signatures
</Card>
<Card
title="From Enums"
icon="list-ul"
href="/code-generation/from-enums"
>
Generate validation schemas from PHP enums
</Card>
</CardGroup>
19 changes: 0 additions & 19 deletions docs/json-schema/code-generation/from-closures.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -473,22 +473,3 @@ function handleUserStuff($data, $action, $options = []) {}
Generate validation for configuration and setup functions.
</Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
<Card
title="From Enums"
icon="list-ul"
href="/code-generation/from-enums"
>
Generate validation schemas from PHP enums
</Card>
<Card
title="From JSON Schema"
icon="file-code"
href="/code-generation/from-json"
>
Import and work with existing JSON Schema definitions
</Card>
</CardGroup>
19 changes: 0 additions & 19 deletions docs/json-schema/code-generation/from-enums.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -635,22 +635,3 @@ try {
Generate client-side validation and form options from backend enums.
</Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
<Card
title="From JSON Schema"
icon="file-code"
href="/code-generation/from-json"
>
Import and work with existing JSON Schema definitions
</Card>
<Card
title="Data Validation"
icon="check-circle"
href="/validation/data-validation"
>
Learn advanced validation techniques for enum values
</Card>
</CardGroup>
136 changes: 0 additions & 136 deletions docs/json-schema/code-generation/from-json.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -237,123 +237,6 @@ $singleUserResponse = [
$apiSchema->isValid($singleUserResponse); // true
```

## Loading from Files

Load schemas from external files:

```php
/**
* Load schema from file
*/
function loadSchemaFromFile(string $filepath): Schema
{
if (!file_exists($filepath)) {
throw new InvalidArgumentException("Schema file not found: {$filepath}");
}

$content = file_get_contents($filepath);
$schemaData = json_decode($content, true);

if (json_last_error() !== JSON_ERROR_NONE) {
throw new InvalidArgumentException("Invalid JSON in schema file: " . json_last_error_msg());
}

return Schema::fromJson($schemaData);
}

// Usage
$userSchema = loadSchemaFromFile('schemas/user.json');
$productSchema = loadSchemaFromFile('schemas/product.json');
$orderSchema = loadSchemaFromFile('schemas/order.json');
```

## Best Practices

### 1. Validate JSON Before Import

```php
function safeJsonImport(string $jsonString): Schema
{
$data = json_decode($jsonString, true);

if (json_last_error() !== JSON_ERROR_NONE) {
throw new InvalidArgumentException(
"Invalid JSON: " . json_last_error_msg()
);
}

// Basic schema validation
if (!isset($data['type'])) {
throw new InvalidArgumentException("Schema must have a 'type' property");
}

return Schema::fromJson($data);
}
```

### 2. Handle Schema Dependencies

```php
function resolveSchemaReferences(array $schema, array $definitions = []): array
{
// Recursively resolve $ref properties
foreach ($schema as $key => $value) {
if ($key === '$ref' && is_string($value)) {
// Resolve reference to actual schema
$refPath = str_replace('#/definitions/', '', $value);
if (isset($definitions[$refPath])) {
return $definitions[$refPath];
}
} elseif (is_array($value)) {
$schema[$key] = resolveSchemaReferences($value, $definitions);
}
}

return $schema;
}
```

### 3. Version Compatibility Checking

```php
function checkVersionCompatibility(array $schema): void
{
$schemaVersion = $schema['$schema'] ?? '';

$supportedVersions = [
'http://json-schema.org/draft-07/schema#',
'https://json-schema.org/draft/2019-09/schema',
'https://json-schema.org/draft/2020-12/schema'
];

if ($schemaVersion && !in_array($schemaVersion, $supportedVersions)) {
throw new InvalidArgumentException(
"Unsupported schema version: {$schemaVersion}"
);
}
}
```

### 4. Schema Caching

```php
class CachedSchemaLoader
{
private array $cache = [];

public function load(string $filepath): Schema
{
$cacheKey = md5($filepath . filemtime($filepath));

if (!isset($this->cache[$cacheKey])) {
$this->cache[$cacheKey] = loadSchemaFromFile($filepath);
}

return $this->cache[$cacheKey];
}
}
```

## Common Use Cases

<CardGroup cols={2}>
Expand All @@ -370,22 +253,3 @@ class CachedSchemaLoader
Work with external JSON schemas from APIs, services, or documentation.
</Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
<Card
title="Data Validation"
icon="check-circle"
href="/validation/data-validation"
>
Learn to validate data with imported schemas
</Card>
<Card
title="Schema Factory"
icon="factory"
href="/api-reference/schema-factory"
>
Explore the complete Schema Factory API reference
</Card>
</CardGroup>
14 changes: 0 additions & 14 deletions docs/json-schema/installation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,9 @@ icon: 'terminal'

<Steps>
<Step title="Install via Composer">
Install the package using Composer with one of these commands:

```bash
composer require cortexphp/json-schema
```

<Check>
Verify the package was installed by running: `composer show cortexphp/json-schema`
</Check>
</Step>

<Step title="Set Default Version (Optional)">
Expand Down Expand Up @@ -72,11 +66,3 @@ If you're contributing to the package or want to run tests:
## Next Steps

Now that you have the package installed, you're ready to create your first JSON Schema:

<Card
title="Quick Start Guide"
icon="bolt"
href="/quickstart"
>
Learn how to create and validate schemas with practical examples
</Card>
Loading