ETSI M2M application developers guideline



Similar documents
OVERVIEW OF ETSI M2M ARCHITECTURE Presented by: Barbara Pareglio, Ericsson. ETSI All rights reserved

TECHNICAL REPORT onem2m; Application Developer Guide (onem2m TR-0025 version Release 1)

Yassine Banouar Thierry Monteil Mahdi Ben Alaya Christophe Chassot Khalil Drira

IoT Data Management (IoTDM) Supported onem2m functionalities. Table of Contents

OpenMTC. M2M Solutions for Smart Cities and the Internet of Things.

This Specification is provided for future development work within onem2m only. The Partners accept no liability for any use of this Specification.

3GPP TS V8.1.0 ( )

M2M Service Architecture: Delivering M2M Services Over Heterogeneous Networks

! Context: IoT, CPS and M2M! Challenges in M2M! Evolutionary M2M the FiDM way! Focus on: ! Conclusion 2

ETSI M2M / onem2m and the need for semantics. Joerg Swetina (NEC) (joerg.swetina@neclab.eu)

Request for Comments: August 2006

ETSI TS V8.4.0 ( )

Conferencing Using the IP Multimedia (IM) Core Network (CN) Subsystem

Standardized Machine-to-Machine (M2M) Software Development Platform

ONEM2M SERVICE LAYER PLATFORM

Grandstream Networks, Inc. GXP2130/2140/2160 Auto-configuration Plug and Play

SmartSantander Open Data access using FI-WARE G.E. [ORION]

SmartTV User Interface Development for SmartTV using Web technology and CEA2014. George Sarosi

Location in SIP/IP Core (LOCSIP)

C05 Discovery of Enterprise zsystems Assets for API Management

Common definitions and specifications for OMA REST interfaces

MASHUPS FOR THE INTERNET OF THINGS

IP Phone Presence Setup

Web. Services. Web Technologies. Today. Web. Technologies. Internet WWW. Protocols TCP/IP HTTP. Apache. Next Time. Lecture # Apache.

Integrating Avaya Aura Presence Services with Microsoft OCS

Cite My Data M2M Service Technical Description

Presence SIMPLE Architecture

M2M Communications and Internet of Things for Smart Cities. Soumya Kanti Datta Mobile Communications Dept.

3GPP TS V9.0.0 ( )

ETSI Machine-to-Machine (M2M) Standardization

3GPP TS V8.2.0 ( )

XML Document Management Architecture

About This Document 3. Integration and Automation Capabilities 4. Command-Line Interface (CLI) 8. API RPC Protocol 9.

HOST EUROPE CLOUD STORAGE REST API DEVELOPER REFERENCE

How To Send An Msc To A Cell Phone From A Corporate Server In Ntokdomo (Ntimo) (Ntok) (Ntokdomo) (For A Ppl) ( For A Pn)

Jobs Guide Identity Manager February 10, 2012

HTTP - METHODS. Same as GET, but transfers the status line and header section only.

DEPLOYMENT GUIDE Version 2.1. Deploying F5 with Microsoft SharePoint 2010

vcloud Air Platform Programmer's Guide

CARRIOTS TECHNICAL PRESENTATION

Application Notes for Microsoft Office Communicator Clients with Avaya Communication Manager Phones - Issue 1.1

Connecting IPv6 capable Bluetooth Low Energy sensors with the Internet of Things

It should be noted that the installer will delete any existing partitions on your disk in order to install the software required to use BLËSK.

ETSI TS V6.8.0 ( ) Technical Specification

DEPLOYMENT GUIDE Version 1.2. Deploying the BIG-IP system v10 with Microsoft Exchange Outlook Web Access 2007

Windows 7 Core Services: Application Experience. Application Information. Background Intelligent Transfer. Base Filtering Engine.

ETSI TS V3.1.1 ( ) Technical Specification

ONEM2M SERVICE LAYER PLATFORM INITIAL RELEASE

Module 6. Designing and Deploying External Access. MVA Jump Start

HexaCorp. White Paper. SOA with.net. Ser vice O rient ed Ar c hit ecture

Question Name C 1.1 Do all users and administrators have a unique ID and password? Yes

Service and Resource Discovery in Smart Spaces Composed of Low Capacity Devices

SIP Essentials Training

VMware vcenter Operations Manager Administration Guide

Formación en Tecnologías Avanzadas

ETSI TS V8.2.0 ( ) Technical Specification

CHANGE REQUEST. 2 (GSM Phase 2) A (corresponds to a correction in an earlier release) R96 (Release 1996) B (addition of feature),

EUR-Lex 2012 Data Extraction using Web Services

Audit Management Reference

Test Cases - IMS Profile for Voice and SMS

1 Overview Configuration on MACH Web Portal 1

Fanvil VoIP Auto Provison Standard

IBM SPSS Collaboration and Deployment Services Version 6 Release 0. Single Sign-On Services Developer's Guide

Research on Initial Filter Criteria of IP Multimedia Subsystem

INTEGRATE SALESFORCE.COM SINGLE SIGN-ON WITH THIRD-PARTY SINGLE SIGN-ON USING SENTRY A GUIDE TO SUCCESSFUL USE CASE

WHMCS V4.5 Provisional Changelog

Title page. Alcatel-Lucent 5620 SERVICE AWARE MANAGER 13.0 R7

Web Application Firewall

Rebasoft Auditor Quick Start Guide

Remote Access API 2.0

SIP/ SIMPLE : A control architecture for the wired and wireless Internet?

Instrumentation for Linux Event Log Analysis

VoIP LAB. 陳 懷 恩 博 士 助 理 教 授 兼 所 長 國 立 宜 蘭 大 學 資 訊 工 程 研 究 所 TEL: # 255

OIPF Feature Package. Implementation Guideline for STB-less IPTV [V1.0] [ ] Open IPTV Forum

DEERFIELD.COM. DNS2Go Update API. DNS2Go Update API

Enhancements to idrac7 Alert Notification

RingMaster Software Version 7.6 Web Services API User Guide

JoramMQ, a distributed MQTT broker for the Internet of Things

Grandstream Networks, Inc.

Designing RESTful Web Applications

SIP Protocol as a Communication Bus to Control Embedded Devices

OpenScape Voice V8 Application Developers Manual. Programming Guide A31003-H8080-R

HTTP Protocol. Bartosz Walter

Architecture and Data Flow Overview. BlackBerry Enterprise Service Version: Quick Reference

Nuance Mobile Developer Program. HTTP Services for Nuance Mobile Developer Program Clients

3GPP TS V8.0.0 ( )

Neuron Event Manager. USER S GUIDE Product Version:

The full setup includes the server itself, the server control panel, Firebird Database Server, and three sample applications with source code.

BlackBerry Enterprise Service 10. Universal Device Service Version: Administration Guide

Dell SupportAssist Version 2.0 for Dell OpenManage Essentials Quick Start Guide

CHAPTER 1 INTRODUCTION

... Figure 2: Proposed Service Invocation Mechanism. AS Service invocation 2 SC invocation 2. Session/Call Control Function

Kentico CMS 7.0 E-commerce Guide

Transcription:

