Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Content #13

Open
60 tasks done
JeelRajodiya opened this issue May 13, 2024 · 1 comment
Open
60 tasks done

Content #13

JeelRajodiya opened this issue May 13, 2024 · 1 comment
Assignees
Labels
📝 Documentation Improvements or additions to documentation Priority: High After critical issues are fixed, these should be dealt with before any further issues. Status: Completed Nothing further to be done with this issue.
Milestone

Comments

@JeelRajodiya
Copy link
Member

JeelRajodiya commented May 13, 2024

The work is being done in the content branch

Things to keep in mind

  • Each step builds upon the previous one
  • The reader should not need to look ahead to find any unknown definitions, it should be covered or should be at least mentioned
  • Do not bore the reader, teach practical concepts first.
  • The steps should not be too long. They should be of appropriate length.
  • Use some contexts for teaching the schema - API Design, Aviation, Finance etc.
  • Make the starting steps of the chapter intriguing so the reader keeps reading
  • Add a chapter summary after in the last steps if necessary
  • Teach through complex examples

Topics to Cover

Note: This list will keep getting updated

Basics

  • 1. JSON Schema Syntax and Structure

Overview of Basic Types

  • 1. Boolean
  • 2. Numeric Type
  • 3. String
  • 4. Object
  • 5. Array
  • 6. Specifying Constant Values
  • 7. Null

Generic Keywords

  • 1. Defining Enumerated Values with enum Keyword
  • 2. type Keyword
  • 3. $schema keyword
  • 4. $id keyword

Strings

  • 1. Constraining the Length with minLength and maxLength
  • 2. Restricting String Values with enum
  • 3. Regular Expressions

Numeric Types

  • 1. Integer
  • 2. Number
  • 3. Using enum with Integers and Numbers
  • 4. Restricting a Number to be Multiples of a Given Number - multipleOf keyword
  • 5. exclusiveMinimum
  • 6. exclusiveMaximum
  • 7. minimum
  • 8. maximum

Arrays

  • 1. Specifying types for array Items
  • 2. Tuple Validation
  • 3. Unique Items
  • 4. Additional Items
  • 5. Unevaluated Items
  • 6. Using contains keyword
  • 7. Specifying Valid Array Items with enum
  • 8. minContains and maxContains
  • 9. Specifying the Length of an Array

Objects

  • 1. Creating Properties in Object
  • 2. Defining Pattern Properties
  • 3. Defining Required Properties
  • 4. minProperties and maxProperties
  • 6. Using The propertyNames Keyword
  • 7. Handling the Extra Stuff with additionalProperties
  • 8. Creating a Nested Data Structure
  • 9. Unevaluated Properties
  • 10. Extending closed schema

Combining Schemas and Types

  • 1. Defining Subschemas with $defs Keyword
  • 2. Add External References - $ref Keyword
  • 3. Check for Valid Against All Subschemas (AND) - allOf
  • 4. Check for Valid Against Any Subschemas (OR) - anyOf
  • 5. Check for Valid Against Exactly One Subschemas (XOR) - oneOf
  • 6. Check for Not Valid Against The Given Schemas (NOT) - not
  • 7. Defining one property with multiple possible types using - source
  • 8. Recursive schemas

Conditional Validation

  • 1. Conditionally Requiring Certain Properties to be Present - dependentRequired
  • 2. Creating Dependent Schemas
  • 3. If-Then-Else
  • 4. Defining implications (A → B)

Annotating with JSON Schema

  • 1. title and description keyword
  • 2. Adding Comments with $comment Keyword
  • 3. Using the default Keyword
  • 4. Using the examples Keyword
  • 5. Using the deprecated Keyword
  • 6. readOnly and writeOnly Properties in Objects
  • 7. Format Keyword in Strings
@JeelRajodiya JeelRajodiya added the 📝 Documentation Improvements or additions to documentation label May 13, 2024
@JeelRajodiya JeelRajodiya self-assigned this May 13, 2024
@JeelRajodiya JeelRajodiya added this to the Content milestone May 13, 2024
@JeelRajodiya JeelRajodiya added Status: In Progress This issue is being worked on, and has someone assigned. Status: On Hold Similar to blocked, but is assigned to someone. and removed Status: In Progress This issue is being worked on, and has someone assigned. Status: On Hold Similar to blocked, but is assigned to someone. labels May 15, 2024
@JeelRajodiya JeelRajodiya added the Priority: High After critical issues are fixed, these should be dealt with before any further issues. label May 25, 2024
@JeelRajodiya JeelRajodiya pinned this issue May 26, 2024
@JeelRajodiya JeelRajodiya added Status: On Hold Similar to blocked, but is assigned to someone. and removed Status: In Progress This issue is being worked on, and has someone assigned. labels Jun 18, 2024
@JeelRajodiya JeelRajodiya added Status: In Progress This issue is being worked on, and has someone assigned. and removed Status: On Hold Similar to blocked, but is assigned to someone. labels Jul 12, 2024
@JeelRajodiya JeelRajodiya added Status: Completed Nothing further to be done with this issue. and removed Status: In Progress This issue is being worked on, and has someone assigned. labels Jul 31, 2024
@JeelRajodiya JeelRajodiya unpinned this issue Aug 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📝 Documentation Improvements or additions to documentation Priority: High After critical issues are fixed, these should be dealt with before any further issues. Status: Completed Nothing further to be done with this issue.
Projects
None yet
Development

No branches or pull requests

1 participant