Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JSON Schema

JSON Schema

How to use JSON Schema to establish a contract between a service provider and the consumers (humans or not)

David Bonilla

March 15, 2019
Tweet

More Decks by David Bonilla

Other Decks in Programming

Transcript

  1. JSON Schema A TOPE DE POWER El lugar donde busca

    empleo la gente que no busca empleo
  2. JSON SCHEMA / CHEATSHEET TIPOS DE DATOS ‣ "string": “Hola

    Mundo" ‣ "number": 2.23 ‣ "integer": 223 1.2e10 ‣ "boolean": true ‣ "object": {"foo":"bar", “saludo":"Hola Mundo"} ‣ "array": ["foo","bar", 7,”hola"] ‣ "null": null PALABRAS RESERVADAS ‣ id ‣ description ‣ default ‣ patternProperties ‣ dependencies ‣ extends ‣ $ref ‣ $schema ‣ allOf, anyOf, oneOf FUNCIONALIDADES ‣ string + number + integer - enum: [...] - format: date-time, email, hostname, ipv4, ipv6, uri ‣ string - minLength, maxLength - pattern: regex ‣ number + integer - minimum, maximum - exclusiveMinimum, exclusiveMaximum - multipleOf ‣ array - items - minItems, maxItems - uniqueItems: obliga a valores únicos - additionalItems: si true, siempre se valida ‣ object - properties - minProperties, maxProperties - patternProperties: regex properties - additionalProperties: si true, siempre se valida - required
  3. Manfred Roadmap We charge to the companies but we work

    for the candidates SERVICE PRODUCT INVERSE RECRUITING (MVP) MEDIA (SCALED SOURCING) MANFRED APP (PROFILING) TRANSACTIONAL PLATFORM
  4. MANFRED AWESOMIC CV (MAC) INTRO PROFESSIONAL GOALS TRANSPORTABLE SKILLS SIGNIFICATIVE

    SIGNIFICATIVE EDUCATION LANGUAGES MISCELLANY EXPERIENCE 1 EXPERIENCE N … QUESTION 1 QUESTION N … COMPANY 1 ROL 1..N CHALLENGE 1…N ACTION 1..N COMPANY N … REFERENCES 1…N
  5. JSON SCHEMA / VENTAJAS (PARA NOSOTROS) ‣ OPEN-SOURCE: Alineado con

    nuestra estrategia. ‣ MISMA SINTAXIS: Permite mantener todo nuestra stack con una sola sintaxis/lenguaje. ‣ MUY EXPRESIVO: los esquemas son auto-explicativos ‣ SOPORTE DE LA INDUSTRIA: Uso extendido a Google, OpenAPI, AsyncAPI, Mongo…
  6. JSON SCHEMA / WHILE/FOR ‣ PRE-PROCESO DE SCHEMA: Para limitar

    de forma dinámica el tamaño de un array. ‣ $DATA: Una propuesta para poder usar valores referenciados.
  7. JSON SCHEMA / CASOS DE ÉXITO ‣ Documentación (API docs

    y guías generados automáticamente por el CI) ‣ Comunicación (entre equipos durante el diseño) ‣ Testing (del cumplimiento de los contratos) USO ‣ 250 schemas (multiples versiones/evoluciones) ‣ 250 validaciones por día (el CI trabaja mucho) ‣ Ruby, Elixir, Go, Scala, Javascript, Swift, Kotlin, Python...
  8. JSON SCHEMA / CASOS DE ÉXITO ‣ Generación de Documentación

    de APIs (directamente con el Schema que las define) ‣ Generación dinámica de clientes para lenguajes como Go o Ruby (usando herramientas open-source como Prmd o Heroics. ‣ Validación de request y responses de distintas APIs (externas e internas)
  9. JSON SCHEMA / CASOS DE ÉXITO ‣ Definición de especificación

    para describir y documentar APIs asíncronas (como OpenAPI pero para servicios de mensajeria) ‣ Generación de código ‣ Generación de documentación de forma automática
  10. JSON SCHEMA / CASOS DE ÉXITO API Discovery Service ‣

    Directorio de APIs (todas las APIs ofrecidas por Google) ‣ Descripción de servicios ofrecidos por cada API (métodos y datos esperados/ servidos) ‣ Documentación de scopes Oauth (identifica los contextos de Oauth disponibles) ‣ Documentación Inline (usan los schemas para documentar que hace cada API además de definir la estructura de la misma y sus métodos) USO ‣ Clientes nativos en 10 lenguajes (JAVA, .NET, Python, Ruby…) ‣ Google API Explorer (herramienta web interactiva para explorar las distintas APIs de Google)
  11. Links • MAC Repo:https://www.workable.com/ultimate-job-posting-guide • Adalab Manfred Public Repo: https://github.com/Adalab/easley-s4-manfred

    • JSON Spec: https://www.json.org/ • JSON Schema Getting Started: https://json-schema.org/learn/getting-started-step-by-step.html • Understanding JSON Schema: https://json-schema.org/understanding-json-schema/index.html • Another JSON Validator: https://github.com/jessedc/ajv-cli • JSON Online Editor: https://rawgit.com/json-editor/json-editor/master/docs/demo.html • Regular Expressions Library: http://regexlib.com/ • Regular Expressions Sandbox: https://regexr.com/ • Base64 Online Converter: https://www.base64-image.de/ • $DATA Proposal: https://github.com/json-schema-org/json-schema-spec/issues/51 • Elegant APIs with JSON Schema: https://www.brandur.org/elegant-apis • AsyncAPI: https://www.asyncapi.com/ • JSONResume: https://jsonresume.org/