Cod. Doc. TTGSTSPI1300029 ETSI M2M application developers guideline Version: 1.0 Date: 27.05.2013 Privacy: Public Pages: 43 AUTHORS: FIRST APPROVAL: FINAL APPROVAL: Michele LUPANO (T.TG.ST.SPI) Roberto GAVAZZI (T.TG.ST.SPI) Giovanni ROCCA (T.TG.ST.SPI) Executive summary The present document is a guideline for application developers who want to use functionalities offered by an ETSI M2M compliant service platform. The guideline analyzes and implements a use case dedicated to remote lights control, showing how to map it into an ETSI M2M service platform using Release 2 APIs. Proprietario: Digitare il proprietario Data emissione: 00-00-0000 Codice doc.: Codice

2

Table of contents 1 Introduction... 5 2 Use case... 5 3 Architecture... 6 4 Procedures... 7 4.1 Registration... 7 4.2 Initial resource creation... 8 4.3 Discovery and get state... 9 4.4 Single light control... 10 4.5 All lights control... 11 5 Implementation... 12 5.1 Assumptions... 12 5.2 Addressing... 12 5.3 Data model... 13 5.4 Resource trees... 13 5.4.1 NSCL1 resource tree... 13 5.4.2 GSCL1 resource tree... 13 5.5 Procedures... 14 5.5.1 Device registration... 14 5.5.2 Device application registration... 15 5.5.3 Network application registration and announcement... 16 5.5.4 Access rights creation... 17 5.5.5 Container creation... 18 5.5.6 Content instance creation... 20 5.5.7 Subscription... 21 5.5.8 Discovery... 23 5.5.9 Get light state... 23 5.5.10 Modify light state... 24 5.5.11 Notification... 25 6 Conclusions... 28 7 Bibliography... 29 Annex A - Reading resources... 30 Annex A.1 Device registration of GSCL1 to NSCL1... 30 Annex A.1.1 - Remote resource... 30 Annex A.1.2 - Local resource... 30 Annex A.2 Device application GA1... 31 Annex A.3 Device application DA1... 32 Annex A.4 Device application DA2... 32 Annex A.5 Network application NA1... 33 Annex A.6 Announced network application NA1... 34 3

Annex A.7 Access right AR1... 34 Annex A.7 Containers... 35 Annex A.7.1 LIGHT1... 35 Annex A.7.2 LIGHT2... 36 Annex A.7.3 LIGHTS... 36 Annex A.8 Content instances collection... 37 Annex A.8.1 LIGHT1... 37 Annex A.8.2 LIGHT2... 38 Annex A.8.3 LIGHTS... 39 Annex A.9 Latest content instance... 40 Annex A.9.1 LIGHT1... 40 Annex A.9.2 LIGHT2... 41 Annex A.9.3 LIGHTS... 41 Annex A.10 Subscriptions... 42 Annex A.10.1 LIGHT1... 42 Annex A.10.2 LIGHT2... 42 Annex A.10.3 LIGHTS... 43 4

1 Introduction The present document is a guideline for application developers who want to use functionalities offered by an ETSI M2M compliant service platform. The guideline analyzes and implements a use case dedicated to remote lights control, showing how to map it into an ETSI M2M service platform using Release 2 APIs. 2 Use case Figure 2.1 shows the use case. Light 1 House perimeter ETSI M2M compliant Service Platform Device 1 Light 2 Smartphone and app as remote lights controller House gateway Device 2 Figure 2.1 Remote lights control use case This use case enables the remote control of lights through a smartphone embedding an application (app) that gains access to an ETSI M2M compliant service platform. Lights considered in this use case are applications-embedded-capable devices installed in an house and attached to an house gateway that may also interact with other sub-systems. The house gateway can communicate to an ETSI M2M compliant service platform to store and share data, in this use case the lights state. The application running on the smartphone may use the following services provided by the platform: lights discovery, get lights state: on or off, switch-on/ off a single light, 5

switch-on/ off all lights. 3 Architecture The use case described in chapter 2 can be mapped into the ETSI M2M functional architecture depicted in Figure 3.1. Light 1 DA1 dia Home gateway GA1 dia GSCL1 mid ETSI M2M compliant Service Platform NSCL1 mia Network application running on a smartphone NA1 Light 2 D 2 dia DA2 Figure 3.1 ETSI M2M functional architecture The ETSI M2M functional architecture involves the following entities: NSCL1: network service platform, GSCL1: gateway at home, D 1: device associated to light 1, D 2: device associated to light 2, Beside the architecture there are the following applications: NA1: network application embedded into a smartphone interacting with NSCL1 through mia interface, GA1: gateway application embedded into the home gateway interacting with GSCL1 through dia interface, DA1: device application controlling light 1 and interacting with GSCL1 through dia interface, 6

DA2: device application controlling light 2 and interacting with GSCL1 through dia interface. 4 Procedures The deployment of ETSI M2M standard of present use case requires the execution of procedures that are grouped as follow: Registration: device registrations, device and gateway application registrations, network application registrations and announcement, access rights resource creation for a selective access to data storage resources. Initial resource creation: container resource creation with service specific tag (search string), content instance resources creation with initial light states, subscription resources creation for notifications. Discovery and get state: all containers with a service specific tag (search string) are discovered by the network application running into the smartphone and their content can be retrieved and displayed. Single light switch on/off: each discovered light can be switched on or off by the network application. All lights switch on/off: all discovered lights can be switched on or off by the network application. Following clauses describe the call flows of involved procedures. The direction of each arrow identifies the issuer and the receiver entities of an HTTP RESTful request. If not explicitly indicated all requests are POST type with consequent resource creation. 4.1 Registration This phase starts with the SCL registration procedure of GSCL1 to NSCL1. The next step is the application registration where DA1, DA2 and GA1 register to GSCL1, NA1 register to NSCL1 followed by an announcement to GSCL1. Being the light control service based only on containers discovery, the announcement to NSCL1 of device/gateway applications registered to GSCL1 is not required. By the way it is recommended to associate all network applications like NA1 to a service specific search string, e.g. LIGHTS_NET_APPS, that can be used for discovery purposes in order to compile a list of applications granted to access to the above mentioned containers, this is used in AR1 access rights resource creation requested by GA1 to GSCL1. 7

DA1 DA2 GA1 GSCL1 NSCL1 NA1 GA1 registration GSCL1 registration Registration of GSCL1 to NSCL1 DA1 registration DA2 registration Registration of DA1, DA2 and GA1 applications to GSCL1 Registration of NA1 application to NSCL1 and announcement to GSCL1 Discovery (GET) URIs of NAs with service specific search string, e.g. LIGHT_NET_APPS AR1 access rights creation NA1 announcement AR1 access right creation to GSCL1 granting: DA1, DA2, GA1 and all NAs like NA1 to be discovered by service specific search string, e.g. LIGHTS_NET_APPS NA1 registration Figure 4.1 Registration phase call flows 4.2 Initial resource creation In the configuration phase GA1 creates in GSCL1 the LIGHTS container resource that keeps the state of all lights. Device applications DA1 and DA2 create in GSCL1 the LIGHT1 and LIGHT2 container resources that keep the state of lights 1 and 2. Aiming at support resource discovery, these containers are created with a service specific search string attribute, e.g. LIGHT_SINGLE for LIGHT1 and LIGHT2 and LIGHT_COMMON for LIGHTS. Once containers are available, each device application creates a content instance representing the current state of the controlled light. The initial state of all lights represented in LIGHTS content instances is irrelevant because of the initial single light state can be different. The configuration phase ends with the creation of subscription resources under the containers with the purpose to be notified when a new content instance is added by NA1 or GA1, in that way device and gateway applications can react to update the light state according to the data just stored into latest content instance. 8

