The CSE implementation successfully passes most of the oneM2M Release 1 test cases, and all relevant test cases from Release 2, 3 and 4.
The ACME CSE supports oneM2M release 1, 2a, 3, and 4 for the supported resource types and functionalities listed below.
The ACME CSE supports the following CSE types:
| CSE Type | Supported |
|---|---|
| IN | ✓ |
| MN | ✓ |
| ASN | ✓ |
The ACME CSE supports the following oneM2M resource types:

| Resource Type | Supported | Remarks & Limitations |
|---|---|---|
| Access Control Policy (ACP) | ✓ | Attribute-based access control is yet not supported |
| Action (ACTR) | ✓ | No support for the input attribute. |
| Application Entity (AE) | ✓ | |
| Container (CNT) | ✓ | |
| ContentInstance (CIN) | ✓ | |
| CrossResourceSubscription (CRS) | ✓ | |
| CSEBase (CB) | ✓ | |
| Dependency (DEPR) | ✓ | |
| FlexContainer & Specializations | ✓ | Any specialization is supported and validated. See Importing Attribute Policies for further details. Supported specializations include: TS-0023 R4, GenericInterworking, AllJoyn. |
| FlexContainerInstance | ✓ | Experimental. This is an implementation of the draft FlexContainerInstance specification. |
| Group (GRP) | ✓ | The support includes requests via the fopt (fanOutPoint) virtual resource. Groups may contain remote resources. |
| LocationPolicy (LCP) | ✓ | Only device based location policy is supported. The LCP's cnt stores geo-coordinates and geo-fencing results. |
| Management Objects | ✓ | See also the list of supported management objects. |
| Node (NOD) | ✓ | |
| Polling Channel (PCH) | ✓ | Support for Request and Notification long-polling via the pcu (pollingChannelURI) virtual resource. requestAggregation functionality is supported, too. |
| Remote CSE (CSR) | ✓ | Announced resources are supported. Transit request to resources on registered CSE's are supported. |
| Request (REQ) | ✓ | Support for non-blocking requests. |
| Schedule (SCH) | ✓ | Support for CSE communication, nodes, subscriptions and crossResourceSubscriptions. |
| SemanticDescriptor (SMD) | ✓ | Support for basic resource handling and semantic queries. |
| Subscription (SUB) | ✓ | Notifications via http(s) (direct url or an AE's Point-of-Access (POA)). BatchNotifications, attributes, statistics. Not all features are supported yet. |
| TimeSeries (TS) | ✓ | Including missing data notifications. |
| TimeSeriesInstance (TSI) | ✓ | dataGenerationTime attribute only supports absolute timestamps. |
| TimeSyncBeacon (TSB) | ✓ | Experimental. Implemented functionality might change according to specification changes. |
The following table presents the supported management object specifications.
| Management Objects |
|---|
| AreaNwkDeviceInfo (ANDI) |
| AreaNwkInfo (ANI) |
| Battery (BAT) |
| DataCollect (DATC) |
| DeviceCapability (DVC) |
| DeviceInfo (DVI) |
| EventLog (EVL) |
| Firmware (FWR) |
| Memory (MEM) |
| MyCertFileCred (NYCFC) |
| Reboot (REB) |
| Software (SWR) |
| WifiClient (WIFIC) |
| Functionality | Supported | Remark |
|---|---|---|
| AE registration | ✓ | |
| Blocking requests | ✓ | |
| Delayed request execution | ✓ | Through the Operation Execution Timestamp request attribute. |
| Discovery | ✓ | |
| Geo-query | ✓ | |
| Location | ✓ | Only *device based, and no network based location policies are supported. |
| Long polling | ✓ | Long polling for request unreachable AEs and CSEs through <pollingChannel>. |
| Non-blocking requests | ✓ | Non-blocking synchronous and asynchronous, and flex-blocking, incl. Result Persistence. |
| Notifications | ✓ | E.g. for subscriptions and non-blocking requests. |
| Partial Retrieve | ✓ | Support for partial retrieve of individual resource attributes. |
| Remote CSE registration | ✓ | |
| Request expiration | ✓ | The Request Expiration Timestamp request attribute |
| Request forwarding | ✓ | Forwarding requests from one CSE to another. |
| Request parameter validations | ✓ | |
| Resource addressing | ✓ | CSE-Relative, SP-Relative and Absolute as well as hybrid addressing are supported. |
| Resource announcements | ✓ | Under the CSEBaseAnnc resource (R4 feature). Bi-directional update sync. |
| Resource expiration | ✓ | |
| Resource validations | ✓ | |
| Result expiration | ✓ | The Result Expiration Timestamp request attribute. Result timeouts for non-blocking requests depend on the resource expiration interval. |
| Semantics | ✓ | Basic support for semantic descriptors and semantic queries and discovery. |
| Standard oneM2M requests | ✓ | CREATE, RETRIEVE, UPDATE, DELETE, NOTIFY |
| Subscriptions | ✓ | Incl. batch notification, and resource type and attribute filtering. |
| Time Synchronization | ✓ | |
| TimeSeries data handling | ✓ | Incl. missing data detection, monitoring and notifications. |
| Functionality | Remark |
|---|---|
| HTTP CORS | Support for Cross-Origin Resource Sharing to support http(s) redirects. |
| HTTP Authorization | Basic support for basic and bearer (token) authorization. |
| HTTP WSGI | Support for the Python Web Server Gateway Interface to improve integration with a reverse proxy or API gateway, ie. Nginx. |
| Text Console | Control and manage the CSE, inspect resources, run scripts in a text console. |
| Test UI | Text-based UI to inspect resources and requests, configurations, stats, and more |
| Testing: Upper Tester | Basic support for the Upper Tester protocol defined in TS-0019, and additional command execution support. |
| Request Recording | Record requests to and from the CSE to learn and debug requests over Mca and Mcc. |
| Script Interpreter | Lisp-based scripting support to extent functionalities, implement simple AEs, prototypes, test, ... |
| Web UI |
These features are prove-of-concept implementations of new and currently discussed oneM2M features. They are not yet part of the oneM2M standard.
| Functionality | Remark |
|---|---|
| Enhanced CSR functionality | Support of new eventEvaluationMode to react in missing events |
| Subscription References | Support for subscription references for resource instead of direct subscriptions. |
| Advanced Queries | Experimental implementation of a new query language to support enhanced query capabilities |
| Simplified Time Synchronization | Experimental implementation of a simplified time synchronization mechanism. |
| Support for DELETE requests for http/1.0 | Using PATCH requests to emulate DELETE requests for http/1.0 clients. |
The following result contents are implemented for standard oneM2M requests & discovery:
| Discovery Type | RCN |
|---|---|
| nothing | 0 |
| attributes | 1 |
| hierarchical address | 2 |
| hierarchical address + attributes | 3 |
| attributes + child-resources | 4 |
| attributes + child-resource-references | 5 |
| child-resource-references | 6 |
| original-resource | 7 |
| child-resources | 8 |
| modified attributes | 9 |
| semantic content | 10 |
| discovery result references | 11 |
| Notification Event Types | Supported |
|---|---|
| resourceUpdate | ✓ |
| resourceUpdate | ✓ |
| createDirectChild | ✓ |
| deleteDirectChild | ✓ |
| retrieveCNTNoChild | ✗ |
| triggerReceivedForAE | ✗ |
| blockingUpdate | ✓ |
| missingData | ✓ |
The following Protocol Bindings are supported:
| Protocol Binding | Supported | Remark |
|---|---|---|
| http | ✓ | incl. TLS (https) and CORS support. basic and bearer authentication. Experimental: Using PATCH to replace missing DELETE in http/1.0 |
| coap | ✗ | |
| mqtt | ✓ | incl. mqtts |
| WebSocket | ✗ |
The supported bindings can be used together, and combined and mixed in any way.
The following serialization types are supported:
| Serialization Type | Supported | Remark |
|---|---|---|
| JSON | ✓ | In addition to normal JSON syntax, C-style comments ("//...", "#..." and "/* ... */") are supported as well. |
| CBOR | ✓ | |
| XML | ✗ |
The supported serializations can be used together, e.g. between different or even the same entity.
The ACME CSE runs at least on the following runtime environments:
| Runtime Environment | Supported | Remark |
|---|---|---|
| Generic Linux | ✓ | Including Raspberry Pi OS (32bit) on Raspberry Pi 3 and 4. |
| Mac OS | ✓ | Intel and Apple silicon. |
| MS Windows | ✓ | |
| Jupyter Notebooks | ✓ | ACME CSE can be run headless inside a Jupyter Notebook. |
- The intention of this CSE implemention is to support education and learning, experiments, and demonstrations, but not a production environment. Use it at your own risk.
- The underlying communication stacks and database system are not optimized in any way for high-volume, high-availability, or high-reliability.
- Unsupported resource types are just stored, but no validations or functionality are provided for those resources.