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 full-size slide

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

    View full-size slide

  3. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  6. 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 full-size slide

  7. 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 full-size slide

  8. ¿Y A MÍ
    QUÉ?

    View full-size slide

  9. TBD
    ¿POR QUÉ JSON SCHEMA?

    View full-size slide

  10. ¿POR QUÉ
    JSON?

    View full-size slide

  11. Y LO
    SABES
    -
    VAS DE MODERNO

    View full-size slide

  12. 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 full-size slide

  13. JSON SCHEMA / DESCRIPCIONES

    View full-size slide

  14. JSON SCHEMA / COMENTARIOS

    View full-size slide

  15. JSON SCHEMA / EJEMPLOS

    View full-size slide

  16. JSON SCHEMA / ENUMERACIONES

    View full-size slide

  17. JSON SCHEMA / EXPRESIONES REGULARES

    View full-size slide

  18. JSON SCHEMA / ARCHIVOS MULTIMEDIA

    View full-size slide

  19. JSON SCHEMA / VALORES POR DEFECTO

    View full-size slide

  20. JSON SCHEMA / OR

    View full-size slide

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

    View full-size slide

  22. JSON SCHEMA / IF/ELSE

    View full-size slide

  23. 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 full-size slide

  24. JSON SCHEMA - ORIENTADO A OBJETOS

    View full-size slide

  25. JSON SCHEMA - ORIENTADO A OBJETOS - MULTIPLES FICHEROS

    View full-size slide

  26. JSON SCHEMA - ORIENTADO A OBJETOS - MULTIPLES FICHEROS

    View full-size slide

  27. JSON SCHEMA / “HERENCIA” Y RECURSIVIDAD

    View full-size slide

  28. JSON SCHEMA / “HERENCIA” Y RECURSIVIDAD

    View full-size slide

  29. 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 full-size slide

  30. 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 full-size slide

  31. 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 full-size slide

  32. 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 full-size slide

  33. ¿Y AHORA
    QUÉ?

    View full-size slide

  34. NON DAMOS FEITO

    View full-size slide

  35. NON DAMOS FEITO

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  38. 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 full-size slide