DA1 DA2 GA1 GSCL1 NSCL1 NA1 LIGHT1 container creation LIGHT2 container creation LIGHTS container creation Containers are created in GSCL1 with a service specific search string e.g. LIGHT_SINGLE and AR1 access rights CI1 content instance creation CI2 content instance creation Content instances are created under containers with initial light states S1 subscribe creation S2 subscribe creation S0 subscribe creation Subscriptions to content instance modifications are created under containers with initial light states Figure 4.2 Resource creation phase call flows 4.3 Discovery and get state The network application NA1 performs a GET request with a filter criteria attribute looking for resources having a search string equal to the service specific one associated to LIGHT1 and LIGHT2 containers, e.g. LIGHT_SINGLE. The retrieval provides back to NA1 a list of URIs referencing the discovered containers. Discovery of LIGHTS container dedicated to all lights control can be achieved using a different service specific search string, e.g. LIGHT_COMMON. Having light container URIs, NA1 is able to retrieve the latest created content instance representing the current light state. NA1 running in the smartphone can display the list of discovered lights allowing further modification of their state. 9

DA1 DA2 GA1 GSCL1 NSCL1 NA1 NA1 discovery of container resources stored in GSCL1 with a service specific search string e.g. LIGHT_SINGLE Discovery (GET) URIs of discovered resources are returned to NA1 NA1 retrieves the latest stored content instance of discovered containers representing the light states LIGHT1 GET state LIGHT1 state on/off is returned to NA1 LIGHT2 GET state LIGHT2 state on/off is returned to NA1 Figure 4.3 Discovery and get state phase call flows 4.4 Single light control The network application NA1 creates a new content instance resource under LIGHT1 or LIGHT2 container resources defining the new targeted state of the light to be controlled. Once created, the subscribed device application DA1 or DA2 is notified of the modification and the new state is finally applied to the controlled light. DA1 D 1 DA2 Notify to DA1 the LIGHT1 latest modification that is executed to the controlled light GA1 GSCL1 NSCL1 NA1 Creation of a LIGHT1 content instance with new state on/offgscl1 Notify to DA2 the LIGHT2 latest modification that is executed to the controlled light Creation of a LIGHT2 content instance with new state on/off Figure 4.4 Single light control phase call flows 10

4.5 All lights control The network application NA1 creates a new content instance resource under the LIGHTS container resource defining the new common state for all the lights controlled by the gateway. Once created, the subscribed device application GA1 is notified of the modification and the new common light state represented in the LIGHTS container is then forced to all lights applying to each light the procedure described in clause 4.4. DA1 DA2 GA1 GSCL1 NSCL1 NA1 DA1 and DA2 are notified with the new state ON or OFF Notify to GA1 the LIGHTS latest modification that is to be executed to all lights GA1 creates new content instances of LIGHT1 and LIGHT2 containers with new common state ON or OFF Creation of a LIGHTS content instance with new common state ON or OFF to be forced to all lights Figure 4.5 All lights control call flows 11

5 Implementation The implementation of remote light control use case as an ETSI M2M system requires the steps described in the following clauses. 5.1 Assumptions This is the list of assumptions: All the applications are server capable. Device and application entities are independently addressable with host names resolved by DNS network services. Host port number 9000 is assumed to be reserved for ETSI M2M services. Security is not considered for this use case. For a better comprehension the XML schemas are not considered, only pure XML is used in procedure descriptions. The procedure exceptions are not considered. HTTP mapping of ETSI M2M primitives is used. Only essential HTTP headers are considered. Resource names are pre-provisioned, except for content instance resources that are automatically assigned by the hosting SCL. Search strings are pre-provisioned identifying applications and containers dedicated to the remote light control service. In order to receive an header only response by the hosting SCL, it is suggested to provide expiration time attribute in every resource creation. In the majority of cases it reduces the amount of bytes sent back to the issuer. Full representation of retrieved resources is described in Annex A. 5.2 Addressing Each M2M entity like device and applications must be correctly addressed with the right host addresses that can be IP addresses or FQDN addresses resolved to IP addresses by DNS network services. In the present exercise we assume server capable entities addressable with the following URIs: NSCL1: m2m.provider1.com:9000/nscl1 GSCL1: m2m.provider2.com:9000/gscl1 GA1: m2m.provider2.com:9000/ga1 DA1: m2m.provider3.com:9000/da1 DA2: m2m.provider4.com:9000/da2 12

NA1: m2m.provider5.com:9000/na1 5.3 Data model The state on or off of each light to be stored in content instances can be modeled as a string inside the XML representation of the content instances resource; there are two possible content bodies to store: OFF state: ON state: <textcontent>off</textcontent> <textcontent>on</textcontent> Following search strings have been chosen to support DAs discovery: LIGHT_SINGLE : for single light control LIGHT_COMMON : for all lights control Following search strings have been chosen to support NAs discovery: LIGHT_NET_APP 5.4 Resource trees The development of an application for an ETSI M2M ecosystem requires the design of resource trees of each service capability layers NSCL1 and GSCL1. These resource trees may grow according to the called procedures as explained in chapter 4. 5.4.1 NSCL1 resource tree This tree starts from the sclbase resource named nscl1. Figure 5.1 NSCL1 resource tree 5.4.2 GSCL1 resource tree This tree starts from the sclbase resource named gscl1. 13

Figure 5.2 GSCL1 resource tree 5.5 Procedures The ETSI M2M procedures used in this use case are mapped into HTTP ones according to the standardized APIs describing the interfaces: dia, mid and mia. 5.5.1 Device registration If GSCL1 is not yet registered to NSCL1 it executes the SCL registration procedure. POST /nscl1/scls HTTP/1.1 Host: http://m2m.provider1.com:9000 From: gscl1 Content-Length: 247 <scl sclid= gscl1 > <searchstrings> 14

<searchstring>light_gscl</searchstring> </searchstrings> <link>http://m2m.provider2.com:9000/gscl1</link> </scl> 201 Created Content-Location: http://m2m.provider1.com:9000/nscl1/scls/gscl1 Content-Length: 0 The procedure is successfully performed with the creation of gscl1 resource in NSCL1 and the creation of nscl1 resource in GSCL1 with attributes that shall be retrieved by nscl1 sclbase type resource. 5.5.2 Device application registration DA1 device application If DA1 is not yet registered to GSCL1 it executes the application registration. POST /gscl1/applications HTTP/1.1 From: da1 Content-Length: 213 <application appid= da1 > <searchstrings> <searchstring>lights_dev_app</searchstring> </searchstrings> </application> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/da1 Content-Length: 0 The procedure is successfully performed with the creation of da1 resource in GSCL1. DA2 device application If DA2 is not yet registered to GSCL1 it executes the application registration procedure. POST /gscl1/applications HTTP/1.1 From: da2 Content-Length: 213 <application appid= da2 > 15

<searchstrings> <searchstring>lights_dev_app</searchstring> </searchstrings> </application> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/da2 Content-Length: 0 The procedure is successfully performed with the creation of da2 resource in GSCL1. GA1 device application If GA1 is not yet registered to GSCL1 it executes the application registration procedure. POST /gscl1/applications HTTP/1.1 From: ga1 Content-Length: 213 <application appid= ga1 > <searchstrings> <searchstring>lights_dev_app</searchstring> </searchstrings> </application> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/ga1 Content-Length: 0 The procedure is successfully performed with the creation of ga1 resource in GSCL1. 5.5.3 Network application registration and announcement If NA1 is not yet registered to NSCL1 it executes the application registration procedure. POST /nscl1/applications HTTP/1.1 Host: http://m2m.provider1.com:9000 From: na1 Content-Length: 397 <application appid= na1 > <searchstrings> <searchstring>lights_net_app</searchstring> </searchstrings> <announceto> 16

