---
title: "#json-schema articles | Hashnode"
description: "Explore 81 articles tagged #json-schema on Hashnode. Tutorials, guides, and how-tos from the community."
url: "https://hashnode.com/tag/json-schema"
---

Tag

# #json-schema

81 posts · 28 followers

[Jay Moo](https://hashnode.com/@jaymoorecordnotes) · [Oct 26](https://hashnode.com/posts/null-is-a-missing-measurement-not-a-zero-designing-an-evidence-record/6adf8373ced913dfcfc6f634)

### [Null is a missing measurement, not a zero: designing an evidence record](https://jaymoo-record-engineering.hashnode.dev/null-is-a-missing-measurement-not-a-zero-designing-an-evidence-record?utm_source=hashnode&utm_medium=feed)

Design a measurement record that keeps unknown values explicit, checks structure, and separates schema validation from human evidence review.

4 min read · [jaymoo-record-engineering.hashnode.dev](https://jaymoo-record-engineering.hashnode.dev/null-is-a-missing-measurement-not-a-zero-designing-an-evidence-record?utm_source=hashnode&utm_medium=feed)

[Powerduck](https://hashnode.com/@powerduck) · [Oct 8](https://hashnode.com/posts/openapi-date-time-timezone-duration-formats/6aca0781699990d79ccda186)

### [Dates, times, and time zones in OpenAPI: date-time, date, duration, and the timezone mistakes that shift bookings](https://blogs.powerduck.com/openapi-date-time-timezone-duration-formats?utm_source=hashnode&utm_medium=feed)

A timestamp with no offset is ambiguous, a calendar date is not a timestamp, and a duration is not a number of days. Teams conflate all three and silently shift reservations across time zones. Here is the RFC 3339 decision table, when to send an IANA zone versus an offset, and ho

6 min read · [blogs.powerduck.com](https://blogs.powerduck.com/openapi-date-time-timezone-duration-formats?utm_source=hashnode&utm_medium=feed)

[Powerduck](https://hashnode.com/@powerduck) · [Oct 8](https://hashnode.com/posts/openapi-additionalproperties-freeform-objects-maps/6aca078c50151a1896677e1a)

### [OpenAPI additionalProperties: modeling maps, dictionaries, labels, and free-form objects without losing types](https://blogs.powerduck.com/openapi-additionalproperties-freeform-objects-maps?utm_source=hashnode&utm_medium=feed)

A JSON object is sometimes a fixed record, sometimes a Map&lt;string, T&gt; of arbitrary keys, and sometimes genuinely free-form. Use additionalProperties for dictionaries, properties plus additionalProperties:false for strict records, and an empty object for anything-goes payloa

6 min read · [blogs.powerduck.com](https://blogs.powerduck.com/openapi-additionalproperties-freeform-objects-maps?utm_source=hashnode&utm_medium=feed)

[Powerduck](https://hashnode.com/@powerduck) · [Oct 8](https://hashnode.com/posts/openapi-recursive-cyclic-schema-refs/6aca07926c2d4303c9d9882a)

### [Recursive and cyclic schemas in OpenAPI: self-referencing $ref for trees, nested comments, and graphs](https://blogs.powerduck.com/openapi-recursive-cyclic-schema-refs?utm_source=hashnode&utm_medium=feed)

Categories contain children, comments have replies, and org charts nest forever. Model these with a self-referencing $ref and generated clients produce recursive types that compile; inline the shape and codegen either loops or flattens it. Here is how to model trees, nullable chi

6 min read · [blogs.powerduck.com](https://blogs.powerduck.com/openapi-recursive-cyclic-schema-refs?utm_source=hashnode&utm_medium=feed)

[Powerduck](https://hashnode.com/@powerduck) · [Oct 8](https://hashnode.com/posts/openapi-enum-const-closed-open-ended/6aca07956ef8eab2379c9d68)

### [OpenAPI enums vs const: closed lists, open-ended strings, and how to add a value without breaking clients](https://blogs.powerduck.com/openapi-enum-const-closed-open-ended?utm_source=hashnode&utm_medium=feed)

An enum is a promise the server only accepts those values; a const is one fixed value; an open string accepts anything. Teams blur the three and ship a breaking change every time they add an option. Here is the decision table, extensible enums, and what codegen and AI callers do

6 min read · [blogs.powerduck.com](https://blogs.powerduck.com/openapi-enum-const-closed-open-ended?utm_source=hashnode&utm_medium=feed)

[Powerduck](https://hashnode.com/@powerduck) · [Oct 7](https://hashnode.com/posts/openapi-nullable-optional-omitted-missing-data-3-1/6aca079a699990d79ccdb58b)

### [Optional, nullable, or omitted? Modeling missing data in OpenAPI 3.1 without lying to clients](https://blogs.powerduck.com/openapi-nullable-optional-omitted-missing-data-3-1?utm_source=hashnode&utm_medium=feed)

Optional, nullable, and omitted are three different facts most specs collapse into one. A field can be required yet nullable, optional but never null, or an array empty rather than absent. Here is the 3.1 decision table, and why one non-null sample never proves non-nullability.

7 min read · [blogs.powerduck.com](https://blogs.powerduck.com/openapi-nullable-optional-omitted-missing-data-3-1?utm_source=hashnode&utm_medium=feed)

[Powerduck](https://hashnode.com/@powerduck) · [Oct 7](https://hashnode.com/posts/openapi-json-schema-formats-constraints-codegen-mocks/6aca079ca1275270452d8331)

### [The JSON Schema constraints that actually work in OpenAPI: format, pattern, ranges, and what codegen and AI mocks do with them](https://blogs.powerduck.com/openapi-json-schema-formats-constraints-codegen-mocks?utm_source=hashnode&utm_medium=feed)

Which JSON Schema keywords become types, which are enforced at runtime, and which are only annotations? Here is how format, pattern, ranges, required, and nullability flow into codegen, validators, mocks, and AI-generated test data.

7 min read · [blogs.powerduck.com](https://blogs.powerduck.com/openapi-json-schema-formats-constraints-codegen-mocks?utm_source=hashnode&utm_medium=feed)

[Powerduck](https://hashnode.com/@powerduck) · [Oct 7](https://hashnode.com/posts/openapi-oneof-anyof-allof-discriminator-polymorphism/6aca07ac1e11c1462ab8952a)

### [Model polymorphism in OpenAPI 3.1: oneOf, anyOf, allOf, and discriminator without breaking clients](https://blogs.powerduck.com/openapi-oneof-anyof-allof-discriminator-polymorphism?utm_source=hashnode&utm_medium=feed)

A payment can be a card, a bank transfer, or a wallet. Model that as a loose anyOf and generated clients fall back to any; model it as oneOf with a discriminator and you get a tagged union a compiler can narrow. Here is when each keyword applies and how to keep codegen, mocks, an

6 min read · [blogs.powerduck.com](https://blogs.powerduck.com/openapi-oneof-anyof-allof-discriminator-polymorphism?utm_source=hashnode&utm_medium=feed)

[Powerduck](https://hashnode.com/@powerduck) · [Oct 6](https://hashnode.com/posts/reusable-json-schema-components-openapi-ref/6aca0818645a621880c29685)

### [Reusable JSON Schema components in OpenAPI: DRY models without $ref spaghetti](https://blogs.powerduck.com/reusable-json-schema-components-openapi-ref?utm_source=hashnode&utm_medium=feed)

Inline every schema and your request and response models drift apart. Extract everything and the document becomes a maze of one-off references. The middle path is a small set of rules for what becomes a component, what stays inline, and how to name and compose it.

6 min read · [blogs.powerduck.com](https://blogs.powerduck.com/reusable-json-schema-components-openapi-ref?utm_source=hashnode&utm_medium=feed)

[Powerduck](https://hashnode.com/@powerduck) · [Oct 5](https://hashnode.com/posts/llm-structured-outputs-json-schema-tool-calling/6aca08156f9455409fcdfef8)

### [LLM Structured Outputs and JSON Schema: Tool Calling That Never Drifts](https://blogs.powerduck.com/llm-structured-outputs-json-schema-tool-calling?utm_source=hashnode&utm_medium=feed)

Free-form tool arguments are where agent workflows break: the model invents fields, sends numbers as strings, and omits required values. Structured outputs backed by strict JSON Schema make tool calls deterministic, and most of that schema already exists in your OpenAPI component

6 min read · [blogs.powerduck.com](https://blogs.powerduck.com/llm-structured-outputs-json-schema-tool-calling?utm_source=hashnode&utm_medium=feed)
