.. _representations: ======================= Payload Representations ======================= In PyOpenADR, the complex hierarchies of the OpenADR XML-payloads are represented as Python dictionaries. These have been simplified as much as possible, allowing for a more natural and more readable experience. The following general principles have been applied to representing OpenADR objects in PyOpenADR: - All property names are represented in snake_case instead of CamelCase or mixedCase names. For example: ``requestID`` becomes ``request_id``. - For all properties, the ``oadr*`` and ``Ei*`` prefixes have been stripped away. For example: ``eiResponse`` becomes ``response`` and ``oadrResponse`` becomes ``response``. - OpenADR timestamps are converted to Python ``datetime.datetime`` objects. - OpenADR time intervals are converted to Python ``datetime.timedelta`` objects. oadrCanceledOpt =============== OpenADR payload: .. code-block:: xml 200 OK f48e3b7e78 pc1e8ace47 pyOpenADR representation: .. code-block:: python3 {'opt_id': 'pc1e8ace47', 'response': {'request_id': 'f48e3b7e78', 'response_code': 200, 'response_description': 'OK'}} oadrCanceledPartyRegistration ============================= OpenADR payload: .. code-block:: xml 200 OK aba0a805de zf68abb5c2 123ABC pyOpenADR representation: .. code-block:: python3 {'registration_id': 'zf68abb5c2', 'response': {'request_id': 'aba0a805de', 'response_code': 200, 'response_description': 'OK'}, 'ven_id': '123ABC'} oadrCanceledReport ================== OpenADR payload: .. code-block:: xml 200 OK e4dfe735ea v5d42c35e6 e8bf753e31 pyOpenADR representation: .. code-block:: python3 {'pending_reports': [{'request_id': 'v5d42c35e6'}, {'request_id': 'e8bf753e31'}], 'response': {'request_id': 'e4dfe735ea', 'response_code': 200, 'response_description': 'OK'}} oadrCanceledReport ================== OpenADR payload: .. code-block:: xml 200 OK c36bce5dcb b04cbfb723 ra6231a650 123ABC pyOpenADR representation: .. code-block:: python3 {'pending_reports': [{'request_id': 'b04cbfb723'}, {'request_id': 'ra6231a650'}], 'response': {'request_id': 'c36bce5dcb', 'response_code': 200, 'response_description': 'OK'}, 'ven_id': '123ABC'} oadrCancelOpt ============= OpenADR payload: .. code-block:: xml u07a26b1cc b1ef7afecc 123ABC pyOpenADR representation: .. code-block:: python3 {'opt_id': 'b1ef7afecc', 'request_id': 'u07a26b1cc', 'ven_id': '123ABC'} oadrCancelPartyRegistration =========================== OpenADR payload: .. code-block:: xml z05e4ff0aa pfe04d8439 123ABC pyOpenADR representation: .. code-block:: python3 {'registration_id': 'pfe04d8439', 'request_id': 'z05e4ff0aa', 'ven_id': '123ABC'} oadrCancelReport ================ OpenADR payload: .. code-block:: xml kcb7b5cf7a u1ebe92deb true 123ABC pyOpenADR representation: .. code-block:: python3 {'report_request_id': 'u1ebe92deb', 'report_to_follow': True, 'request_id': 'kcb7b5cf7a', 'ven_id': '123ABC'} oadrCreatedEvent ================ OpenADR payload: .. code-block:: xml 200 OK yaa3ee03b1 200 OK ycab9acb9f od864b4ea6 1 optIn 200 OK bf2aad9af8 hc6cf67dab 1 optIn 200 OK jefb88dcbd qdff0da955 1 optIn 123ABC pyOpenADR representation: .. code-block:: python3 {'event_responses': [{'event_id': 'od864b4ea6', 'modification_number': 1, 'opt_type': 'optIn', 'request_id': 'ycab9acb9f', 'response_code': 200, 'response_description': 'OK'}, {'event_id': 'hc6cf67dab', 'modification_number': 1, 'opt_type': 'optIn', 'request_id': 'bf2aad9af8', 'response_code': 200, 'response_description': 'OK'}, {'event_id': 'qdff0da955', 'modification_number': 1, 'opt_type': 'optIn', 'request_id': 'jefb88dcbd', 'response_code': 200, 'response_description': 'OK'}], 'response': {'request_id': 'yaa3ee03b1', 'response_code': 200, 'response_description': 'OK'}, 'ven_id': '123ABC'} oadrCreatedReport ================= OpenADR payload: .. code-block:: xml 200 OK ie8ff94fbc p8c56f9ed9 hab1cced95 123ABC pyOpenADR representation: .. code-block:: python3 {'pending_reports': [{'request_id': 'p8c56f9ed9'}, {'request_id': 'hab1cced95'}], 'response': {'request_id': 'ie8ff94fbc', 'response_code': 200, 'response_description': 'OK'}, 'ven_id': '123ABC'} oadrCreatedEvent ================ OpenADR payload: .. code-block:: xml 200 OK yde9c0369d 200 OK zc9523b16d fefaa2b0f2 1 optIn 200 OK tbeecb7c97 t63a63fea4 1 optOut 123ABC pyOpenADR representation: .. code-block:: python3 {'event_responses': [{'event_id': 'fefaa2b0f2', 'modification_number': 1, 'opt_type': 'optIn', 'request_id': 'zc9523b16d', 'response_code': 200, 'response_description': 'OK'}, {'event_id': 't63a63fea4', 'modification_number': 1, 'opt_type': 'optOut', 'request_id': 'tbeecb7c97', 'response_code': 200, 'response_description': 'OK'}], 'response': {'request_id': 'yde9c0369d', 'response_code': 200, 'response_description': 'OK'}, 'ven_id': '123ABC'} oadrCreatedPartyRegistration ============================ OpenADR payload: .. code-block:: xml 200 OK k6565d9280 o852fdbac9 123ABC VTN123 2.0b simpleHttp pyOpenADR representation: .. code-block:: python3 {'profiles': [{'profile_name': '2.0b', 'transports': [{'transport_name': 'simpleHttp'}]}], 'registration_id': 'o852fdbac9', 'response': {'request_id': 'k6565d9280', 'response_code': 200, 'response_description': 'OK'}, 'ven_id': '123ABC', 'vtn_id': 'VTN123'} oadrCreatedReport ================= OpenADR payload: .. code-block:: xml 200 OK gde557fcae e1e16137f3 d0f2bcbe89 pyOpenADR representation: .. code-block:: python3 {'pending_reports': [{'request_id': 'e1e16137f3'}, {'request_id': 'd0f2bcbe89'}], 'response': {'request_id': 'gde557fcae', 'response_code': 200, 'response_description': 'OK'}} oadrCreateOpt ============= OpenADR payload: .. code-block:: xml l170fb7ea4 optIn participating VEN123 2020-07-09T15:54:03.151236Z k6dc07ece8 sdfe18dd5c 1 123ABC pyOpenADR representation: .. code-block:: python3 {'created_date_time': datetime.datetime(2020, 7, 9, 15, 54, 3, 151236, tzinfo=datetime.timezone.utc), 'event_id': 'sdfe18dd5c', 'modification_number': 1, 'opt_id': 'l170fb7ea4', 'opt_reason': 'participating', 'opt_type': 'optIn', 'request_id': 'k6dc07ece8', 'targets': [{'ven_id': '123ABC'}], 'ven_id': 'VEN123'} oadrCreatePartyRegistration =========================== OpenADR payload: .. code-block:: xml g31f3a2aae 123ABC 2.0b simpleHttp http://localhost false false test true pyOpenADR representation: .. code-block:: python3 {'http_pull_model': True, 'profile_name': '2.0b', 'report_only': False, 'request_id': 'g31f3a2aae', 'transport_address': 'http://localhost', 'transport_name': 'simpleHttp', 'ven_id': '123ABC', 'ven_name': 'test', 'xml_signature': False} oadrCreateReport ================ OpenADR payload: .. code-block:: xml sdbbdefaad d2b7bade5f 9c8bdc00e7 PT15M PT15M 2019-11-19T11:00:18.672768Z PT2H PT5M d6e2e07485 Direct Read 123ABC pyOpenADR representation: .. code-block:: python3 {'report_requests': [{'report_request_id': 'd2b7bade5f', 'report_specifier': {'granularity': datetime.timedelta(seconds=900), 'report_back_duration': datetime.timedelta(seconds=900), 'report_interval': {'dtstart': datetime.datetime(2019, 11, 19, 11, 0, 18, 672768, tzinfo=datetime.timezone.utc), 'duration': datetime.timedelta(seconds=7200), 'tolerance': {'tolerate': {'startafter': datetime.timedelta(seconds=300)}}}, 'report_specifier_id': '9c8bdc00e7', 'specifier_payload': {'r_id': 'd6e2e07485', 'reading_type': 'Direct ' 'Read'}}}], 'request_id': 'sdbbdefaad', 'ven_id': '123ABC'} oadrDistributeEvent =================== OpenADR payload: .. code-block:: xml 200 OK 123 i5fea744ae VTN123 ifdda7aff6 1 2020-07-09T15:54:03.166717Z 1 http://MarketContext1 2020-07-09T15:54:03.166717Z near false This is an event 2020-07-09T15:55:03.166717Z PT10M PT1M 1 8 PT1M 2 10 PT1M 3 12 PT1M 4 14 PT1M 5 16 PT1M 6 18 PT1M 7 20 PT1M 8 10 PT1M 9 20 LOAD_CONTROL x-loadControlCapacity zccf1b86ee 9.99 VEN001 VEN002 always pyOpenADR representation: .. code-block:: python3 {'events': [{'active_period': {'dtstart': datetime.datetime(2020, 7, 9, 15, 55, 3, 166717, tzinfo=datetime.timezone.utc), 'duration': datetime.timedelta(seconds=600)}, 'event_descriptor': {'created_date_time': datetime.datetime(2020, 7, 9, 15, 54, 3, 166717, tzinfo=datetime.timezone.utc), 'event_id': 'ifdda7aff6', 'event_status': 'near', 'market_context': 'http://MarketContext1', 'modification_date_time': datetime.datetime(2020, 7, 9, 15, 54, 3, 166717, tzinfo=datetime.timezone.utc), 'modification_number': 1, 'priority': 1, 'test_event': 'false', 'vtn_comment': 'This is an event'}, 'event_signals': [{'current_value': 9.99, 'intervals': [{'duration': datetime.timedelta(seconds=60), 'signal_payload': 8, 'uid': 1}, {'duration': datetime.timedelta(seconds=60), 'signal_payload': 10, 'uid': 2}, {'duration': datetime.timedelta(seconds=60), 'signal_payload': 12, 'uid': 3}, {'duration': datetime.timedelta(seconds=60), 'signal_payload': 14, 'uid': 4}, {'duration': datetime.timedelta(seconds=60), 'signal_payload': 16, 'uid': 5}, {'duration': datetime.timedelta(seconds=60), 'signal_payload': 18, 'uid': 6}, {'duration': datetime.timedelta(seconds=60), 'signal_payload': 20, 'uid': 7}, {'duration': datetime.timedelta(seconds=60), 'signal_payload': 10, 'uid': 8}, {'duration': datetime.timedelta(seconds=60), 'signal_payload': 20, 'uid': 9}], 'signal_id': 'zccf1b86ee', 'signal_name': 'LOAD_CONTROL', 'signal_type': 'x-loadControlCapacity'}], 'response_required': 'always', 'targets': [{'ven_id': 'VEN001'}, {'ven_id': 'VEN002'}]}], 'request_id': 'i5fea744ae', 'response': {'request_id': 123, 'response_code': 200, 'response_description': 'OK'}, 'vtn_id': 'VTN123'} oadrPoll ======== OpenADR payload: .. code-block:: xml 123ABC pyOpenADR representation: .. code-block:: python3 {'ven_id': '123ABC'} oadrQueryRegistration ===================== OpenADR payload: .. code-block:: xml i8cf15d21f pyOpenADR representation: .. code-block:: python3 {'request_id': 'i8cf15d21f'} oadrRegisteredReport ==================== OpenADR payload: .. code-block:: xml 200 OK uadb7d5fe5 f5308f6138 se40c348d9 PT15M PT15M 2020-07-09T15:54:03.184498Z PT2H PT5M PT30M PT15M PT5M u461c6e37e Direct Read tc88cf616d le65d1bd2e PT15M PT15M 2020-07-09T15:54:03.184526Z PT2H PT5M PT30M PT15M PT5M caaff64e5a Direct Read VEN123 pyOpenADR representation: .. code-block:: python3 {'report_requests': [{'report_request_id': 'f5308f6138', 'report_specifier': {'granularity': datetime.timedelta(seconds=900), 'report_back_duration': datetime.timedelta(seconds=900), 'report_interval': {'dtstart': datetime.datetime(2020, 7, 9, 15, 54, 3, 184498, tzinfo=datetime.timezone.utc), 'duration': datetime.timedelta(seconds=7200), 'notification': datetime.timedelta(seconds=1800), 'ramp_up': datetime.timedelta(seconds=900), 'recovery': datetime.timedelta(seconds=300), 'tolerance': {'tolerate': {'startafter': datetime.timedelta(seconds=300)}}}, 'report_specifier_id': 'se40c348d9', 'specifier_payload': {'r_id': 'u461c6e37e', 'reading_type': 'Direct ' 'Read'}}}, {'report_request_id': 'tc88cf616d', 'report_specifier': {'granularity': datetime.timedelta(seconds=900), 'report_back_duration': datetime.timedelta(seconds=900), 'report_interval': {'dtstart': datetime.datetime(2020, 7, 9, 15, 54, 3, 184526, tzinfo=datetime.timezone.utc), 'duration': datetime.timedelta(seconds=7200), 'notification': datetime.timedelta(seconds=1800), 'ramp_up': datetime.timedelta(seconds=900), 'recovery': datetime.timedelta(seconds=300), 'tolerance': {'tolerate': {'startafter': datetime.timedelta(seconds=300)}}}, 'report_specifier_id': 'le65d1bd2e', 'specifier_payload': {'r_id': 'caaff64e5a', 'reading_type': 'Direct ' 'Read'}}}], 'response': {'request_id': 'uadb7d5fe5', 'response_code': 200, 'response_description': 'OK'}, 'ven_id': 'VEN123'} oadrRequestEvent ================ OpenADR payload: .. code-block:: xml oa1c52db3f 123ABC pyOpenADR representation: .. code-block:: python3 {'request_id': 'oa1c52db3f', 'ven_id': '123ABC'} oadrRequestReregistration ========================= OpenADR payload: .. code-block:: xml 123ABC pyOpenADR representation: .. code-block:: python3 {'ven_id': '123ABC'} oadrResponse ============ OpenADR payload: .. code-block:: xml 200 OK i4a4d03ae5 123ABC pyOpenADR representation: .. code-block:: python3 {'response': {'request_id': 'i4a4d03ae5', 'response_code': 200, 'response_description': 'OK'}, 'ven_id': '123ABC'} oadrResponse ============ OpenADR payload: .. code-block:: xml 200 OK 123ABC pyOpenADR representation: .. code-block:: python3 {'response': {'request_id': None, 'response_code': 200, 'response_description': 'OK'}, 'ven_id': '123ABC'} oadrUpdatedReport ================= OpenADR payload: .. code-block:: xml 200 OK icaffaa44f ra11e4fee3 kbf16facdd kfbae403c3 k91557da99 false 123ABC 123ABC pyOpenADR representation: .. code-block:: python3 {'cancel_report': {'report_request_id': ['kbf16facdd', 'kfbae403c3', 'k91557da99'], 'report_to_follow': False, 'request_id': 'ra11e4fee3', 'ven_id': '123ABC'}, 'response': {'request_id': 'icaffaa44f', 'response_code': 200, 'response_description': 'OK'}, 'ven_id': '123ABC'}