<activated>true</activated> <scllist> <reference>http://m2m.provider2.com:9000/gscl1</reference> </scllist> <global>true</global> </announceto> </application> 201 Created Content-Location: http://m2m.provider1.com:9000/nscl1/applications/na1 Content-Length: 0 The procedure is successfully performed with the creation of na1 resource in NSCL1 followed by the announcement procedure to GSCL1 automatically executed by NSCL1 if the announceto attribute is present in the creation request. 5.5.4 Access rights creation Discovery of network applications GA1 can get a list of announced network applications that can be used to create the list of granted ones to access to remote light control service containers. The list can be obtained with a discovery procedure by filtering a retrieve request with a filter criteria adequately configured, e.g. looking for LIGHTS_NET_APP search string. GET /gscl1/discovery?searchprefix= /gscl1/applications &searchstring= LIGHTS_NET_APP HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 215 <discovery> <matchsize>1</matchsize> <truncated>false</truncated> <discoveryuri> <reference>http://m2m.provider1.com:9000/applications/na1</reference> </discoveryuri> </discovery> Access rights resource creation Knowing the list of NAs to grant, then the access right resource NA1 can be created. POST /gscl1/accessrights HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 1621 17

<accessright id= ar1 > <permissions> <permission id= gscl1 > <permissionflags> <flag>read</flag> <flag>write</flag> <flag>create</flag> <flag>delete</flag> <flag>discover</flag> </permissionflags> <permissionholders> <holderrefs> <holderref>http://m2m.provider2.com:9000/applications/ga1</holderref> <holderref>http://m2m.provider2.com:9000/applications/da1</holderref> <holderref>http://m2m.provider2.com:9000/applications/da2</holderref> </holderrefs> </permissionholders> </permission> <permission id= na1 > <permissionflags> <flag>read</flag> <flag>create</flag> <flag>discover</flag> </permissionflags> <permissionholders> <holderrefs> <holderref>http://m2m.provider1.com:9000/applications/na1</holderref> </holderrefs> </permissionholders> </permission> </permissions> <selfpermissions> <permission id= ga1 > <permissionflags> <flag>read</flag> <flag>write</flag> <flag>create</flag> <flag>delete</flag> <flag>discover</flag> </permissionflags> <permissionholders> <holderrefs> <holderref>http://m2m.provider2.com:9000/applications/ga1</holderref> <holderref>http://m2m.provider2.com:9000/applications/da1</holderref> <holderref>http://m2m.provider2.com:9000/applications/da2</holderref> </holderrefs> </permissionholders> </permission> </selfpermissions> </accessright> 201 Created Content-Location: http://m2m.provider2.com:9000/accessrights/ar1 Content-Length: 0 5.5.5 Container creation Container LIGHT1 DA1 creates LIGHT1 container in GSCL1 without size, instance and age limitations. 18

POST /gscl1/applications/da1/containers/light1 HTTP/1.1 From: http://m2m.provider2.com:9000/applications/da1 Content-Length: 404 <container id= LIGHT1 > <accessrightid>http://m2m.provider2.com:9000/accessrights/ar1</accessrightid> <searchstrings> <searchstring>light_single</searchstrings> </searchstrings> <maxnrofinstances>-1</maxnrofinstances> <maxbytesize>-1</maxbytesize> <maxinstanceage>-1</maxinstanceage> </container> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1 Content-Length: 0 Container LIGHT2 DA2 creates LIGHT2 container in GSCL1 without size, instance and age limitations. POST /gscl1/applications/da2/containers/light2 HTTP/1.1 From: http://m2m.provider2.com:9000/applications/da2 Content-Length: 404 <container id= LIGHT2 > <accessrightid>http://m2m.provider2.com:9000/accessrights/ar1</accessrightid> <searchstrings> <searchstring>light_single</searchstrings> </searchstrings> <maxnrofinstances>-1</maxnrofinstances> <maxbytesize>-1</maxbytesize> <maxinstanceage>-1</maxinstanceage> </container> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2 Content-Length: 0 Container LIGHTS GA1 creates LIGHTS container in GSCL1 without size, instance and age limitations. 19

POST /gscl1/applications/ga1/containers/lights HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 404 <container id= LIGHTS > <accessrightid>http://m2m.provider2.com:9000/accessrights/ar1</accessrightid> <searchstrings> <searchstring>light_common</searchstrings> </searchstrings> <maxnrofinstances>-1</maxnrofinstances> <maxbytesize>-1</maxbytesize> <maxinstanceage>-1</maxinstanceage> </container> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights Content-Length: 0 5.5.6 Content instance creation Content instance of LIGHT1 DA1 creates a content instance with the current state of light #1 in LIGHT1 container without delay tolerance limitations. The resource name is automatically assigned by GSCL1. POST /gscl1/applications/da1/containers/light1/contentinstances HTTP/1.1 From: http://m2m.provider2.com:9000/applications/da1 Content-Length: 118 <contentinstance> <content> <textcontent>off</textcontent> </content> </contentinstance> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/ci0 Content-Length: 0 Content instance of LIGHT2 DA2 creates a content instance with the current state of light #2 in LIGHT2 container without delay tolerance limitations. The resource name is automatically assigned by GSCL1. POST /gscl1/applications/da2/containers/light2/contentinstances HTTP/1.1 20

From: http://m2m.provider2.com:9000/applications/da2 Content-Length: 118 <contentinstance> <content> <textcontent>off</textcontent> </content> </contentinstance> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/ci0 Content-Length: 0 Content instance of LIGHTS Every light can be initialized with a specific state ON or OFF, so the overall state kept in LIGHTS container cannot be realistically initialized to one of these states, so GA1 doesn t create an initial content instance for it. 5.5.7 Subscription In all subscriptions the filter criteria is defined with attribute accessor equal to the URI pointing to latest content instance partial address in order to generate a notification on content instance creation. To content instance of LIGHT1 DA1 creates a subscription resource to be notified about changes to content instances of LIGHT1 container. The subscription has not time limitations. POST /gscl1/applications/da1/containers/light1/contentinstances/subscriptions HTTP/1.1 From: http://m2m.provider2.com:9000/applications/da1 Content-Length: 359 <subscription id= S1 > <filtercriteria> <attributeaccessor>http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstanc es/latest</attributeaccessor> </filtercriteria> <contact>http://m2m.provider3.com:9000/da1</contact> </subscription> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/subscriptions/s1 Content-Length: 0 21

To content instance of LIGHT2 DA2 creates a subscription resource to be notified about changes to content instances of LIGHT2 container. The subscription has not time limitations. POST /gscl1/applications/da2/containers/light2/contentinstances/subscriptions HTTP/1.1 From: http://m2m.provider2.com:9000/applications/da2 Content-Length: 359 <subscription id= S2 > <filtercriteria> <attributeaccessor>http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstanc es/latest</attributeaccessor> </filtercriteria> <contact>http://m2m.provider4.com:9000/da2</contact> </subscription> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/subscriptions/s2 Content-Length: 0 To content instance of LIGHTS GA1 creates a subscription resource to be notified about changes to content instances of LIGHTS container. The subscription has not time limitations. POST /gscl1/applications/ga1/containers/lights/contentinstances/subscriptions HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 372 <subscription id= S0 > <filtercriteria> <attributeaccessor>http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstanc es/latest</attributeaccessor> </filtercriteria> <contact>http://m2m.provider2.com:9000/ga1</contact> </subscription> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstances/subscriptions/s0 Content-Length: 0 22

