Internet DRAFT - draft-saintandre-json-namespaces

draft-saintandre-json-namespaces






Network Working Group                                     P. Saint-Andre
Internet-Draft                                             J. Hildebrand
Intended status: Informational                                 M. Miller
Expires: April 26, 2012                                            Cisco
                                                        October 24, 2011


              JavaScript Object Notation (JSON) Namespaces
                  draft-saintandre-json-namespaces-00

Abstract

   This document defines a convention for namespaced variable names in
   JavaScript Object Notation (JSON) data.

Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 26, 2012.

Copyright Notice

   Copyright (c) 2011 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.





Saint-Andre, et al.      Expires April 26, 2012                 [Page 1]

Internet-Draft               JSON Namespaces                October 2011


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 3
   2.  Namespace Convention  . . . . . . . . . . . . . . . . . . . . . 3
   3.  When and How to Use JSON Namespaces . . . . . . . . . . . . . . 3
   4.  Security Considerations . . . . . . . . . . . . . . . . . . . . 4
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 4
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . . . 4
     6.1.  Normative References  . . . . . . . . . . . . . . . . . . . 4
     6.2.  Informative References  . . . . . . . . . . . . . . . . . . 4
   Appendix A.  Acknowledgements . . . . . . . . . . . . . . . . . . . 5
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . . . 5







































Saint-Andre, et al.      Expires April 26, 2012                 [Page 2]

Internet-Draft               JSON Namespaces                October 2011


1.  Introduction

   JavaScript Object Notation [JSON] is a text format for the
   serialization of structured data, derived from the object literals of
   the JavaScript programming language.  Unlike the Extensible Markup
   Language [XML], JSON does not provide methods for qualifying variable
   names, as XML does for elements and attributes [XML-NAMES].  However,
   in certain circumstances such namespaces can be useful.  Therefore,
   this document defines a convention for namespaced variable names in
   JSON data.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   [RFC2119].

   Feedback is welcome on the apps-discuss@ietf.org mailing list.


2.  Namespace Convention

   Various approaches have been proposed to namespaces (or "distributed
   extensibility") in JSON, from a centralized registry of variable
   names to prefixing with the "reverse domain name" of the namespace
   owner (e.g., "com.example.foo").  All of these approaches are
   preferable to use of the "x-" prefix [XDASH] or a similar
   construction, since they provides attribution and traceability for
   each namespace.  The convention described here follows "Clark
   Notation" [CLARK] by preceding a variable name with a Uniform
   Resource Identifier [URI] enclosed in curly brackets ('{' and '}').
   The use of URIs provides improved re-use of data models across
   existing representations, especially with XML when qualified by XML
   namespaces.

   In JSON, a variable name that is namespaced in this way is the
   "string" production when appearing as the first part of the "member"
   production, as those productions are defined in [JSON].  An example
   follows.

        {http://example.com/foo}bar

   Namespace names MUST NOT include the characters '{' and '}'.


3.  When and How to Use JSON Namespaces

   The convention described here is not intended for use in "standalone"
   JSON objects, especially those defined by a JSON schema



Saint-Andre, et al.      Expires April 26, 2012                 [Page 3]

Internet-Draft               JSON Namespaces                October 2011


   [JSON-SCHEMA].  Instead, it is intended for use when a particular
   variable is likely to be re-used or interleaved within data that
   represents other JSON objects.  The following example shows a
   namespaced variable name used within an OAuth access token [OAUTH].

        {
          "access_token":"2YotnFZFEjr1zCsicMWpAA",
          "token_type":"example",
          "expires_in":3600,
          "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
          "{http://example.com/foo}bar":"baz"
        }

   Namespaces MUST NOT be used for core JSON attributes (such as 'char'
   and 'number').

   An application MUST ignore namespaced variables that it does not
   understand, where by "ignore" is meant "discard the data without
   acting upon it or returning an error to the sender".


4.  Security Considerations

   This convention introduces no security concerns beyond those
   described in [JSON].


5.  IANA Considerations

   This document requests no actions of the IANA.


6.  References

6.1.  Normative References

   [JSON]     Crockford, D., "The application/json Media Type for
              JavaScript Object Notation (JSON)", RFC 4627, July 2006.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

6.2.  Informative References

   [CLARK]    Clark, J., "Clark Notation", February 1999,
              <http://www.jclark.com/xml/xmlns.htm>.

   [JSON-SCHEMA]



Saint-Andre, et al.      Expires April 26, 2012                 [Page 4]

Internet-Draft               JSON Namespaces                October 2011


              Zyp, K. and G. Court, "A JSON Media Type for Describing
              the Structure and Meaning of JSON Documents",
              draft-zyp-json-schema-03 (work in progress),
              November 2010.

   [OAUTH]    Hammer-Lahav, E., Recordon, D., and D. Hardt, "The OAuth
              2.0 Authorization Protocol", draft-ietf-oauth-v2-22 (work
              in progress), September 2011.

   [URI]      Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
              Resource Identifier (URI): Generic Syntax", STD 66,
              RFC 3986, January 2005.

   [XDASH]    Saint-Andre, P., Crocker, D., and M. Nottingham,
              "Deprecating Use of the "X-" Prefix in Application
              Protocols", draft-ietf-appsawg-xdash-02 (work in
              progress), October 2011.

   [XML]      Maler, E., Yergeau, F., Sperberg-McQueen, C., Paoli, J.,
              and T. Bray, "Extensible Markup Language (XML) 1.0 (Fifth
              Edition)", World Wide Web Consortium Recommendation REC-
              xml-20081126, November 2008,
              <http://www.w3.org/TR/2008/REC-xml-20081126>.

   [XML-NAMES]
              Thompson, H., Hollander, D., Layman, A., Bray, T., and R.
              Tobin, "Namespaces in XML 1.0 (Third Edition)", World Wide
              Web Consortium Recommendation REC-xml-names-20091208,
              December 2009,
              <http://www.w3.org/TR/2009/REC-xml-names-20091208>.


Appendix A.  Acknowledgements

   This document has benefited from texts about distributed
   extensibility posted on the Internet by David Baron, Tim Bray, James
   Clark, Yaron Goland, Joe Gregoria, Mike Hanson, Jack Moffitt, Mark
   Nottingham, and Simon St. Laurent.













Saint-Andre, et al.      Expires April 26, 2012                 [Page 5]

Internet-Draft               JSON Namespaces                October 2011


Authors' Addresses

   Peter Saint-Andre
   Cisco
   1899 Wynkoop Street, Suite 600
   Denver, CO  80202
   USA

   Phone: +1-303-308-3282
   Email: psaintan@cisco.com


   Joe Hildebrand
   Cisco
   1899 Wynkoop Street, Suite 600
   Denver, CO  80202
   USA

   Email: jhildebr@cisco.com


   Matt Miller
   Cisco
   1899 Wynkoop Street, Suite 600
   Denver, CO  80202
   USA

   Phone: +1-303-308-3282
   Email: mamille2@cisco.com






















Saint-Andre, et al.      Expires April 26, 2012                 [Page 6]