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

    View Slide

  2. ¡Hola!
    I’m David
    I’m @david_bonilla
    I’m [email protected]

    View Slide

  3. ¿QUÉ?

    View Slide

  4. View Slide

  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

    View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. ¿POR
    QUÉ?

    View Slide

  11. TBD
    HISTORIA

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  15. View Slide

  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

    View Slide

  17. TBD
    HISTORIA

    View Slide

  18. ¿Y A MÍ
    QUÉ?

    View Slide

  19. TBD
    ¿POR QUÉ JSON SCHEMA?

    View Slide

  20. View Slide

  21. ¿POR QUÉ
    JSON?

    View Slide

  22. View Slide

  23. View Slide

  24. Y LO
    SABES
    -
    VAS DE MODERNO

    View Slide

  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…

    View Slide

  26. JSON SCHEMA / DESCRIPCIONES

    View Slide

  27. JSON SCHEMA / COMENTARIOS

    View Slide

  28. JSON SCHEMA / EJEMPLOS

    View Slide

  29. JSON SCHEMA / ENUMERACIONES

    View Slide

  30. JSON SCHEMA / EXPRESIONES REGULARES

    View Slide

  31. JSON SCHEMA / ARCHIVOS MULTIMEDIA

    View Slide

  32. JSON SCHEMA / VALORES POR DEFECTO

    View Slide

  33. View Slide

  34. JSON SCHEMA / OR

    View Slide

  35. View Slide

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

    View Slide

  37. View Slide

  38. View Slide

  39. JSON SCHEMA / IF/ELSE

    View Slide

  40. View Slide

  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.

    View Slide

  42. JSON SCHEMA - ORIENTADO A OBJETOS

    View Slide

  43. View Slide

  44. JSON SCHEMA - ORIENTADO A OBJETOS - MULTIPLES FICHEROS

    View Slide

  45. JSON SCHEMA - ORIENTADO A OBJETOS - MULTIPLES FICHEROS

    View Slide

  46. View Slide

  47. JSON SCHEMA / “HERENCIA” Y RECURSIVIDAD

    View Slide

  48. JSON SCHEMA / “HERENCIA” Y RECURSIVIDAD

    View Slide

  49. View Slide

  50. ¿Y QUÉ?

    View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. View Slide

  56. View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  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...

    View Slide

  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)

    View Slide

  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

    View Slide

  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)

    View Slide

  64. ¿Y AHORA
    QUÉ?

    View Slide

  65. View Slide

  66. NON DAMOS FEITO

    View Slide

  67. NON DAMOS FEITO

    View Slide

  68. TODO EL MUNDO DEBERIA TENER
    EL DERECHO A ENCONTRAR
    UN TRABAJO QUE LE GUSTE

    View Slide

  69. ¡Gracias!
    Si quieres contactarme, aquí estoy:
    [email protected]
    Si quieres descargar esta charla, la tienes en
    http://bit.ly/json-schema

    View Slide

  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/

    View Slide