5.5.8 Discovery Network application NA1 can execute a discovery procedure to have a list of available container resources representing the light state. Discovery applies a search string filter criteria that looks for containers tagged with LIGHT_SINGLE search string. GET /gscl1/discovery?searchprefix= /gscl1/applications &searchstring= LIGHT_SINGLE HTTP/1.1 From: http://m2m.provider1.com:9000/applications/na1 Content-Length: 325 <discovery> <matchsize>2</matchsize> <truncated>false</truncated> <discoveryuri> <reference>http://m2m.provider2.com:9000/applications/da1/containers/light1</reference> <reference>http://m2m.provider2.com:9000/applications/da2/containers/light2</reference> </discoveryuri> </discovery> 5.5.9 Get light state Discovered containers can be retrieved by NA1 as latest created content instances that represent the last updated light state. Once retrieved, the smartphone running application can display the list of discovered lights and their states, offering the possibility to modify the state of each one. Retrieve latest content instance of LIGHT1 GET /gscl1/applications/da1/containers/light1/contentinstances/latest HTTP/1.1 From: http://m2m.provider1.com:9000/applications/na1 Content-Length: 459 <contentinstance id= http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/ci2 > <creationtime>2013-05-12t12:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>62</contentsize> <content> 23

<textcontent>off</textcontent> </content> </contentinstance> Retrieve latest content instance of LIGHT2 GET /gscl1/applications/da2/containers/light2/contentinstances/latest HTTP/1.1 From: http://m2m.provider1.com:9000/applications/na1 Content-Length: 459 <contentinstance id= http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/ci2 > <creationtime>2013-05-12t12:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>62</contentsize> <content> <textcontent>off</textcontent> </content> </contentinstance> 5.5.10 Modify light state The smartphone running application registered as NA1 to the ETSI M2M service platform NSCL1, allows a human user to modify the state of a single light or to force the same state to all the available discovered lights. A new light state can be decided on the smartphone user interface, then the application performs a content instance creation procedure carrying the new state. NA1 is allowed to access these containers and to create content instances as defined in access right resource AR1. Create a content instance of LIGHT1 POST /gscl1/applications/da1/containers/light1/contentinstances HTTP/1.1 From: http://m2m.provider1.com:9000/applications/na1 Content-Length: 117 <contentinstance> <content> <textcontent>on</textcontent> </content> </contentinstance> 24

201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/ci3 Content-Length: 0 Create a content instance of LIGHT2 POST /gscl1/applications/da2/containers/light2/contentinstances HTTP/1.1 From: http://m2m.provider1.com:9000/applications/na1 Content-Length: 117 <contentinstance> <content> <textcontent>on</textcontent> </content> </contentinstance> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/ci4 Content-Length: 0 Create a content instance of LIGHTS POST /gscl1/applications/ga1/containers/lights/contentinstances HTTP/1.1 From: http://m2m.provider1.com:9000/applications/na1 Content-Length: 118 <contentinstance> <content> <textcontent>off</textcontent> </content> </contentinstance> 201 Created Content-Location: http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstances/ci5 Content-Length: 0 5.5.11 Notification Each time a content instance is added to a container, then a notification resource is posted to the target subscribed application that can actuate to the light the new state received as notification. 25

The representation attribute is the base64 encoding of just created content instance resource to be notified that is internally and automatically retrieved by GSCL1 as described in Annex A.9. Post a notification of LIGHT1 to DA1 POST /gscl1/applications/da1 HTTP/1.1 From: http://m2m.provider2.com:9000/gscl1 Content-Length: 1011 <notify> <statuscode>status_ok</statuscode> <representation>idxjb250zw50sw5zdgfuy2ugawq94ocdahr0cdovl2hnms5kzg5zms5jb206otawmc9nc2nsms9hchbsawnhdglv bnmvzgexl2nvbnrhaw5lcnmvtelhsfqxl2nvbnrlbnrjbnn0yw5jzxmvq0ky4ocdpg0kica8y3jlyxrpb25uaw1lpjiwmtmtmdutmtju MTI6MDM6MzAuMDAwKzAyOjAwPC9jcmVhdGlvblRpbWU+DQogIDxsYXN0TW9kaWZpZWRUaW1lPjIwMTMtMDUtMTJUMTI6MDM6MzAuMDAw KzAyOjAwPC9sYXN0TW9kaWZpZWRUaW1lPg0KICA8Y29udGVudFR5cGVzPg0KICAgPGNvbnRlbnRUeXBlPnRleHQvcGxhaW48L2NvbnRl bnruexblpg0kica8l2nvbnrlbnruexblcz4nciagpgnvbnrlbnrtaxplpjyypc9jb250zw50u2l6zt4nciagpgnvbnrlbnq+dqogica8 dgv4denvbnrlbnq+t0zgpc90zxh0q29udgvudd4nciagpc9jb250zw50pg0kidwvy29udgvudeluc3rhbmnlpg0k</representation > <subscriptionreference>http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentins tances/subscriptions/s1</subscriptionreference> <requestingentity>http://m2m.provider2.com:9000/gscl1</requestingentity> <contact>http://m2m.provider2.com:9000/gscl1/applications/da1</contact> </notify> Post a notification of LIGHT2 to DA2 POST /gscl1/applications/da2 HTTP/1.1 From: http://m2m.provider2.com:9000/gscl1 Content-Length: 1011 <notify> <statuscode>status_ok</statuscode> <representation> IDxjb250ZW50SW5zdGFuY2UgaWQ94oCdaHR0cDovL2hnMS5kZG5zMS5jb206OTAwMC9nc2NsMS9hcHBsaWNhdGlvbnMvZGEyL2NvbnRh aw5lcnmvtelhsfqyl2nvbnrlbnrjbnn0yw5jzxmvq0ky4ocdpg0kica8y3jlyxrpb25uaw1lpjiwmtmtmdutmtjumti6mdm6mzaumdaw KzAyOjAwPC9jcmVhdGlvblRpbWU+DQogIDxsYXN0TW9kaWZpZWRUaW1lPjIwMTMtMDUtMTJUMTI6MDM6MzAuMDAwKzAyOjAwPC9sYXN0 TW9kaWZpZWRUaW1lPg0KICA8Y29udGVudFR5cGVzPg0KICAgPGNvbnRlbnRUeXBlPnRleHQvcGxhaW48L2NvbnRlbnRUeXBlPg0KICA8 L2NvbnRlbnRUeXBlcz4NCiAgPGNvbnRlbnRTaXplPjYyPC9jb250ZW50U2l6ZT4NCiAgPGNvbnRlbnQ+DQogICA8dGV4dENvbnRlbnQ+ T0ZGPC90ZXh0Q29udGVudD4NCiAgPC9jb250ZW50Pg0KIDwvY29udGVudEluc3RhbmNlPg0K</representation> <subscriptionreference>http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentins tances/subscriptions/s1</subscriptionreference> <requestingentity>http://m2m.provider2.com:9000/gscl1</requestingentity> <contact>http://m2m.provider2.com:9000/gscl1/applications/da2</contact> </notify> Post a notification of LIGHTS to GA1 POST /gscl1/applications/ga1 HTTP/1.1 From: http://m2m.provider2.com:9000/gscl1 26

