{"id":3196,"date":"2018-09-05T20:38:56","date_gmt":"2018-09-06T00:38:56","guid":{"rendered":"https:\/\/2018.nyc.wordcamp.org\/?post_type=wcb_session&#038;p=3196"},"modified":"2018-09-15T13:13:03","modified_gmt":"2018-09-15T17:13:03","slug":"schema-driven-interfaces","status":"publish","type":"wcb_session","link":"https:\/\/nyc.wordcamp.org\/2018\/session\/schema-driven-interfaces\/","title":{"rendered":"Schema Driven Interfaces"},"content":{"rendered":"<p>When building JavaScript based interfaces, it can be difficult to keep validation, permissions, extensibility and language in-sync between the JS front-end and the PHP back-end. In this talk, we&#8217;ll explore using JSON Schema and HATEOAS concepts to build a configuration driven interface.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When building JavaScript based interfaces, it can be difficult to keep validation, permissions, extensibility and language in-sync between the JS front-end and the PHP back-end. In this talk, we&#8217;ll explore using JSON Schema and HATEOAS concepts to build a configuration driven interface.<\/p>\n","protected":false},"author":8844224,"featured_media":0,"template":"","meta":{"jetpack_post_was_ever_published":false,"_wcpt_session_time":1537119000,"_wcpt_session_duration":3000,"_wcpt_session_type":"session","_wcpt_session_slides":"","_wcpt_session_video":"","_wcpt_speaker_id":[2517],"footnotes":""},"session_track":[5041,174416],"session_category":[5041],"class_list":["post-3196","wcb_session","type-wcb_session","status-publish","hentry","wcb_track-developer","wcb_track-room-3","wcb_session_category-developer"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9CHop-Py","session_date_time":{"date":"September 16, 2018","time":"1:30 pm"},"session_speakers":[{"id":"2517","slug":"timothy-jacobs","name":"Timothy Jacobs","link":"https:\/\/nyc.wordcamp.org\/2018\/speaker\/timothy-jacobs\/"}],"session_cats_rendered":"Developer","_links":{"self":[{"href":"https:\/\/nyc.wordcamp.org\/2018\/wp-json\/wp\/v2\/sessions\/3196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nyc.wordcamp.org\/2018\/wp-json\/wp\/v2\/sessions"}],"about":[{"href":"https:\/\/nyc.wordcamp.org\/2018\/wp-json\/wp\/v2\/types\/wcb_session"}],"version-history":[{"count":1,"href":"https:\/\/nyc.wordcamp.org\/2018\/wp-json\/wp\/v2\/sessions\/3196\/revisions"}],"predecessor-version":[{"id":3197,"href":"https:\/\/nyc.wordcamp.org\/2018\/wp-json\/wp\/v2\/sessions\/3196\/revisions\/3197"}],"speakers":[{"embeddable":true,"href":"https:\/\/nyc.wordcamp.org\/2018\/wp-json\/wp\/v2\/speakers\/2517"}],"author":[{"embeddable":true,"href":"https:\/\/nyc.wordcamp.org\/2018\/wp-json\/wporg\/v1\/users\/timothybjacobs"}],"wp:attachment":[{"href":"https:\/\/nyc.wordcamp.org\/2018\/wp-json\/wp\/v2\/media?parent=3196"}],"wp:term":[{"taxonomy":"wcb_track","embeddable":true,"href":"https:\/\/nyc.wordcamp.org\/2018\/wp-json\/wp\/v2\/session_track?post=3196"},{"taxonomy":"wcb_session_category","embeddable":true,"href":"https:\/\/nyc.wordcamp.org\/2018\/wp-json\/wp\/v2\/session_category?post=3196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}