JSON Schema

JSON Schema

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

4394ceb8b277f35ee3da7030384efb5d?s=128

David Bonilla

March 15, 2019
Tweet

Transcript

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

    empleo la gente que no busca empleo
  2. ¡Hola! I’m David I’m @david_bonilla I’m david@getmanfred.com

  3. ¿QUÉ?

  4. None
  5. 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
  6. None
  7. None
  8. None
  9. None
  10. ¿POR QUÉ?

  11. TBD HISTORIA

  12. EL MERCADO DE TALENTO TÉCNICO, RESUMIDO Oferta Demanda

  13. EL TRIANGULO DE LAS BERMUDAS DEL RECRUITING COMPAÑÍAS CANDIDATOS RECRUITERS

  14. 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
  15. None
  16. 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
  17. TBD HISTORIA

  18. ¿Y A MÍ QUÉ?

  19. TBD ¿POR QUÉ JSON SCHEMA?

  20. None
  21. ¿POR QUÉ JSON?

  22. None
  23. None
  24. Y LO SABES - VAS DE MODERNO

  25. 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…
  26. JSON SCHEMA / DESCRIPCIONES

  27. JSON SCHEMA / COMENTARIOS

  28. JSON SCHEMA / EJEMPLOS

  29. JSON SCHEMA / ENUMERACIONES

  30. JSON SCHEMA / EXPRESIONES REGULARES

  31. JSON SCHEMA / ARCHIVOS MULTIMEDIA

  32. JSON SCHEMA / VALORES POR DEFECTO

  33. None
  34. JSON SCHEMA / OR

  35. None
  36. JSON SCHEMA / OR LIKE A BOSS (XOR)

  37. None
  38. None
  39. JSON SCHEMA / IF/ELSE

  40. None
  41. 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.
  42. JSON SCHEMA - ORIENTADO A OBJETOS

  43. None
  44. JSON SCHEMA - ORIENTADO A OBJETOS - MULTIPLES FICHEROS

  45. JSON SCHEMA - ORIENTADO A OBJETOS - MULTIPLES FICHEROS

  46. None
  47. JSON SCHEMA / “HERENCIA” Y RECURSIVIDAD

  48. JSON SCHEMA / “HERENCIA” Y RECURSIVIDAD

  49. None
  50. ¿Y QUÉ?

  51. None
  52. None
  53. None
  54. None
  55. None
  56. None
  57. None
  58. None
  59. None
  60. 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...
  61. 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)
  62. 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
  63. 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)
  64. ¿Y AHORA QUÉ?

  65. None
  66. NON DAMOS FEITO

  67. NON DAMOS FEITO

  68. TODO EL MUNDO DEBERIA TENER EL DERECHO A ENCONTRAR UN

    TRABAJO QUE LE GUSTE
  69. ¡Gracias! Si quieres contactarme, aquí estoy: david@getmanfred.com Si quieres descargar

    esta charla, la tienes en http://bit.ly/json-schema
  70. 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/