Content-Length: 1011 <notify> <statuscode>status_ok</statuscode> <representation>idxjb250zw50sw5zdgfuy2ugawq94ocdahr0cdovl2hnms5kzg5zms5jb206otawmc9nc2nsms9hchbsawnhdglv bnmvz2exl2nvbnrhaw5lcnmvtelhsfrtl2nvbnrlbnrjbnn0yw5jzxmvq0ky4ocdpg0kica8y3jlyxrpb25uaw1lpjiwmtmtmdutmtju MTI6MDM6MzAuMDAwKzAyOjAwPC9jcmVhdGlvblRpbWU+DQogIDxsYXN0TW9kaWZpZWRUaW1lPjIwMTMtMDUtMTJUMTI6MDM6MzAuMDAw KzAyOjAwPC9sYXN0TW9kaWZpZWRUaW1lPg0KICA8Y29udGVudFR5cGVzPg0KICAgPGNvbnRlbnRUeXBlPnRleHQvcGxhaW48L2NvbnRl bnruexblpg0kica8l2nvbnrlbnruexblcz4nciagpgnvbnrlbnrtaxplpjyypc9jb250zw50u2l6zt4nciagpgnvbnrlbnq+dqogica8 dgv4denvbnrlbnq+t0zgpc90zxh0q29udgvudd4nciagpc9jb250zw50pg0kidwvy29udgvudeluc3rhbmnlpg0k</representation > <subscriptionreference>http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentins tances/subscriptions/s0</subscriptionreference> <requestingentity>http://m2m.provider2.com:9000/gscl1</requestingentity> <contact>http://m2m.provider2.com:9000/gscl1/applications/ga1</contact> </notify> 27

6 Conclusions The present exercise of use case mapping into an ETSI M2M service platform lead to following points of attention: it is very hard to develop ETSI M2M applications without a validated standard platform; present release 2 lightweight approach may reduce the registration phanse development overload; some other lightweight initiative should be started to reduce the size of responses, like: by choosing to not receive all the references (URIs) to child collection resources that are known by knowing the standardized resource tree structure; by choosing to not receive the base64 encoded representation of notified resource. 28

7 Bibliography [1] ETSI TS 102 690 V2.0.12 (2012-12) Machine-to-Machine communications (M2M) Functional architecture [2] ETSI TS 102 921 V2.0.8 (2013-03) Machine-to-Machine communications (M2M) mia, dia and mid interfaces 29

Annex A - Reading resources The present annex offer some example of HTTP mapped ETSI M2M resource retrieval. Annex A.1 Device registration of GSCL1 to NSCL1 Annex A.1.1 - Remote resource GET /nscl1/scls/gscl1 HTTP/1.1 Host: http://m2m.provider1.com:9000 From: http://m2m.provider1.com:9000/nscl1/applications/na1 Content-Length: 1737 <scl sclid= http://m2m.provider1.com:9000/nscl1/scls/gscl1 > <pocs> <reference>http://m2m.provider2.com:9000</reference> </pocs> <onlinestatus>online</onlinestatus> <servercapability>true</servercapability> <link>http://m2m.provider2.com:9000/gscl1</link> <searchstrings> <searchstring> LIGHT_GSCL </searchstring> </searchstrings> <creationtime>2013-05-10t12:02:45.000+02:00</creationtime> <lastmodifiedtime>2013-05-10t12:02:45.000+02:00</lastmodifiedtime> <mgmtprotocoltype></mgmtprotocoltype> <containersreference>http://m2m.provider1.com:9000/nscl1/scls/gscl1/containers</containersreference> <groupsreference>http://m2m.provider1.com:9000/nscl1/scls/gscl1/groups</groupsreference> <applicationsreference>http://m2m.provider1.com:9000/nscl1/scls/gscl1/applications</applicationsreferenc e> <accessrightsreference>http://m2m.provider1.com:9000/nscl1/scls/gscl1/accessrights</accessrightsreferenc e> <subscriptionsreference>http://m2m.provider1.com:9000/nscl1/scls/gscl1/subscriptions</subscriptionsrefer ence> <mgmtobjsreference>http://m2m.provider1.com:9000/nscl1/scls/gscl1/mgmtobjs</mgmtobjsreference> <notificationchannelsreference>http://m2m.provider1.com:9000/nscl1/scls/gscl1/notificationchannels</noti ficationchannelsreference> <communicationchannelsreference>http://m2m.provider1.com:9000/nscl1/scls/gscl1/communicationchannels</co mmunicationchannelsreference> <m2mpocsreference>http://m2m.provider1.com:9000/nscl1/scls/gscl1/m2mpocs</m2mpocsreference> <attacheddevicesreference>http://m2m.provider1.com:9000/nscl1/scls/gscl1/attacheddevices</attacheddevice sreference> </scl> Annex A.1.2 - Local resource 30

GET /gscl1/scls/nscl1 HTTP/1.1 From: http://m2m.provider2.com:9000/gscl1/applications/ga1 Content-Length: 1737 <scl sclid= http://m2m.provider2.com:9000/gscl1/scls/nscl1 > <pocs> <reference>http://m2m.provider1.com:9000</reference> </pocs> <onlinestatus>online</onlinestatus> <servercapability>true</servercapability> <link>http://m2m.provider2.com:9000/gscl1</link> <searchstrings> <searchstring> LIGHT_GSCL </searchstring> </searchstrings> <creationtime>2013-05-10t12:02:45.000+02:00</creationtime> <lastmodifiedtime>2013-05-10t12:02:45.000+02:00</lastmodifiedtime> <mgmtprotocoltype></mgmtprotocoltype> <containersreference>http://m2m.provider2.com:9000/gscl1/scls/nscl1/containers</containersreference> <groupsreference>http://m2m.provider2.com:9000/gscl1/scls/nscl1/groups</groupsreference> <applicationsreference>http://m2m.provider2.com:9000/gscl1/scls/nscl1/applications</applicationsreferenc e> <accessrightsreference>http://m2m.provider2.com:9000/gscl1/scls/nscl1/accessrights</accessrightsreferenc e> <subscriptionsreference>http://m2m.provider2.com:9000/gscl1/scls/nscl1/subscriptions</subscriptionsrefer ence> <mgmtobjsreference>http://m2m.provider2.com:9000/gscl1/scls/nscl1/mgmtobjs</mgmtobjsreference> <notificationchannelsreference>http://m2m.provider2.com:9000/gscl1/scls/nscl1/notificationchannels</noti ficationchannelsreference> <communicationchannelsreference>http://m2m.provider2.com:9000/gscl1/scls/nscl1/communicationchannels</co mmunicationchannelsreference> <m2mpocsreference>http://m2m.provider2.com:9000/gscl1/scls/nscl1/m2mpocs</m2mpocsreference> <attacheddevicesreference>http://m2m.provider2.com:9000/gscl1/scls/nscl1/attacheddevices</attacheddevice sreference> </scl> Annex A.2 Device application GA1 GET /gscl1/applications/ga1 HTTP/1.1 From: http://m2m.provider1.com:9000/nscl1/applications/na1 Content-Length: 979 <application appid= http://m2m.provider2.com:9000/gscl1/applications/ga1 > 31

<searchstrings> <searchstring> LIGHTS_DEV_APP </searchstring> </searchstrings> <creationtime>2013-05-12t12:03:00.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:00.000+02:00</lastmodifiedtime> <containersreference>http://m2m.provider2.com:9000/gscl1/applications/ga1/containers</containersreferenc e> <groupsreference>http://m2m.provider2.com:9000/gscl1/applications/ga1/groups</groupsreference> <accessrightsreference>http://m2m.provider2.com:9000/gscl1/applications/ga1/accessrights</accessrightsre ference> <subscriptionsreference>http://m2m.provider2.com:9000/gscl1/applications/ga1/subscriptions</subscription sreference> <notificationchannelsreference>http://m2m.provider2.com:9000/gscl1/applications/ga1/notificationchannels </notificationchannelsreference> </application> Annex A.3 Device application DA1 GET /gscl1/applications/da1 HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 979 <application appid= http://m2m.provider2.com:9000/gscl1/applications/da1 > <searchstrings> <searchstring> LIGHTS_DEV_APP </searchstring> </searchstrings> <creationtime>2013-05-12t12:02:50.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:02:50.000+02:00</lastmodifiedtime> <containersreference>http://m2m.provider2.com:9000/gscl1/applications/da1/containers</containersreferenc e> <groupsreference>http://m2m.provider2.com:9000/gscl1/applications/da1/groups</groupsreference> <accessrightsreference>http://m2m.provider2.com:9000/gscl1/applications/da1/accessrights</accessrightsre ference> <subscriptionsreference>http://m2m.provider2.com:9000/gscl1/applications/da1/subscriptions</subscription sreference> <notificationchannelsreference>http://m2m.provider2.com:9000/gscl1/applications/da1/notificationchannels </notificationchannelsreference> </application> Annex A.4 Device application DA2 GET /gscl1/applications/da2 HTTP/1.1 32

From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 979 <application appid= http://m2m.provider2.com:9000/gscl1/applications/da2 > <searchstrings> <searchstring> LIGHTS_DEV_APP </searchstring> </searchstrings> <creationtime>2013-05-12t12:02:55.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:02:55.000+02:00</lastmodifiedtime> <containersreference>http://m2m.provider2.com:9000/gscl1/applications/da2/containers</containersreferenc e> <groupsreference>http://m2m.provider2.com:9000/gscl1/applications/da2/groups</groupsreference> <accessrightsreference>http://m2m.provider2.com:9000/gscl1/applications/da2/accessrights</accessrightsre ference> <subscriptionsreference>http://m2m.provider2.com:9000/gscl1/applications/da2/subscriptions</subscription sreference> <notificationchannelsreference>http://m2m.provider2.com:9000/gscl1/applications/da2/notificationchannels </notificationchannelsreference> </application> Annex A.5 Network application NA1 GET /nscl1/applications/na1 HTTP/1.1 Host: http://m2m.provider1.com:9000 From: http://m2m.provider2:9000/gscl1/applications/ga1 Content-Length: 1164 <application appid= http://m2m.provider1.com:9000/nscl1/applications/na1 > <searchstrings> <searchstring> LIGHTS_NET_APP </searchstring> </searchstrings> <creationtime>2013-05-12t12:03:05.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:05.000+02:00</lastmodifiedtime> <announceto> <activated>false</activated> <scllist> <reference>http://m2m.provider2.com:9000/gscl1</reference> </scllist> <global>true</global> </announceto> <containersreference>http://m2m.provider1.com:9000/nscl1/applications/na1/containers</containersreferenc e> <groupsreference>http://m2m.provider1.com:9000/nscl1/applications/na1/groups</groupsreference> 33

<accessrightsreference>http://m2m.provider1.com:9000/nscl1/applications/na1/accessrights</accessrightsre ference> <subscriptionsreference>http://m2m.provider1.com:9000/nscl1/applications/na1/subscriptions</subscription sreference> <notificationchannelsreference>http://m2m.provider1.com:9000/nscl1/applications/na1/notificationchannels </notificationchannelsreference> </application> Annex A.6 Announced network application NA1 GET /gscl1/applications/na1 HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 557 <appannc id= http://m2m.provider2.com:9000/gscl1/applications/na1 > <link>http://m2m.provider1.com:9000/nscl1/applications/na1</link> <containersreference>http://m2m.provider2.com:9000/gscl1/applications/na1/containers</containersreferenc e> <groupsreference>http://m2m.provider2.com:9000/gscl1/applications/na1/groups</groupsreference> <accessrightsreference>http://m2m.provider2.com:9000/gscl1/applications/na1/accessrights</accessrightsre ference> </appannc> Annex A.7 Access right AR1 GET /gscl1/accessrights/ar1 HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 1801 <accessright id= http://m2m.provider2.com:9000/gscl1/accessrights/ar1 > <creationtime>2013-05-12t12:03:05.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:05.000+02:00</lastmodifiedtime> <permissions> <permission id= gscl1 > <permissionflags> <flag>read</flag> <flag>write</flag> <flag>create</flag> <flag>delete</flag> 34

<flag>discover</flag> </permissionflags> <permissionholders> <holderrefs> <holderref>http://m2m.provider2.com:9000/applications/ga1</holderref> <holderref>http://m2m.provider2.com:9000/applications/da1</holderref> <holderref>http://m2m.provider2.com:9000/applications/da2</holderref> </holderrefs> </permissionholders> </permission> <permission id= na1 > <permissionflags> <flag>read</flag> <flag>create</flag> <flag>discover</flag> </permissionflags> <permissionholders> <holderrefs> <holderref>http://m2m.provider2.com:9000/applications/na1</holderref> </holderrefs> </permissionholders> </permission> </permissions> <selfpermissions> <permission id= ga1 > <permissionflags> <flag>read</flag> <flag>write</flag> <flag>create</flag> <flag>delete</flag> <flag>discover</flag> </permissionflags> <permissionholders> <holderrefs> <holderref>http://m2m.provider2.com:9000/applications/ga1</holderref> <holderref>http://m2m.provider2.com:9000/applications/da1</holderref> <holderref>http://m2m.provider2.com:9000/applications/da2</holderref> </holderrefs> </permissionholders> </permission> </selfpermissions> </accessright> Annex A.7 Containers Annex A.7.1 LIGHT1 GET /gscl1/applications/da1/containers/light1 HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 1020 <container id= http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1 > <accessrightid>http://m2m.provider2.com:9000/accessrights/ar1</accessrightid> <searchstrings> 35

<searchstring>light_single</searchstrings> </searchstrings> <creationtime>2013-05-12t12:03:25.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:25.000+02:00</lastmodifiedtime> <maxnrofinstances>-1</maxnrofinstances> <maxbytesize>-1</maxbytesize> <maxinstanceage>-1</maxinstanceage> <contentinstancesreference>http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/conten tinstances</contentinstancesreference> <subcontainersreference>http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/subcontai ners</subcontainersreference> <subscriptionsreference>http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/subscript ions</subscriptionsreference> </container> Annex A.7.2 LIGHT2 GET /gscl1/applications/da2/containers/light2 HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 1020 <container id= http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2 > <accessrightid>http://hg1.ddns1.com:9000/accessrights/ar1</accessrightid> <searchstrings> <searchstring>light_single</searchstrings> </searchstrings> <creationtime>2013-05-12t12:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:30.000+02:00</lastmodifiedtime> <maxnrofinstances>-1</maxnrofinstances> <maxbytesize>-1</maxbytesize> <maxinstanceage>-1</maxinstanceage> <contentinstancesreference>http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/conten tinstances</contentinstancesreference> <subcontainersreference>http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/subcontai ners</subcontainersreference> <subscriptionsreference>http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/subscript ions</subscriptionsreference> </container> Annex A.7.3 LIGHTS GET /gscl1/applications/ga1/containers/lights HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 36

Content-Length: 1020 <container id= http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights > <accessrightid>http://m2m.provider2.com:9000/accessrights/ar1</accessrightid> <searchstrings> <searchstring>light_common</searchstrings> </searchstrings> <creationtime>2013-05-12t12:03:35.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:35.000+02:00</lastmodifiedtime> <maxnrofinstances>-1</maxnrofinstances> <maxbytesize>-1</maxbytesize> <maxinstanceage>-1</maxinstanceage> <contentinstancesreference>http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/conten tinstances</contentinstancesreference> <subcontainersreference>http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/subcontai ners</subcontainersreference> <subscriptionsreference>http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/subscript ions</subscriptionsreference> </container> Annex A.8 Content instances collection Annex A.8.1 LIGHT1 GET /gscl1/applications/da1/containers/light1/contentinstances HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 2217 <contentinstances id= http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances > <creationtime>2013-05-12t12:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:30.000+02:00</lastmodifiedtime> <currentnrofinstances>3</currentnrofinstances> <currentbytesize>1463</currentbytesize> <contentinstancecollection> <contentinstance http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/ci0 > <creationtime>2013-05-12t11:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t11:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>68</contentsize> <content> <textcontent>off</textcontent> </content> id= 37

</contentinstance> <contentinstance http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/ci1 > <creationtime>2013-05-12t11:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t11:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>67</contentsize> <content> <textcontent>on</textcontent> </content> </contentinstance> <contentinstance http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/ci2 > <creationtime>2013-05-12t11:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t11:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>68</contentsize> <content> <textcontent>off</textcontent> </content> </contentinstance> </contentinstancecollection> id= id= <latest>http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/ci2</lat est> <oldest>http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/ci0</old est> <subscriptionsreference>http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentin stances/subscriptions</subscriptionsreference> </contentinstances> Annex A.8.2 LIGHT2 GET /gscl1/applications/da2/containers/light2/contentinstances HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 2217 <contentinstances id= http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances > <creationtime>2013-05-12t12:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:30.000+02:00</lastmodifiedtime> <currentnrofinstances>3</currentnrofinstances> <currentbytesize>1463</currentbytesize> <contentinstancecollection> <contentinstance http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/ci0 > <creationtime>2013-05-12t10:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t10:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> id= 38

<contentsize>68</contentsize> <content> <textcontent>off</textcontent> </content> </contentinstance> <contentinstance http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/ci1 > <creationtime>2013-05-12t10:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t10:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>67</contentsize> <content> <textcontent>on</textcontent> </content> </contentinstance> <contentinstance http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/ci2 > <creationtime>2013-05-12t10:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t10:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>68</contentsize> <content> <textcontent>off</textcontent> </content> </contentinstance> </contentinstancecollection> id= id= <latest>http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/ci2</lat est> <oldest>http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/ci0</old est> <subscriptionsreference>http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentin stances/subscriptions</subscriptionsreference> </contentinstances> Annex A.8.3 LIGHTS GET /gscl1/applications/ga1/containers/lights/contentinstances HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 2217 <contentinstances id= http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstances > <creationtime>2013-05-12t12:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:30.000+02:00</lastmodifiedtime> <currentnrofinstances>3</currentnrofinstances> <currentbytesize>1463</currentbytesize> <contentinstancecollection> <contentinstance http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstances/ci0 > <creationtime>2013-05-12t11:03:30.000+02:00</creationtime> id= 39

<lastmodifiedtime>2013-05-12t11:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>68</contentsize> <content> <textcontent>off</textcontent> </content> </contentinstance> <contentinstance http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstances/ci1 > <creationtime>2013-05-12t11:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t11:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>67</contentsize> <content> <textcontent>on</textcontent> </content> </contentinstance> <contentinstance http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstances/ci2 > <creationtime>2013-05-12t11:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t11:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>68</contentsize> <content> <textcontent>off</textcontent> </content> </contentinstance> </contentinstancecollection> id= id= <latest>http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstances/ci2</lat est> <oldest>http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstances/ci0</old est> <subscriptionsreference>http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentin stances/subscriptions</subscriptionsreference> </contentinstances> Annex A.9 Latest content instance Annex A.9.1 LIGHT1 GET /gscl1/applications/da1/containers/light1/contentinstances/latest HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 458 <contentinstance id= http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/ci2 > 40

<creationtime>2013-05-12t12:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>62</contentsize> <content> <textcontent>off</textcontent> </content> </contentinstance> Annex A.9.2 LIGHT2 GET /gscl1/applications/da2/containers/light2/contentinstances/latest HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 458 <contentinstance id= http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/ci2 > <creationtime>2013-05-12t12:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>62</contentsize> <content> <textcontent>off</textcontent> </content> </contentinstance> Annex A.9.3 LIGHTS GET /gscl1/applications/ga1/containers/lights/contentinstances/latest HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 458 <contentinstance id= http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstances/ci1 > <creationtime>2013-05-12t12:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t12:03:30.000+02:00</lastmodifiedtime> <contenttypes> <contenttype>text/plain</contenttype> </contenttypes> <contentsize>61</contentsize> <content> 41

<textcontent>on</textcontent> </content> </contentinstance> Annex A.10 Subscriptions Annex A.10.1 LIGHT1 GET /gscl1/applications/da1/containers/light1/contentinstances/subscriptions/s1 HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 646 <subscription id= http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstances/subscription s/s1 > <creationtime>2013-05-12t13:03:30.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t13:03:30.000+02:00</lastmodifiedtime> <filtercriteria> <attributeaccessor>http://m2m.provider2.com:9000/gscl1/applications/da1/containers/light1/contentinstanc es/latest</attributeaccessor> </filtercriteria> <subscriptiontype>asynchronous</subscriptiontype> <contact>http://m2m.provider3.com:9000/da1</contact> </subscription> Annex A.10.2 LIGHT2 GET /gscl1/applications/da2/containers/light2/contentinstances/subscriptions/s1 HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 646 <subscription id= http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstances/subscription s/s1 > <creationtime>2013-05-12t13:03:34.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t13:03:34.000+02:00</lastmodifiedtime> <filtercriteria> <attributeaccessor>http://m2m.provider2.com:9000/gscl1/applications/da2/containers/light2/contentinstanc es/latest</attributeaccessor> </filtercriteria> 42

<subscriptiontype>asynchronous</subscriptiontype> <contact>http://m2m.provider4.com:9000/da2</contact> </subscription> Annex A.10.3 LIGHTS GET /gscl1/applications/ga1/containers/lights/contentinstances/subscriptions/s1 HTTP/1.1 From: http://m2m.provider2.com:9000/applications/ga1 Content-Length: 646 <subscription id= http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstances/subscription s/s1 > <creationtime>2013-05-12t13:03:37.000+02:00</creationtime> <lastmodifiedtime>2013-05-12t13:03:37.000+02:00</lastmodifiedtime> <filtercriteria> <attributeaccessor>http://m2m.provider2.com:9000/gscl1/applications/ga1/containers/lights/contentinstanc es/latest</attributeaccessor> </filtercriteria> <subscriptiontype>asynchronous</subscriptiontype> <contact>http://m2m.provider2.com:9000/ga1</contact> </subscription> 43