├── .github └── workflows │ └── publish-openapi-docs.yml ├── CHANGELOG.md ├── CNAME ├── LICENSE ├── README.md ├── best_practice ├── README.md ├── Smart Home Controller Issuing CA.pem └── Smart Home Controller Productive Root CA.pem ├── css ├── override.css └── swagger-custom.css ├── images ├── bosch_icon.png ├── bosch_smart_home.jpg └── bosch_smart_home_logo.png ├── index.html ├── openapi ├── ClimateControl-local-openapi-v3.yml ├── DoorWindowContact-local-openapi-v3.yml ├── IntrusionDetectionSystem-local-openapi-v3.yml ├── LightControl-II-local-openapi-v3.yml ├── LightControl-local-openapi-v3.yml ├── MainResources-local-openapi-v3.yml ├── MotionDetector-local-openapi-v3.yml ├── OutdoorSiren-local-openapi-v3.yml ├── PresenceSimulationSystem-local-openapi-v3.yml ├── RoomThermostat-local-openapi-v3.yml ├── SecurityCamera360-local-openapi-v3.yml ├── SecurityCameraEyes-local-openapi-v3.yml ├── Shutter-II-local-openapi-v3.yml ├── Shutter-local-openapi-v3.yml ├── SmartPlug-local-openapi-v3.yml ├── SmokeDetector-II-local-openapi-v3.yml ├── SmokeDetector-local-openapi-v3.yml ├── Thermostat-II-local-openapi-v3.yml ├── Thermostat-local-openapi-v3.yml ├── Twinguard-local-openapi-v3.yml ├── UniversalSwitch-local-openapi-v3.yml └── WaterDetectionSystem-local-openapi-v3.yml └── postman ├── Bosch Smart Home Controller.postman_collection.json ├── Bosch Smart Home Controller.postman_environment.json ├── README.md └── images ├── postman_add_certificate.png ├── postman_add_pems.png ├── postman_check_shc_connection.png ├── postman_collections.png ├── postman_disable_ssl_verification.png ├── postman_environment_host.png ├── postman_environment_pass.png ├── postman_new_client.png ├── postman_settings.png └── shc-client-schematic-view.png /.github/workflows/publish-openapi-docs.yml: -------------------------------------------------------------------------------- 1 | name: Publish OpenAPI documentation 2 | on: 3 | push: 4 | branches: 5 | - master 6 | paths: 7 | - 'openapi/**.yml' 8 | workflow_dispatch: 9 | jobs: 10 | # Single deploy job no building 11 | deploy: 12 | environment: 13 | name: github-pages 14 | url: $ 15 | runs-on: ubuntu-latest 16 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 17 | permissions: 18 | contents: read 19 | pages: write 20 | id-token: write 21 | steps: 22 | - name: Checkout 23 | uses: actions/checkout@v3 24 | - name: Setup Pages 25 | uses: actions/configure-pages@v3 26 | - name: Upload Artifact 27 | uses: actions/upload-pages-artifact@v2 28 | with: 29 | # upload entire directory 30 | path: '.' 31 | - name: Deploy to GitHub Pages 32 | id: deployment 33 | uses: actions/deploy-pages@v2 34 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # Change Log 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](http://keepachangelog.com/) 6 | and this project adheres to [Semantic Versioning](http://semver.org/). 7 | 8 | 9 | ## [3.12.0] - 2024-07-31 10 | ### Changed 11 | - New: Automation trigger 12 | - Improvements: OpenAPI documentation (thanks @SteffenMangold) 13 | 14 | ## [3.8.0] - 2023-12-05 15 | ### Changed 16 | - New: UserDefinedStates 17 | 18 | ## [3.2.1] - 2023-02-09 19 | ### Changed 20 | - Added OpenAPI documentation 21 | 22 | ## [3.2.0] - 2022-12-09 23 | ### Changed 24 | - Updated HTTP request header to use "api-version : 3.2" instead of "api-version : 2.1" 25 | - Synced Postman collection version with API version 3.2 26 | - Updated Postman environment variables 27 | - Removed deprecated requests for Intrusion Detection from Postman collection 28 | - New: Door/Window Contact II Bypass and Vibration states 29 | - New: Motion Detector Illuminance state (in Lux) 30 | - New: Shutter Control II BlindsControl state for controlling the angle of blinds 31 | - New: Shutter Control II BlindsSceneControl state for controlling the angle and level of blinds at the same time 32 | - Hint: Light / Shutter Control II works with child devices using "#" in the device IDs; make sure to escape "#" in URLs with "%23" 33 | - Hint: Light Control II can control two lamps (two child devices); PowerSwitch state must be PUT/GET on child devices 34 | - Hint: PowerMeter state also works with Light / Shutter Control II now 35 | 36 | ## [2.1.0] - 2021-01-22 37 | ### Changed 38 | - Updated HTTP request header to use "api-version : 2.1" instead of "api-version : 1.0" 39 | - Synced Postman collection version with API version 2.1 40 | - Updated Postman environment variables 41 | - Added new requests for Intrusion Detection in Postman collection in folder Domains 42 | - Deprecated old requests for Intrusion Detection (will be removed in the future) in Postman collection 43 | 44 | ### Deprecated 45 | - API 1.x will no longer be supported beginning with the Smart Home Controller update scheduled for May 2021 46 | 47 | ## [0.5.0] - 2021-01-20 48 | ### Changed 49 | - Initial release 50 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | local.apidocs.bosch-smarthome.com -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bosch Smart Home Controller Local API 2 | 3 | 4 | ## Contents 5 | 6 | - [Overview](#overview) 7 | - [OpenAPI Documentation](https://local.apidocs.bosch-smarthome.com/) 8 | - [Postman Collection](postman/) 9 | * [Import the collection, the environment, the certificate and the key into Postman](postman#import-the-collection-the-environment-the-certificate-and-the-key-into-postman) 10 | * [Check the connection with the Bosch Smart Home Controller in your local network](postman#check-the-connection-with-the-bosch-smart-home-controller-in-your-local-network) 11 | * [Register a New Client to the Bosch Smart Home Controller](postman#register-a-new-client-to-the-bosch-smart-home-controller) 12 | * [Get events from the Bosch Smart Home Controller (Long Polling)](postman#get-events-from-the-bosch-smart-home-controller-long-polling) 13 | - [Best Practice](best_practice/) 14 | * [Watch this repository](best_practice#watch-this-repository) 15 | * [Use Long Polling instead of Short Polling](best_practice#use-long-polling-instead-of-short-polling) 16 | * [Limit the number of requests in a given time period](best_practice#limit-the-number-of-requests-in-a-given-time-period) 17 | * [Host Verification](best_practice#host-verification) 18 | - [Terms and Conditions](#terms-and-conditions) 19 | 20 | ## Overview 21 | 22 | [Bosch Smart Home](https://www.bosch-smarthome.com/) products allow you to automatically and remotely control the processes in your home. Each device has a unique purpose in your Smart Home and provides ease and convenience to your changing daily routines. Whether you want to network your heating system or secure the safety of your home, the Bosch Smart Home System offers you complete and personalised solutions to you and your home's needs. 23 | 24 | With this documentation you can make your Bosch Smart Home System interoperable. If you are new to this topic, start to play with the [Postman Collection](postman/) to understand how the connection is established and how to get and set states. Postman is a collaboration platform for API development and has the advantage that it can generate code in many languages. 25 | 26 | Once you are familiar with the principles of the communication, use the [OpenAPI Documentation](https://local.apidocs.bosch-smarthome.com/) to understand how all the devices, rooms, messages, services and states are getting requested. You will also find the structure and content of all JSON responses, errors and HTTP status codes there. 27 | 28 | Finally, you should take a look at the [Best Practice](best_practice/) section in order to establish an optimal communication with the Bosch Smart Home Controller. 29 | 30 | ## Terms and Conditions 31 | Robert Bosch Smart Home GmbH, Schockenriedstr. 17, 70565 Stuttgart, Germany ("Bosch Smart Home") provides a description of the local Bosch Smart Home Controller REST API, that allows **private, non-profit** Developers ("Developer") to locally control their Bosch Smart Home Devices. 32 | 33 | By accepting these Terms and Conditions, through either accessing or using the API, the Developer agrees to be bound by these Terms and Conditions. 34 | 35 | ### Definitions 36 | "API" refers to the interface functionality provided by Bosch Smart Home allowing private, non-profit Developers to access Bosch Smart Home Data. 37 | 38 | "Application" refers to web or other software services or applications created by Developer that utilize or interact with the API and are authorized to be published. 39 | 40 | "Client" refers to software created by developers using the API. Clients can be, for example (but are not limited to), mobile apps or web services. 41 | 42 | "Data" refers to data made available by accessing the API of a specific, local and personally owned Smart Home Controller ("SHC"). 43 | 44 | "Documentation" refers to the provided API description and usage examples. 45 | 46 | "Commercial" means intended for or directed towards commercial advantage or monetary compensation. 47 | 48 | Privacy Policy refers to the Privacy Policy found [here](https://www.bosch-smarthome.com/uk/en/privacy-statement). 49 | 50 | ### Purpose and License 51 | These Terms and Conditions and any and all restrictions and policies implemented by Bosch Smart Home from time to time with respect to the API as set forth in the Documentation govern Developers rights to use and access the API for the purpose of developing, implementing and publishing Applications. 52 | 53 | Subject to these Terms and Conditions, including the restrictions set forth, Bosch Smart Home grants to Developer a non-exclusive, non-transferable, non-sublicensable, worldwide, revocable right and license during the Term to privately use and make calls to the API to develop, implement and distribute Applications solely for non profit usage. 54 | 55 | Developer grants to Bosch Smart Home a non-exclusive, worldwide, royalty-free license to market, sell and distribute such Applications; and to permit others to access, install, purchase and (in the case of downloadable software applications) download such Applications. 56 | 57 | ### Restrictions 58 | The licenses of these Terms and Conditions are explicitly conditioned on Developers adherence to the following restrictions and compliance with its responsibilities as set forth herein. 59 | 60 | The use of the API only applies to private, non-profit individuals. A commercial use in any way, either direct or indirect, is prohibited. 61 | 62 | Using the API requires identification against the Bosch Smart Home Controller with an individual Client ID and Client Name that starts with "oss_" followed by the name of the open source project, or the name of the developer. 63 | 64 | The Client must register with the primary role "ROLE_RESTRICTED_CLIENT". 65 | 66 | Developer will be solely responsible for the technical installation and operation of its Applications; creating and displaying information and content on, through or within its Applications; ensuring that its Applications do not violate or infringe the Intellectual Property Rights of any third party; ensuring that Applications are not offensive, profane, obscene, libelous or otherwise illegal; ensuring that its Applications do not contain or introduce Malicious Software into a Service, an API, any Service Data or other data stored or transmitted using the Service; and ensuring that its Applications are not designed to or utilized for the purpose of spamming any Bosch Smart Home subscribers, Agents or End-Users. 67 | 68 | Developers shall, in particular, not bypass any authentication or encryption mechanisms, or misuse API interfaces for purposes other than those, which are clearly intended by this Documentation (e.g. reading Data from the Bosch Smart Home System). 69 | 70 | Developer shall not, under any circumstances, through Applications or otherwise, repackage or resell the Services, or any part thereof, API or Data. 71 | 72 | Developer is not permitted to use the API, or any Data in any manner that does or could potentially undermine the security of the Services, the API, Data or any other information stored or transmitted using the Services. 73 | 74 | In addition, Developer shall not, and shall not attempt to: interfere with, modify or disable any features, functionality or security controls of the Services or the API, defeat, avoid, bypass, remove, deactivate or otherwise circumvent any protection mechanisms for the Service or the API, or reverse engineer, decompile, disassemble or derive source code, underlying ideas, algorithms, structure or organizational form from the Services or the API. 75 | 76 | Developers shall fully comply with all applicable governmental, legal, regulatory and professional requirements when using the API, including but not limited to, copyright, trademark rights and data protection. The use of claims (e.g. "works with Bosch") or trademarks (e.g. Bosch logos of any kind) that indicates a direct or indirect involvement with Bosch is prohibited. 77 | 78 | Applications shall not, in any manner, display any form of advertising within or connected to any Service Data received by any Subscriber, Agent or End-User. 79 | 80 | Bosch Smart Home may at its sole and exclusive discretion, change, alter, modify, add and remove features, content and other materials of the Documentation and/or API at any time. Bosch Smart Home may suspend or discontinue any feature or functionality provided at any time without any prior notice, obligation or liability. The developer is aware that changes in the API might require changes in the Client. The costs for such changes have to be borne by the developer. 81 | 82 | Any technical implementation and fulfillment of system requirements of the API is the sole responsibility of the Developer. Developers are obliged to adhere to the requirements of the API, particularly regarding the correct technical integration and use of the API (see documentation). The user acknowledges that an incorrect technical integration or use may lead to defects in the functions of the API, or even the entire Client, or the connected Bosch Smart Home Devices. 83 | 84 | Application shall not, and shall not attempt to connect with any Bosch backend system, which explicitly is not part of the allowed local API use, including systems provided by third parties. 85 | 86 | Developers shall not use the API for any action that can cause damages due to the interaction of the API or the Client with the home appliances (e.g. by bypassing security prompts on the home appliances, or by executing commands that can cause harm to life or limb, or to the home appliances, or to any other goods). 87 | 88 | Developers may produce and reproduce this Documentation for their own use, but may not share a modified or derived version of this Documentation. 89 | 90 | Developers shall not use the API for publication of explicit content or offensive communication. 91 | 92 | The Documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 93 | 94 | Developer must comply with all restrictions and guidelines set forth in this Agreement in all uses of the API and Data. If Bosch Smart Home believes, in its sole discretion, that Developer has violated or attempted to violate any term, condition or the spirit of this Agreement, the license afforded Developer pursuant to this Agreement may be temporarily or permanently revoked, with or without notice to Developer. 95 | 96 | ### Data 97 | To the extent Developers Applications transmit Data outside a Service, Developer represents and warrants that he has notified all users of such Applications that their Data will be transmitted outside the Service and that Bosch Smart Home is not responsible for the privacy, security or integrity of such Data. 98 | 99 | ### Modifications 100 | Developer acknowledges and agrees that Bosch Smart Home may modify this Agreement, the Services, the API, the General API Policies, and the Privacy Policy, from time to time (a "Modification"). Developer further acknowledges and agrees that such Modifications may be implemented at any time and without any notice. 101 | 102 | Developer acknowledges that a Modification may have an adverse effect on Applications, including but not limited to changing the manner in which Applications communicate with the API and display or transmit Data. 103 | 104 | Bosch Smart Home shall have no liability of any kind to Developer or any user of Developer's Applications with respect to such Modifications or any adverse effects resulting from such Modifications. 105 | 106 | ### Warranty 107 | Bosch Smart Home asks all Developers working with their Documentation to inform Bosch Smart Home about any defects found in the API as soon as possible to give Bosch Smart Home a chance to remedy it. 108 | 109 | All aspects of the API, including all server and network components, are provided on an "as is" and "as available" basis. 110 | 111 | Developer acknowledges that Bosch Smart Home does not warrant that the API will be uninterrupted, timely, secure, or error-free and no information or advice obtained by Developer from Bosch Smart Home or through the Service shall create any warranty not expressly stated in this agreement. Besides that, the statutory warranty shall apply. 112 | 113 | ### Liability 114 | In accordance with the provisions of law, Bosch Smart Home shall be liable for damages in the following cases: damage to persons; damage governed by the German Product Liability Act (Produkthaftungsgesetz); damage caused by fraudulent behavior or with intent on the part of Bosch Smart Home; and damage caused by gross negligence on the part of their legal representatives or executive staff. 115 | 116 | Without prejudice to the liability defined in the section above, the Bosch Smart Homes liability for damages shall be limited to the level of damage foreseeable in contracts of this kind in the case of damage resulting from an ordinarily negligent breach of fundamental contractual obligations as well as in the case of damage caused due to gross negligence by the ordinary vicarious agents. 117 | 118 | Except where there are explicit provisions to the contrary in these Terms and Conditions, Bosch Smart Home shall bear no liability beyond that defined above. 119 | 120 | Contributory negligence on the part of the Developer must be taken into account. 121 | 122 | ### Indemnity 123 | Developer will indemnify and hold Bosch Smart Home harmless against any claim brought by a third party against Bosch Smart Home arising from or related to any breach of an obligation, representation, warranty, covenant or other provision of these Terms and Conditions by Developer or any matter which. Developer has expressly agreed to be responsible pursuant to these Terms and Conditions. 124 | 125 | ### Support 126 | This Agreement does not entitle Developer to any support for the Services or the API, unless Developer makes separate arrangements with Bosch Smart Home for such support. 127 | 128 | Developer acknowledges and agrees that Bosch Smart Home has no obligation to provide support or technical assistance to the users of Applications. 129 | 130 | However, Bosch Smart Home will try their best to respond to issues raised in the [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). Developer should report any trouble he might have with the Documentation exclusively there. 131 | 132 | ### Confidentiality 133 | Developer may from time to time, gain access to Confidential Information. Developer may use Confidential Information only to the extent necessary to exercise its rights under this Terms and Conditions. Subject to the express permissions set forth herein, Developer may not disclose Confidential Information to a third party without the prior express consent of Bosch Smart Home, provided in writing or by email. Without limiting any other obligation of Developer under this Terms and Conditions, Developer agrees that he will protect Confidential Information from unauthorized use, access, or disclosure in the same manner that Developer would use to protect its own confidential and proprietary information of a similar nature and in any event with no less than a reasonable degree of care. 134 | 135 | ### General provisions 136 | To the extent permitted by law, the exclusive place of jurisdiction for any legal disputes shall be Stuttgart, Germany. 137 | 138 | These Terms and Conditions as well as all agreements between Bosch Smart Home and the Developer in this regard shall be subject to German law. It is hereby explicitly stipulated that the United Nations Convention on Contracts for the International Sale of Goods shall not be applicable. 139 | 140 | Should a provision be or become invalid, this shall not affect the validity or effectiveness of the other provisions. In such a case, the invalid provision should be replaced by a valid agreement that is as similar as possible to the commercial intention of the original, invalid provision. 141 | 142 | *November 26th, 2019* 143 | -------------------------------------------------------------------------------- /best_practice/README.md: -------------------------------------------------------------------------------- 1 | # Best Practice 2 | In order to get the best user experience when using the local interface of your Bosch Smart Home Controller, we have a few best practice tips for you. These tips should be considered and implemented in any public open source project that interacts with the Bosch Smart Home Controller. 3 | 4 | ## Watch this repository 5 | First of all, watch this repository to get notified when we change or update our Terms and Conditions or when there are changes or updates in the API. In case the Terms and Conditions are changed, the commit message will always contain the keyword `T&C`. In case the API is changed or updated, the commit message will always contain the keyword `API`. 6 | 7 | ## Use Long Polling instead of Short Polling 8 | In order to get notified as soon as a value changes, it is recommended to use the [Long Polling mechanism to receive events](https://github.com/BoschSmartHome/bosch-shc-api-docs/tree/master/postman#get-events-from-the-bosch-smart-home-controller-long-polling) (see Postman collection 'Long Polling Subscribe'). Long Polling is a mechanism in which the client makes a request, and the server keeps the connection open until there is new information available. Once available, the server responds by sending the new information to the client and closes the connection afterwards. As soon as the client receives the new information, it immediately sends another request and the process is repeated. This mechanism also ensures that you do not miss any events, because the Bosch Smart Home Controller keeps all information for the client until the client starts another Long Polling request. 9 | Please be aware that every subscription has a maximum age of 24 hours and an inactivity timeout of 5 minutes, i.e. a new subscription has to be requested if a subscription ID is either used for 24 hours or no long-poll request was sent for 5 minutes. A long-poll request will fail after the corresponding subscription ID has expired. Re-subscribing and then using the new subscription ID solves this. 10 | 11 | ### Limit the number of requests in a given time period 12 | In addition to the use of the Long Polling mechanism, it is also advisable to keep the number of requests in a given time period low. The number of requests the Bosch Smart Home Controller can process depends heavily on how many edge devices and clients are paired with it. 13 | 14 | You should also consider that a large number of requests flood the log file. In the event of a support request, the error may no longer be found in the log file, making an error analysis difficult. 15 | 16 | ## Host Verification 17 | The communication with the Bosch Smart Home Controller is cryptographically protected via TLS. However, it is recommended that your OSS implementation verifies the Bosch Smart Home Controller IP and the certificate authority (CA). You should avoid such implementation as the following (example given in Node.js): 18 | ```javascript 19 | const requestOptionsWithoutHostVerification = { 20 | key: fs.readFileSync('client-key.pem'), 21 | cert: fs.readFileSync('client-cert.pem'), 22 | rejectUnauthorized: false // No host verification at all 23 | } 24 | ``` 25 | Instead verify the IP and the CA: 26 | ```javascript 27 | const requestOptionsWithHostVerification = { 28 | key: fs.readFileSync('client-key.pem'), 29 | cert: fs.readFileSync('client-cert.pem'), 30 | ca: fs.readFileSync(tls_ca_chain), // Concatenate the Smart Home Controller Productive Root CA with the Smart Home Controller Issuing CA into one file 31 | checkServerIdentity: function(host) { 32 | if (host === shcIp) { 33 | return undefined; 34 | } else { 35 | return new Error('Server identity check failed!'); 36 | } 37 | } 38 | } 39 | ``` 40 | The Smart Home Controller Productive Root CA and the Smart Home Controller Issuing CA are attached to this repository. -------------------------------------------------------------------------------- /best_practice/Smart Home Controller Issuing CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIFETCCAvmgAwIBAgIUR8y7kFBqVMZCYZdSQWVuVJgSAqYwDQYJKoZIhvcNAQEL 3 | BQAwYzELMAkGA1UEBhMCREUxITAfBgNVBAoMGEJvc2NoIFRoZXJtb3RlY2huaWsg 4 | R21iSDExMC8GA1UEAwwoU21hcnQgSG9tZSBDb250cm9sbGVyIFByb2R1Y3RpdmUg 5 | Um9vdCBDQTAeFw0xNTA4MTgwNzI0MjFaFw0yNTA4MTYwNzI0MjFaMFsxCzAJBgNV 6 | BAYTAkRFMSEwHwYDVQQKDBhCb3NjaCBUaGVybW90ZWNobmlrIEdtYkgxKTAnBgNV 7 | BAMMIFNtYXJ0IEhvbWUgQ29udHJvbGxlciBJc3N1aW5nIENBMIIBIjANBgkqhkiG 8 | 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsBNK3PPd/E9jbf3YkZIDtfIl2Vo0Nx7oeOsh 9 | F0L9tZwqC3+85ymB5LgFBOoHpr7tTFRb4elyPsfyv/GfXuJmDIxVAWBn/pxFzODa 10 | J3DGJ2kvwipvMNp7IxXHhK10YsG8AaT0QaeaYGq1GRp5uNZafwAOOkrrQfwtG+za 11 | Qn9qUxLYBrB++RN/5mk4Z7gyrq7fi84T23yMOtVkdb+mlb9qStQ3mllglqrRlJQo 12 | MKdQxe24Farg6N3y7h5bxLJEEXGqGExDNwR46ep+4Ys7W2QeD/2LXwYvKQ+wO70+ 13 | BNxnikkq8kPcq8694HMsfzUTBrxuHQGi6td9o+3CW01AOEvV0wIDAQABo4HEMIHB 14 | MBIGA1UdEwEB/wQIMAYBAf8CAQEwHQYDVR0OBBYEFHy1ci5zZEQaHLDAaYFYez8R 15 | FHsXMB8GA1UdIwQYMBaAFOFQaxE4w2eoyE+f6oXGTxH1V1Y+MA4GA1UdDwEB/wQE 16 | AwIBBjBbBgNVHR8EVDBSMFCgTqBMhkpodHRwczovLzI5Lm1jZy5lc2NyeXB0LmNv 17 | bS9jcmw/aWQ9ZTE1MDZiMTEzOGMzNjdhOGM4NGY5ZmVhODVjNjRmMTFmNTU3NTYz 18 | ZTANBgkqhkiG9w0BAQsFAAOCAgEAZpp9kE7Qy6tcQrfW4DJAqEcUhzg4zncJYxpb 19 | dTn/o5TvH/uPVOfoxJgtsTFtsY/ytcPJReLcgmqrRN1gTNefdXylJr688hFyhf1Z 20 | xGDoZG8MuzM9QXaHC6UNFzaeZj46ZYfdJiUtDXsYN82opGE6GhBju5JOLoFd2vYK 21 | qUnVKWqdrN0KkihClry6NcfiLEA70m00pNtsVZyVGyk7DP4ErVF5K3j40T5v4ZJl 22 | Q9ri/V97zyqXeIti8kZdla7kzJBFbGEumlUyVPRpoxdpnvWM7AgTOXXsh2sCFAA1 23 | 0hUHVOwBZCylaNUXjKMtnA938ykhNCx+OCd2NpZBf3qB6+w2MS7dQuRvMsDJcnLq 24 | X80QHJzXpmDsXEiwKyvmZnZbiAgoOiUSe2O6OaGsDRW8UBzi+wm42pxgbDnAcGUu 25 | r9Cf5y0+SFS0aQkqcWbJYwPy+LQi2MJGkv34FxTOCqygluzZt+w5xZyq5PcpPNm5 26 | 1s4Ps2+psvNhcAG3EHRF9vBnlr1MCVU04XYig54HeNGFIQQAFWFFR/9DgnH/cFLf 27 | gPoJEZV/VZtsOjy/EsqYZMFJBzJEtKOiTCKDe+pVirDB9zrcVsJG8LGiLd7266e9 28 | 1Eg5GjNiavG7ninMOWSJLfW4xPD6S3zxDAYjsPDJbMFqEFIF2ZvyYC1mVeflB/WM 29 | xnZ+67w= 30 | -----END CERTIFICATE----- 31 | -------------------------------------------------------------------------------- /best_practice/Smart Home Controller Productive Root CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIFujCCA6KgAwIBAgIUIbQ+BIVcGVD29UIe+Sv6/+Qy/OUwDQYJKoZIhvcNAQEL 3 | BQAwYzELMAkGA1UEBhMCREUxITAfBgNVBAoMGEJvc2NoIFRoZXJtb3RlY2huaWsg 4 | R21iSDExMC8GA1UEAwwoU21hcnQgSG9tZSBDb250cm9sbGVyIFByb2R1Y3RpdmUg 5 | Um9vdCBDQTAeFw0xNTA4MTgwNzIwMTNaFw0zNTA4MTQwNzIwMTNaMGMxCzAJBgNV 6 | BAYTAkRFMSEwHwYDVQQKDBhCb3NjaCBUaGVybW90ZWNobmlrIEdtYkgxMTAvBgNV 7 | BAMMKFNtYXJ0IEhvbWUgQ29udHJvbGxlciBQcm9kdWN0aXZlIFJvb3QgQ0EwggIi 8 | MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCcFmt1vu85lfXMl66Ix32tmEbc 9 | n4bt6Oa6QIiT6zJIR2DsE85c42H8XogATWiqfp3FTbmfIIijfoj9JL6uyFkw0yrT 10 | qfttw9KD8DRIV973F1UyAP8wPxpdt2QPJCBMmqymC6h2oT7eS6hRIMbY3SFLa5lO 11 | 4EQ10uflZnY9Yv7kTzeuEw1qWqd8kHhfDBq3k2N90oopt47ghDQ/qUmne19xp0jQ 12 | fXFA6hfudNcU9vuZ6hvObm25++ySmRKvtuY+O/CmLVnUJngpKQWJCnYOv3/Z5StZ 13 | 5aVvLR028ozc1oqdL8fVeaJX8xIdBsSjB+gOaauEYodJzVfeLdXVb8R4CqVighci 14 | EUuwZVhzdtA5qs2O9jLJv6JFiD+uuRn8Ip1uYiajYqkRzR2egKWFfhZvV6Yk2zuw 15 | s8FUtagtYRwKCp+F+f+PCryLcBcnyc7iVm0Xo7kQAjzoDql4vmXQybmP6kU9qzmD 16 | xEG02s6FHVn1X1X4htXc/+Wh0/0850T+Up2HeN+ZN92BubI8yM62mecvfx08vSb1 17 | 5AviYkQQE37KzGeKYYbciEMeVu5sLx/lN6YIcyHY5kTUsU7SCzw7vTTsNjTzuzYa 18 | l2fudHS8lOHaAwvZP//14cM+N9beQqLzxS7jdmFQxtToyzdbgL1OekO58fiqti4W 19 | d88bnmMBZsl3bR9b5QIDAQABo2YwZDASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud 20 | DgQWBBThUGsROMNnqMhPn+qFxk8R9VdWPjAfBgNVHSMEGDAWgBThUGsROMNnqMhP 21 | n+qFxk8R9VdWPjAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAEp2 22 | bQei/KQGrnsnqugeseDVKNTOFp5o0xYz8gXEWzRCuAIo/sYKcFWziquajJWuCt/9 23 | CexNFWkYtV95EbunyE+wijQcnOehGSZ2gWnZiQU2fu1Y4aA5g3LlB61ljnbhX4SE 24 | tLs31iTdjPFcWMx+rsS3+qfuOiOqQbliTykG+p/ULVLLPDCmzL/MHg3w5AiGB8k5 25 | i1npzDKJKpLFGFWEnECYKhPi93rLfdgmOEFalIoFB96/upm6bfOWbNvsdIspFVGe 26 | 3zSjWUvveHe9mm+VTq9aldwy/J0/81oFF7C5CmlB31sDwfY+qF5/mHKfPbrnWTIi 27 | QAiZJxXrbmeWX9JVutRbokP1UTX63ghH+BNab/E1D020JVkimMf2Vg1/5WR2gdkN 28 | S4j+f//uVKuCr7bPGWzcADeURlyCmW/O2CNfln+T/0YFg2lET9PAEDkZ7Js3I/4f 29 | +Dy58LwjdQYI3Z6qKA9h0Cfgy6KOA8Omyw3QmdTAAd0EgABQ/vxNVL3Q4Oh8Eiff 30 | ZVrpFWLgMxeRckHTMqG9SfGBdZQCO7XPz7mb/8Da6prEfw4VKvdh9llvatWeB1V1 31 | vqixwFVuHIWKxIiR8GXZEjIQXBmeuzdgIceYcw12HYHLUifFozaNtjxMcPcIALKz 32 | GrR4oS2tFVZCjwF4vPAt15fsbEx/F/NfaO6SAFz8 33 | -----END CERTIFICATE----- 34 | -------------------------------------------------------------------------------- /css/override.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /* Variable definitions */ 3 | :root { 4 | --blue-dark: #005691; 5 | --post: #78BE20; 6 | --put: #fcaf17; 7 | --delete: #E20015; 8 | --get: #008ECF; 9 | --btn-outline:#777777; 10 | 11 | --post-background: rgba(120, 190, 32, 0.1); 12 | --put-background: rgba(252, 175, 23, 0.1); 13 | --delete-background: rgba(226, 0, 21, 0.1); 14 | --get-background: rgba(0, 142, 207, 0.1); 15 | } 16 | 17 | body.apidocs { 18 | background-color: white; 19 | background-image: url(./images/bosch_supergraphic_top.jpg); 20 | background-position: center top; 21 | background-repeat: no-repeat; 22 | background-size: 100% 17px; 23 | color: #2e3032; 24 | margin-top: 17px; 25 | margin-left: 48px; 26 | margin-right: 48px; 27 | padding-top: 20px; 28 | } 29 | 30 | a:link, a:hover, a:visited, a:active { 31 | color: var(--blue-dark) !important; 32 | text-decoration: none !important; 33 | } 34 | 35 | /* Topbar */ 36 | .swagger-ui .topbar { 37 | background-color: white; 38 | } 39 | .swagger-ui .topbar * { 40 | color: black; 41 | } 42 | 43 | .swagger-ui .topbar-wrapper { 44 | display: flex; 45 | justify-content: space-between; 46 | align-items: center; 47 | } 48 | 49 | .swagger-ui .info { 50 | margin: 10px 0; 51 | } 52 | 53 | /* Spec selection / Download URL border*/ 54 | .swagger-ui .topbar .download-url-wrapper .select-label select { 55 | border: 2px solid var(--btn-outline); 56 | } 57 | /* Swagger UI button */ 58 | .swagger-ui .btn { 59 | border-radius: 0; 60 | box-shadow: none; 61 | border: 1px solid var(--btn-outline); 62 | } 63 | .swagger-ui .btn.authorize { 64 | color: #3b4151; 65 | border-radius: 0; 66 | box-shadow: none; 67 | border: 1px solid var(--btn-outline); 68 | } 69 | .swagger-ui .btn.authorize svg { 70 | fill: #3b4151; 71 | } 72 | .swagger-ui select { 73 | border-radius: 0; 74 | } 75 | 76 | /* Models */ 77 | .swagger-ui section.models { 78 | border-radius: 0; 79 | } 80 | 81 | /* Execute button */ 82 | .swagger-ui .btn.execute { 83 | width: auto; 84 | background-color: #005691; 85 | border-bottom: 2px solid #008ECF; 86 | } 87 | @-webkit-keyframes pulse { 88 | 0% { 89 | color: #fff; 90 | background: #005691; 91 | box-shadow: 0 0 0 0 rgba(73, 144, 226, .8) 92 | } 93 | 70% { 94 | box-shadow: 0 0 0 5px rgba(73, 144, 226, 0) 95 | } 96 | to { 97 | color: #fff; 98 | background: #005691; 99 | box-shadow: 0 0 0 0 rgba(73, 144, 226, 0) 100 | } 101 | } 102 | 103 | /* Operation block*/ 104 | .swagger-ui .opblock { 105 | border-radius: 0; 106 | box-shadow: none; 107 | } 108 | 109 | .swagger-ui .opblock.opblock-post { 110 | background: var(--post-background); 111 | border-color: var(--post); 112 | } 113 | 114 | .swagger-ui .opblock.opblock-put { 115 | background: var(--put-background); 116 | border-color: var(--put); 117 | } 118 | 119 | .swagger-ui .opblock.opblock-delete { 120 | background: var(--delete-background); 121 | border-color: var(--delete); 122 | } 123 | 124 | .swagger-ui .opblock.opblock-get { 125 | background: var(--get-background); 126 | border-color: var(--get); 127 | } 128 | 129 | /* HTTP Operation badge colors */ 130 | .swagger-ui .opblock .opblock-summary-method { 131 | border-radius: 0; 132 | } 133 | 134 | .swagger-ui .opblock.opblock-post .opblock-summary-method { 135 | background: var(--post); 136 | } 137 | 138 | .swagger-ui .opblock.opblock-put .opblock-summary-method { 139 | background: var(--put); 140 | } 141 | 142 | .swagger-ui .opblock.opblock-delete .opblock-summary-method { 143 | background: var(--delete); 144 | } 145 | 146 | .swagger-ui .opblock.opblock-get .opblock-summary-method { 147 | background: var(--get); 148 | } 149 | 150 | .swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span::after { 151 | background: var(--post); 152 | } 153 | 154 | .swagger-ui .opblock.opblock-put .tab-header .tab-item.active h4 span::after { 155 | background: var(--put); 156 | } 157 | 158 | .swagger-ui .opblock.opblock-delete .tab-header .tab-item.active h4 span::after { 159 | background: var(--delete); 160 | } 161 | 162 | .swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span::after { 163 | background: var(--get); 164 | } 165 | 166 | /* blocks around Operations */ 167 | .swagger-ui .opblock, 168 | .swagger-ui .opblock .opblock-summary-method, 169 | /* Buttons */ 170 | .swagger-ui select, 171 | .swagger-ui section.models, 172 | .swagger-ui .btn.authorize, 173 | .swagger-ui .btn, 174 | /* black markdown description boxes */ 175 | .swagger-ui .response-col_description__inner div.markdown, 176 | .swagger-ui .response-col_description__inner div.renderedMarkdown, 177 | /* input fields */ 178 | .swagger-ui input[type="email"], 179 | .swagger-ui input[type="file"], 180 | .swagger-ui input[type="password"], 181 | .swagger-ui input[type="search"], 182 | .swagger-ui input[type="text"], 183 | .swagger-ui textarea, 184 | /* Models */ 185 | .swagger-ui .model-box, 186 | /* modaler "Authorize" dialog */ 187 | .swagger-ui .dialog-ux .modal-ux, 188 | /* Body Paramter */ 189 | .swagger-ui .opblock-body pre { 190 | border-radius: 0; 191 | } 192 | 193 | /* Custom Tag Description */ 194 | span.custom-tag-description { 195 | margin-top: 17px; 196 | margin-bottom: 17px; 197 | } 198 | 199 | footer { 200 | text-align: center; 201 | padding-top: 20px; 202 | padding-bottom: 20px; 203 | } -------------------------------------------------------------------------------- /css/swagger-custom.css: -------------------------------------------------------------------------------- 1 | .topbar-logo { 2 | width: 35%; 3 | padding-right: 10px; 4 | } 5 | 6 | .topbar-logo-wrapper { 7 | display: flex; 8 | justify-content: flex-start; 9 | align-items: center; 10 | } 11 | -------------------------------------------------------------------------------- /images/bosch_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/images/bosch_icon.png -------------------------------------------------------------------------------- /images/bosch_smart_home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/images/bosch_smart_home.jpg -------------------------------------------------------------------------------- /images/bosch_smart_home_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/images/bosch_smart_home_logo.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bosch Smart Home Local API 8 | 9 | 10 | 11 | 12 | 13 | 31 | 32 | 33 | 34 |
35 |
36 |
37 |
38 |
39 |
40 | 45 | 50 |
51 | 52 |
53 | 120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 | 128 | 129 | 130 | 152 | 153 | 154 | 155 | -------------------------------------------------------------------------------- /openapi/ClimateControl-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:ClimateControl:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Climate Control 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for a Climate Control. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: Services 22 | description: Services of your ClimateControl 23 | - name: States 24 | description: States of your ClimateControl 25 | paths: 26 | '/devices/{deviceId}/services/RoomClimateControl': 27 | get: 28 | summary: Retrieve the RoomClimateControl service of the ClimateControl. 29 | description: |- 30 | Control of up to six Bosch Smart Home radiator thermostats per room with this virtual device. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: The RoomClimateControl was successfully retrieved. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/RoomClimateControlService' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | '/devices/{deviceId}/services/RoomClimateControl/state': 51 | get: 52 | summary: Retrieve the state of the RoomClimateControl service. 53 | description: |- 54 | Retrieve the state of the RoomClimateControl service identified by the 55 | `deviceId` path parameter. 56 | tags: 57 | - States 58 | parameters: 59 | - $ref: '#/components/parameters/apiVersionHeaderParam' 60 | - $ref: '#/components/parameters/deviceIdPathParam' 61 | responses: 62 | '200': 63 | description: The state of RoomClimateControl was successfully retrieved. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/RoomClimateControlServiceStates' 68 | '404': 69 | description: |- 70 | The entity could not be found. One of the defined query parameters was invalid. 71 | content: 72 | application/json: 73 | schema: 74 | $ref: '#/components/schemas/AdvancedError' 75 | 76 | put: 77 | summary: Executes the climateControlState on the device. 78 | description: |- 79 | Executes the climateControlState on the device identified by the `deviceId` path parameter. 80 | tags: 81 | - States 82 | parameters: 83 | - $ref: '#/components/parameters/apiVersionHeaderParam' 84 | - $ref: '#/components/parameters/deviceIdPathParam' 85 | responses: 86 | '204': 87 | description: Accepted request. 88 | '400': 89 | description: One of the defined query parameters was invalid. 90 | content: 91 | application/json: 92 | schema: 93 | $ref: '#/components/schemas/AdvancedError' 94 | '404': 95 | description: The entity could not be found. One of the defined path parameters was invalid. 96 | content: 97 | application/json: 98 | schema: 99 | $ref: '#/components/schemas/AdvancedError' 100 | '405': 101 | description: The method was not allowed. 102 | '422': 103 | description: Mapping of defined query parameter failed. 104 | content: 105 | application/json: 106 | schema: 107 | $ref: '#/components/schemas/AdvancedError' 108 | requestBody: 109 | $ref: '#/components/requestBodies/RoomClimateControlServiceClimateControlStatePayload' 110 | '/devices/{deviceId}/services/TemperatureLevel': 111 | get: 112 | summary: Retrieve the TemperatureLevel service of the ClimateControl. 113 | description: |- 114 | Measures the temperature at a central point in the room. 115 | tags: 116 | - Services 117 | parameters: 118 | - $ref: '#/components/parameters/apiVersionHeaderParam' 119 | - $ref: '#/components/parameters/deviceIdPathParam' 120 | responses: 121 | '200': 122 | description: The TemperatureLevel was successfully retrieved. 123 | content: 124 | application/json: 125 | schema: 126 | $ref: '#/components/schemas/TemperatureLevelService' 127 | '404': 128 | description: |- 129 | The entity could not be found. One of the defined query parameters was invalid. 130 | content: 131 | application/json: 132 | schema: 133 | $ref: '#/components/schemas/AdvancedError' 134 | '/devices/{deviceId}/services/TemperatureLevel/state': 135 | get: 136 | summary: Retrieve the state of the TemperatureLevel service. 137 | description: |- 138 | Retrieve the state of the TemperatureLevel service identified by the 139 | `deviceId` path parameter. 140 | tags: 141 | - States 142 | parameters: 143 | - $ref: '#/components/parameters/apiVersionHeaderParam' 144 | - $ref: '#/components/parameters/deviceIdPathParam' 145 | responses: 146 | '200': 147 | description: The state of TemperatureLevel was successfully retrieved. 148 | content: 149 | application/json: 150 | schema: 151 | $ref: '#/components/schemas/TemperatureLevelServiceStates' 152 | '404': 153 | description: |- 154 | The entity could not be found. One of the defined query parameters was invalid. 155 | content: 156 | application/json: 157 | schema: 158 | $ref: '#/components/schemas/AdvancedError' 159 | 160 | components: 161 | schemas: 162 | AdvancedError: 163 | type: object 164 | properties: 165 | '@type': 166 | type: string 167 | description: The type of the Object. 168 | example: JsonRestExceptionResponseEntity 169 | errorCode: 170 | type: string 171 | description: The error code of the occurred Exception. 172 | statusCode: 173 | type: integer 174 | description: The HTTP status of the error. 175 | ServiceDefinition: 176 | type: array 177 | minItems: 1 178 | uniqueItems: true 179 | items: 180 | type: string 181 | description: "A single fully qualified identifier of the Service of a Device." 182 | example: 183 | - RoomClimateControl 184 | - TemperatureLevel 185 | RoomClimateControlServiceStates: 186 | type: object 187 | description: RoomClimateControlService states of ClimateControl 188 | properties: 189 | '@type': 190 | type: string 191 | enum: [climateControlState] 192 | description: The type of the Object. 193 | setpointTemperature: 194 | $ref: '#/components/schemas/SetpointTemperatureState' 195 | RoomClimateControlService: 196 | type: object 197 | properties: 198 | '@type': 199 | type: string 200 | enum: [DeviceServiceData] 201 | description: The type of the Object. 202 | id: 203 | type: string 204 | enum: [deviceServiceId] 205 | description: "A single fully qualified identifier of the Service of a Device." 206 | deviceId: 207 | type: string 208 | description: "A single fully qualified identifier of the Device." 209 | state: 210 | $ref: '#/components/schemas/RoomClimateControlServiceStates' 211 | path: 212 | type: string 213 | description: The path to the Property. 214 | TemperatureLevelServiceStates: 215 | type: object 216 | description: TemperatureLevelService states of ClimateControl 217 | properties: 218 | temperature: 219 | type: number 220 | TemperatureLevelService: 221 | type: object 222 | properties: 223 | '@type': 224 | type: string 225 | enum: [DeviceServiceData] 226 | description: The type of the Object. 227 | id: 228 | type: string 229 | enum: [deviceServiceId] 230 | description: "A single fully qualified identifier of the Service of a Device." 231 | deviceId: 232 | type: string 233 | description: "A single fully qualified identifier of the Device." 234 | state: 235 | $ref: '#/components/schemas/TemperatureLevelServiceStates' 236 | path: 237 | type: string 238 | description: The path to the Property. 239 | SetpointTemperatureState: 240 | type: string 241 | enum: ["5.0", "5.5", "...", "29.5", "30.0"] 242 | 243 | requestBodies: 244 | RoomClimateControlServiceClimateControlStatePayload: 245 | content: 246 | application/json: 247 | schema: 248 | type: object 249 | properties: 250 | '@type': 251 | type: string 252 | enum: [climateControlState] 253 | description: The type of the Object. 254 | setpointTemperature: 255 | $ref: '#/components/schemas/SetpointTemperatureState' 256 | parameters: 257 | apiVersionHeaderParam: 258 | in: header 259 | name: api-version 260 | description: The version of the API. 261 | schema: 262 | type: string 263 | example: "1.0" 264 | deviceIdPathParam: 265 | name: deviceId 266 | in: path 267 | description: "A single fully qualified identifier of the Device." 268 | required: true 269 | schema: 270 | type: string 271 | propertyPathPathParam: 272 | name: propertyPath 273 | in: path 274 | description: The path to the Property. 275 | required: true 276 | schema: 277 | type: string 278 | -------------------------------------------------------------------------------- /openapi/DoorWindowContact-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:DoorWindowContact:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Door Window Contact 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for a Door Window Contact. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: Services 22 | description: Services of your DoorWindowContact 23 | - name: States 24 | description: States of your DoorWindowContact 25 | paths: 26 | '/devices/{deviceId}/services/ShutterContact': 27 | get: 28 | summary: Retrieve the ShutterContact service of the DoorWindowContact. 29 | description: |- 30 | Detects open windows and doors. In combination with the Radiator Thermostat the temperature in the room is lowered during airing so no energy is wasted. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: The ShutterContact was successfully retrieved. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/ShutterContactService' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | '/devices/{deviceId}/services/ShutterContact/state': 51 | get: 52 | summary: Retrieve the state of the ShutterContact service. 53 | description: |- 54 | Retrieve the state of the ShutterContact service identified by the 55 | `deviceId` path parameter. 56 | tags: 57 | - States 58 | parameters: 59 | - $ref: '#/components/parameters/apiVersionHeaderParam' 60 | - $ref: '#/components/parameters/deviceIdPathParam' 61 | responses: 62 | '200': 63 | description: The state of ShutterContact was successfully retrieved. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/ShutterContactServiceStates' 68 | '404': 69 | description: |- 70 | The entity could not be found. One of the defined query parameters was invalid. 71 | content: 72 | application/json: 73 | schema: 74 | $ref: '#/components/schemas/AdvancedError' 75 | 76 | components: 77 | schemas: 78 | AdvancedError: 79 | type: object 80 | properties: 81 | '@type': 82 | type: string 83 | description: The type of the Object. 84 | example: JsonRestExceptionResponseEntity 85 | errorCode: 86 | type: string 87 | description: The error code of the occurred Exception. 88 | statusCode: 89 | type: integer 90 | description: The HTTP status of the error. 91 | ServiceDefinition: 92 | type: array 93 | minItems: 1 94 | uniqueItems: true 95 | items: 96 | type: string 97 | description: "A single fully qualified identifier of the Service of a Device." 98 | example: 99 | - ShutterContact 100 | ShutterContactServiceStates: 101 | type: object 102 | description: ShutterContactService states of DoorWindowContact 103 | properties: 104 | value: 105 | $ref: '#/components/schemas/ShutterContactState' 106 | ShutterContactService: 107 | type: object 108 | properties: 109 | '@type': 110 | type: string 111 | enum: [DeviceServiceData] 112 | description: The type of the Object. 113 | id: 114 | type: string 115 | enum: [deviceServiceId] 116 | description: "A single fully qualified identifier of the Service of a Device." 117 | deviceId: 118 | type: string 119 | description: "A single fully qualified identifier of the Device." 120 | state: 121 | $ref: '#/components/schemas/ShutterContactServiceStates' 122 | path: 123 | type: string 124 | description: The path to the Property. 125 | ShutterContactState: 126 | type: string 127 | enum: [OPEN,CLOSED] 128 | 129 | parameters: 130 | apiVersionHeaderParam: 131 | in: header 132 | name: api-version 133 | description: The version of the API. 134 | schema: 135 | type: string 136 | example: "1.0" 137 | deviceIdPathParam: 138 | name: deviceId 139 | in: path 140 | description: "A single fully qualified identifier of the Device." 141 | required: true 142 | schema: 143 | type: string 144 | propertyPathPathParam: 145 | name: propertyPath 146 | in: path 147 | description: The path to the Property. 148 | required: true 149 | schema: 150 | type: string 151 | -------------------------------------------------------------------------------- /openapi/IntrusionDetectionSystem-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:IntrusionDetectionSystem:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Intrusion Detection Alarm System 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for the Intrusion Detection Alarm System. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: States 22 | description: States of your Intrusion Detection Alarm System 23 | - name: Actions 24 | description: Actions of your Intrusion Detection Alarm System 25 | paths: 26 | '/intrusion/states/system': 27 | get: 28 | summary: Get the alarm system's combined state. 29 | description: |- 30 | Returns the combined system sate of the intrusion detection alarm system. 31 | tags: 32 | - States 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | responses: 36 | '200': 37 | description: The IntrusionDetectionControl was successfully retrieved. 38 | content: 39 | application/json: 40 | schema: 41 | $ref: '#/components/schemas/SystemStateData' 42 | '404': 43 | description: |- 44 | The entity could not be found. One of the defined query parameters was invalid. 45 | content: 46 | application/json: 47 | schema: 48 | $ref: '#/components/schemas/AdvancedError' 49 | '/intrusion/actions/arm': 50 | post: 51 | summary: Activates a profile of the Intrusion Detection Alarm System. 52 | description: |- 53 | Activates the profile of the Intrusion Detection Alarm System identified by the 54 | `profileId` body parameter. 55 | tags: 56 | - Actions 57 | parameters: 58 | - $ref: '#/components/parameters/apiVersionHeaderParam' 59 | responses: 60 | '202': 61 | description: Accepted request. 62 | '400': 63 | description: One of the defined query parameters was invalid. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/AdvancedError' 68 | '404': 69 | description: The entity could not be found. One of the defined path parameters was invalid. 70 | content: 71 | application/json: 72 | schema: 73 | $ref: '#/components/schemas/AdvancedError' 74 | '405': 75 | description: The method was not allowed. 76 | '422': 77 | description: Mapping of defined query parameter failed. 78 | content: 79 | application/json: 80 | schema: 81 | $ref: '#/components/schemas/AdvancedError' 82 | requestBody: 83 | $ref: '#/components/requestBodies/IntrusionDetectionControlServiceArmRequestPayload' 84 | '/intrusion/actions/disarm': 85 | post: 86 | tags: 87 | - Actions 88 | summary: Disarms the intrusion detection alarm system. 89 | description: |- 90 | Sets the intrusion detection alarm system's state to disarmed. 91 | parameters: 92 | - $ref: '#/components/parameters/apiVersionHeaderParam' 93 | responses: 94 | '202': 95 | description: Accepted 96 | '404': 97 | description: The entity could not be found. One of the defined path parameters was invalid. 98 | content: 99 | application/json: 100 | schema: 101 | $ref: '#/components/schemas/AdvancedError' 102 | '/intrusion/actions/mute': 103 | post: 104 | tags: 105 | - Actions 106 | summary: Mutes the intrusion detection alarm system. 107 | description: |- 108 | Sets the intrusion detection alarm system's state to muted. 109 | parameters: 110 | - $ref: '#/components/parameters/apiVersionHeaderParam' 111 | responses: 112 | '202': 113 | description: Accepted 114 | '404': 115 | description: The entity could not be found. One of the defined path parameters was invalid. 116 | content: 117 | application/json: 118 | schema: 119 | $ref: '#/components/schemas/AdvancedError' 120 | components: 121 | schemas: 122 | AdvancedError: 123 | type: object 124 | properties: 125 | '@type': 126 | type: string 127 | description: The type of the Object. 128 | example: JsonRestExceptionResponseEntity 129 | errorCode: 130 | type: string 131 | description: The error code of the occurred Exception. 132 | statusCode: 133 | type: integer 134 | description: The HTTP status of the error. 135 | SystemAvailabilityStateData: 136 | type: object 137 | properties: 138 | available: 139 | type: boolean 140 | readOnly: true 141 | deleted: 142 | type: boolean 143 | id: 144 | type: string 145 | ArmingStateData: 146 | type: object 147 | properties: 148 | remainingTimeUntilArmed: 149 | type: integer 150 | format: int64 151 | readOnly: true 152 | state: 153 | type: string 154 | readOnly: true 155 | enum: 156 | - SYSTEM_ARMING 157 | - SYSTEM_ARMED 158 | - SYSTEM_DISARMED 159 | deleted: 160 | type: boolean 161 | id: 162 | type: string 163 | AlarmStateData: 164 | type: object 165 | properties: 166 | value: 167 | type: string 168 | readOnly: true 169 | enum: 170 | - ALARM_OFF 171 | - PRE_ALARM 172 | - ALARM_ON 173 | - ALARM_MUTED 174 | - UNKNOWN 175 | incidents: 176 | type: array 177 | readOnly: true 178 | items: 179 | $ref: '#/components/schemas/IncidentData' 180 | deleted: 181 | type: boolean 182 | id: 183 | type: string 184 | ActiveConfigurationProfileData: 185 | type: object 186 | properties: 187 | profileId: 188 | type: string 189 | readOnly: true 190 | deleted: 191 | type: boolean 192 | id: 193 | type: string 194 | SystemStateData: 195 | type: object 196 | properties: 197 | systemAvailability: 198 | readOnly: true 199 | $ref: '#/components/schemas/SystemAvailabilityStateData' 200 | armingState: 201 | readOnly: true 202 | $ref: '#/components/schemas/ArmingStateData' 203 | alarmState: 204 | readOnly: true 205 | $ref: '#/components/schemas/AlarmStateData' 206 | activeConfigurationProfile: 207 | readOnly: true 208 | $ref: '#/components/schemas/ActiveConfigurationProfileData' 209 | deleted: 210 | type: boolean 211 | id: 212 | type: string 213 | IncidentData: 214 | type: object 215 | properties: 216 | id: 217 | type: string 218 | readOnly: true 219 | triggerName: 220 | type: string 221 | readOnly: true 222 | type: 223 | type: string 224 | readOnly: true 225 | enum: 226 | - SYSTEM_ARMED 227 | - INTRUSION_DETECTED 228 | - ALARM_MUTED 229 | - SYSTEM_DISARMED 230 | - UNKNOWN 231 | time: 232 | type: integer 233 | format: int64 234 | readOnly: true 235 | location: 236 | type: string 237 | readOnly: true 238 | locationId: 239 | type: string 240 | readOnly: true 241 | ArmRequest: 242 | type: string 243 | enum: ["0", "1", "2"] 244 | 245 | requestBodies: 246 | IntrusionDetectionControlServiceArmRequestPayload: 247 | content: 248 | application/json: 249 | schema: 250 | type: object 251 | properties: 252 | '@type': 253 | type: string 254 | enum: [armRequest] 255 | description: The type of the Object. 256 | profileId: 257 | $ref: '#/components/schemas/ArmRequest' 258 | parameters: 259 | apiVersionHeaderParam: 260 | in: header 261 | name: api-version 262 | description: The version of the API. 263 | schema: 264 | type: string 265 | example: "1.0" 266 | deviceIdPathParam: 267 | name: deviceId 268 | in: path 269 | description: "A single fully qualified identifier of the Device." 270 | required: true 271 | schema: 272 | type: string 273 | propertyPathPathParam: 274 | name: propertyPath 275 | in: path 276 | description: The path to the Property. 277 | required: true 278 | schema: 279 | type: string 280 | -------------------------------------------------------------------------------- /openapi/LightControl-II-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: Bosch Smart Home Local API for Light Control II 4 | description: |- 5 | This description focuses on the JSON-based, REST-like API for a Light Control II. 6 | 7 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 8 | 9 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 10 | 11 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 12 | version: "1.0" 13 | 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | 21 | tags: 22 | - name: Services 23 | description: Services of your LightControl II 24 | - name: States 25 | description: States of your LightControl II 26 | 27 | paths: 28 | '/devices/{deviceId}/': 29 | get: 30 | summary: Retrieve information about a specific light device. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: A successful response containing the device information. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/LightDevice' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | 51 | '/devices/{deviceId}/services': 52 | get: 53 | summary: Get device services 54 | description: Returns a list of services available for the specified device. 55 | tags: 56 | - Services 57 | parameters: 58 | - $ref: '#/components/parameters/apiVersionHeaderParam' 59 | - $ref: '#/components/parameters/deviceIdPathParam' 60 | responses: 61 | '200': 62 | description: The LightControl services were successfully retrieved. 63 | content: 64 | application/json: 65 | schema: 66 | type: array 67 | items: 68 | $ref: '#/components/schemas/DeviceServiceData' 69 | '404': 70 | description: |- 71 | The entity could not be found. One of the defined query parameters was invalid. 72 | content: 73 | application/json: 74 | schema: 75 | $ref: '#/components/schemas/AdvancedError' 76 | 77 | '/devices/{deviceId}/services/PowerSwitch/state': 78 | get: 79 | summary: Get Power Switch state 80 | description: Returns the current state of the Power Switch service for the specified device ID. 81 | tags: 82 | - States 83 | parameters: 84 | - $ref: '#/components/parameters/apiVersionHeaderParam' 85 | - $ref: '#/components/parameters/deviceIdPathParam' 86 | responses: 87 | '200': 88 | description: The PowerSwitch service state were successfully retrieved. 89 | content: 90 | application/json: 91 | schema: 92 | $ref: '#/components/schemas/PowerSwitchState' 93 | '404': 94 | description: |- 95 | The entity could not be found. One of the defined query parameters was invalid. 96 | content: 97 | application/json: 98 | schema: 99 | $ref: '#/components/schemas/AdvancedError' 100 | put: 101 | summary: Update Power Switch state 102 | description: Updates the state of the Power Switch service for the specified device ID. 103 | tags: 104 | - States 105 | parameters: 106 | - $ref: '#/components/parameters/apiVersionHeaderParam' 107 | - $ref: '#/components/parameters/deviceIdPathParam' 108 | requestBody: 109 | required: true 110 | content: 111 | application/json: 112 | schema: 113 | type: object 114 | properties: 115 | '@type': 116 | type: enum 117 | example: [ powerSwitchState ] 118 | switchState: 119 | type: string 120 | description: The state of the power switch. 121 | example: 'ON' 122 | required: 123 | - '@type' 124 | - switchState 125 | responses: 126 | '204': 127 | description: Accepted request. 128 | '400': 129 | description: One of the defined query parameters was invalid. 130 | content: 131 | application/json: 132 | schema: 133 | $ref: '#/components/schemas/AdvancedError' 134 | '404': 135 | description: The entity could not be found. One of the defined path parameters was invalid. 136 | content: 137 | application/json: 138 | schema: 139 | $ref: '#/components/schemas/AdvancedError' 140 | '405': 141 | description: The method was not allowed. 142 | '422': 143 | description: Mapping of defined query parameter failed. 144 | content: 145 | application/json: 146 | schema: 147 | $ref: '#/components/schemas/AdvancedError' 148 | 149 | components: 150 | schemas: 151 | AdvancedError: 152 | type: object 153 | properties: 154 | '@type': 155 | type: string 156 | description: The type of the Object. 157 | example: JsonRestExceptionResponseEntity 158 | errorCode: 159 | type: string 160 | description: The error code of the occurred Exception. 161 | statusCode: 162 | type: integer 163 | description: The HTTP status of the error. 164 | 165 | LightDevice: 166 | type: object 167 | properties: 168 | '@type': 169 | type: string 170 | description: The type of device. 171 | example: 'device' 172 | rootDeviceId: 173 | type: string 174 | description: The ID of the root device. 175 | example: '64-da-a0-03-19-30' 176 | id: 177 | type: string 178 | description: The ID of the device. 179 | example: 'hdm:ZigBee:5c0272fffe462481' 180 | deviceServiceIds: 181 | type: array 182 | description: An array of device service IDs. 183 | items: 184 | type: string 185 | example: [ 186 | 'CommunicationQuality', 187 | 'PowerMeter', 188 | 'ElectricalFaults', 189 | 'SwitchConfiguration' 190 | ] 191 | manufacturer: 192 | type: string 193 | description: The manufacturer of the device. 194 | example: 'BOSCH' 195 | deviceModel: 196 | type: string 197 | description: The model of the device. 198 | example: 'MICROMODULE_LIGHT_CONTROL' 199 | serial: 200 | type: string 201 | description: The serial number of the device. 202 | example: '5C0272FFFE462481' 203 | profile: 204 | type: string 205 | description: The profile of the device. 206 | example: 'GENERIC' 207 | name: 208 | type: string 209 | description: The name of the device. 210 | example: 'LightMM_5c0272fffe462481' 211 | status: 212 | type: string 213 | description: The status of the device. 214 | example: 'AVAILABLE' 215 | childDeviceIds: 216 | type: array 217 | description: An array of child device IDs. 218 | items: 219 | type: string 220 | example: [ 221 | '{{light-device#3}}', 222 | '{{light-device#2}}' 223 | ] 224 | 225 | DeviceServiceData: 226 | type: object 227 | properties: 228 | '@type': 229 | type: string 230 | example: 'DeviceServiceData' 231 | id: 232 | type: string 233 | description: The ID of the device service. 234 | example: [ 235 | 'CommunicationQuality', 236 | 'ElectricalFaults', 237 | 'PowerMeter', 238 | 'SwitchConfiguration', 239 | 'PowerSwitch', 240 | 'ChildProtection', 241 | 'PowerSwitchProgram' 242 | ] 243 | deviceId: 244 | type: string 245 | description: The ID of the device to which the service belongs. 246 | example: [ 247 | '{light-device}', 248 | '{light-device#2}' 249 | ] 250 | state: 251 | oneOf: 252 | - $ref: '#/components/schemas/CommunicationQualityState' 253 | - $ref: '#/components/schemas/PowerMeterState' 254 | - $ref: '#/components/schemas/SwitchConfigurationState' 255 | - $ref: '#/components/schemas/PowerSwitchState' 256 | - $ref: '#/components/schemas/ChildProtectionState' 257 | - $ref: '#/components/schemas/PowerSwitchProgramState' 258 | description: The current state of the device service. 259 | path: 260 | type: string 261 | description: The path to the device service resource. 262 | example: [ 263 | '/devices/{light-device}/services/CommunicationQuality', 264 | '/devices/{light-device}/services/ElectricalFaults', 265 | '/devices/{light-device}/services/PowerMeter', 266 | '/devices/{light-device}/services/SwitchConfiguration', 267 | '/devices/{light-device#2}/services/PowerSwitch', 268 | '/devices/{light-device#2}/services/ChildProtection', 269 | '/devices/{light-device#2}/services/PowerSwitchProgram' 270 | ] 271 | required: 272 | - '@type' 273 | - id 274 | - deviceId 275 | - path 276 | 277 | CommunicationQualityState: 278 | type: object 279 | properties: 280 | '@type': 281 | type: string 282 | example: 'communicationQualityState' 283 | quality: 284 | type: string 285 | description: The quality of the device's communication. 286 | example: 'GOOD' 287 | required: 288 | - '@type' 289 | - quality 290 | 291 | PowerMeterState: 292 | type: object 293 | properties: 294 | '@type': 295 | type: string 296 | example: 'powerMeterState' 297 | powerConsumption: 298 | type: number 299 | format: float 300 | description: The current power consumption of the device. 301 | example: 0.0 302 | energyConsumption: 303 | type: number 304 | format: float 305 | description: The total energy consumption of the device. 306 | example: 0.0 307 | required: 308 | - '@type' 309 | 310 | SwitchConfigurationState: 311 | type: object 312 | properties: 313 | '@type': 314 | type: string 315 | example: 'SwitchConfigurationState' 316 | switchType: 317 | type: string 318 | description: The type of switch used by the device. 319 | example: 'PUSHBUTTON' 320 | swapInputs: 321 | type: boolean 322 | description: Whether the inputs of the device's switch have been swapped. 323 | example: false 324 | required: 325 | - '@type' 326 | - switchType 327 | 328 | PowerSwitchState: 329 | type: object 330 | properties: 331 | '@type': 332 | type: string 333 | example: 'powerSwitchState' 334 | switchState: 335 | type: string 336 | description: The state of the power switch. 337 | example: 'OFF' 338 | automaticPowerOffTime: 339 | type: integer 340 | description: The automatic power off time for the device in seconds. 341 | example: 0 342 | required: 343 | - '@type' 344 | - switchState 345 | 346 | ChildProtectionState: 347 | type: object 348 | properties: 349 | '@type': 350 | type: string 351 | example: 'ChildProtectionState' 352 | childLockActive: 353 | type: boolean 354 | description: Indicates whether the child lock is active. 355 | example: false 356 | required: 357 | - '@type' 358 | - childLockActive 359 | 360 | PowerSwitchProgramState: 361 | type: object 362 | properties: 363 | '@type': 364 | type: string 365 | example: 'powerSwitchProgramState' 366 | operationMode: 367 | type: string 368 | description: The operation mode of the power switch program. 369 | example: 'MANUAL' 370 | schedule: 371 | type: object 372 | properties: 373 | profiles: 374 | type: array 375 | description: The schedule profiles for the power switch program. 376 | items: 377 | type: object 378 | example: 379 | profiles: [ ] 380 | required: 381 | - '@type' 382 | - operationMode 383 | - schedule 384 | 385 | parameters: 386 | apiVersionHeaderParam: 387 | in: header 388 | name: api-version 389 | description: The version of the API. 390 | schema: 391 | type: string 392 | example: "1.0" 393 | 394 | deviceIdPathParam: 395 | name: deviceId 396 | in: path 397 | description: "A single fully qualified identifier of the Device." 398 | required: true 399 | schema: 400 | type: string 401 | -------------------------------------------------------------------------------- /openapi/LightControl-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: Bosch Smart Home Local API for Light Control 4 | description: |- 5 | This description focuses on the JSON-based, REST-like API for a Light Control. 6 | 7 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 8 | 9 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 10 | 11 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 12 | version: "1.0" 13 | servers: 14 | - url: https://{shcIp}:8444/smarthome 15 | description: "Bosch Smart Home Controller URL" 16 | variables: 17 | shcIp: 18 | default: 192.168.0.10 19 | tags: 20 | - name: Services 21 | description: Services of your LightControl 22 | - name: States 23 | description: States of your LightControl 24 | paths: 25 | '/devices/{deviceId}/services/PowerMeter': 26 | get: 27 | summary: Retrieve the PowerMeter service of the LightControl. 28 | description: |- 29 | With this service you always have an eye on energy consumption. 30 | tags: 31 | - Services 32 | parameters: 33 | - $ref: '#/components/parameters/apiVersionHeaderParam' 34 | - $ref: '#/components/parameters/deviceIdPathParam' 35 | responses: 36 | '200': 37 | description: The PowerMeter was successfully retrieved. 38 | content: 39 | application/json: 40 | schema: 41 | $ref: '#/components/schemas/PowerMeterService' 42 | '404': 43 | description: |- 44 | The entity could not be found. One of the defined query parameters was invalid. 45 | content: 46 | application/json: 47 | schema: 48 | $ref: '#/components/schemas/AdvancedError' 49 | '/devices/{deviceId}/services/PowerMeter/state': 50 | get: 51 | summary: Retrieve the state of the PowerMeter service. 52 | description: |- 53 | Retrieve the state of the PowerMeter service identified by the 54 | `deviceId` path parameter. 55 | tags: 56 | - States 57 | parameters: 58 | - $ref: '#/components/parameters/apiVersionHeaderParam' 59 | - $ref: '#/components/parameters/deviceIdPathParam' 60 | responses: 61 | '200': 62 | description: The state of PowerMeter was successfully retrieved. 63 | content: 64 | application/json: 65 | schema: 66 | $ref: '#/components/schemas/PowerMeterServiceStates' 67 | '404': 68 | description: |- 69 | The entity could not be found. One of the defined query parameters was invalid. 70 | content: 71 | application/json: 72 | schema: 73 | $ref: '#/components/schemas/AdvancedError' 74 | 75 | '/devices/{deviceId}/services/PowerSwitch': 76 | get: 77 | summary: Retrieve the PowerSwitch service of the LightControl. 78 | description: |- 79 | Switch electrical appliances on and off. Can be used with electrical appliances with high ratings of up to 3680 W. 80 | tags: 81 | - Services 82 | parameters: 83 | - $ref: '#/components/parameters/apiVersionHeaderParam' 84 | - $ref: '#/components/parameters/deviceIdPathParam' 85 | responses: 86 | '200': 87 | description: The PowerSwitch was successfully retrieved. 88 | content: 89 | application/json: 90 | schema: 91 | $ref: '#/components/schemas/PowerSwitchService' 92 | '404': 93 | description: |- 94 | The entity could not be found. One of the defined query parameters was invalid. 95 | content: 96 | application/json: 97 | schema: 98 | $ref: '#/components/schemas/AdvancedError' 99 | '/devices/{deviceId}/services/PowerSwitch/state': 100 | get: 101 | summary: Retrieve the state of the PowerSwitch service. 102 | description: |- 103 | Retrieve the state of the PowerSwitch service identified by the 104 | `deviceId` path parameter. 105 | tags: 106 | - States 107 | parameters: 108 | - $ref: '#/components/parameters/apiVersionHeaderParam' 109 | - $ref: '#/components/parameters/deviceIdPathParam' 110 | responses: 111 | '200': 112 | description: The state of PowerSwitch was successfully retrieved. 113 | content: 114 | application/json: 115 | schema: 116 | $ref: '#/components/schemas/PowerSwitchServiceStates' 117 | '404': 118 | description: |- 119 | The entity could not be found. One of the defined query parameters was invalid. 120 | content: 121 | application/json: 122 | schema: 123 | $ref: '#/components/schemas/AdvancedError' 124 | 125 | put: 126 | summary: Executes the powerSwitchState on the device. 127 | description: |- 128 | Executes the powerSwitchState on the device identified by the `deviceId` path parameter. 129 | tags: 130 | - States 131 | parameters: 132 | - $ref: '#/components/parameters/apiVersionHeaderParam' 133 | - $ref: '#/components/parameters/deviceIdPathParam' 134 | responses: 135 | '204': 136 | description: Accepted request. 137 | '400': 138 | description: One of the defined query parameters was invalid. 139 | content: 140 | application/json: 141 | schema: 142 | $ref: '#/components/schemas/AdvancedError' 143 | '404': 144 | description: The entity could not be found. One of the defined path parameters was invalid. 145 | content: 146 | application/json: 147 | schema: 148 | $ref: '#/components/schemas/AdvancedError' 149 | '405': 150 | description: The method was not allowed. 151 | '422': 152 | description: Mapping of defined query parameter failed. 153 | content: 154 | application/json: 155 | schema: 156 | $ref: '#/components/schemas/AdvancedError' 157 | requestBody: 158 | $ref: '#/components/requestBodies/PowerSwitchServicePowerSwitchStatePayload' 159 | components: 160 | schemas: 161 | AdvancedError: 162 | type: object 163 | properties: 164 | '@type': 165 | type: string 166 | description: The type of the Object. 167 | example: JsonRestExceptionResponseEntity 168 | errorCode: 169 | type: string 170 | description: The error code of the occurred Exception. 171 | statusCode: 172 | type: integer 173 | description: The HTTP status of the error. 174 | ServiceDefinition: 175 | type: array 176 | minItems: 1 177 | uniqueItems: true 178 | items: 179 | type: string 180 | description: "A single fully qualified identifier of the Service of a Device." 181 | example: 182 | - PowerMeter 183 | - PowerSwitch 184 | PowerMeterServiceStates: 185 | type: object 186 | description: PowerMeterService states of LightControl 187 | properties: 188 | powerConsumption: 189 | type: number 190 | energyConsumption: 191 | type: number 192 | PowerMeterService: 193 | type: object 194 | properties: 195 | '@type': 196 | type: string 197 | enum: [DeviceServiceData] 198 | description: The type of the Object. 199 | id: 200 | type: string 201 | enum: [deviceServiceId] 202 | description: "A single fully qualified identifier of the Service of a Device." 203 | deviceId: 204 | type: string 205 | description: "A single fully qualified identifier of the Device." 206 | state: 207 | $ref: '#/components/schemas/PowerMeterServiceStates' 208 | path: 209 | type: string 210 | description: The path to the Property. 211 | PowerSwitchServiceStates: 212 | type: object 213 | description: PowerSwitchService states of LightControl 214 | properties: 215 | '@type': 216 | type: string 217 | enum: [powerSwitchState] 218 | description: The type of the Object. 219 | switchState: 220 | $ref: '#/components/schemas/PowerSwitchState' 221 | PowerSwitchService: 222 | type: object 223 | properties: 224 | '@type': 225 | type: string 226 | enum: [DeviceServiceData] 227 | description: The type of the Object. 228 | id: 229 | type: string 230 | enum: [deviceServiceId] 231 | description: "A single fully qualified identifier of the Service of a Device." 232 | deviceId: 233 | type: string 234 | description: "A single fully qualified identifier of the Device." 235 | state: 236 | $ref: '#/components/schemas/PowerSwitchServiceStates' 237 | path: 238 | type: string 239 | description: The path to the Property. 240 | PowerSwitchState: 241 | type: string 242 | enum: [ON,OFF] 243 | 244 | requestBodies: 245 | PowerSwitchServicePowerSwitchStatePayload: 246 | content: 247 | application/json: 248 | schema: 249 | type: object 250 | properties: 251 | '@type': 252 | type: string 253 | enum: [powerSwitchState] 254 | description: The type of the Object. 255 | switchState: 256 | $ref: '#/components/schemas/PowerSwitchState' 257 | parameters: 258 | apiVersionHeaderParam: 259 | in: header 260 | name: api-version 261 | description: The version of the API. 262 | schema: 263 | type: string 264 | example: "1.0" 265 | deviceIdPathParam: 266 | name: deviceId 267 | in: path 268 | description: "A single fully qualified identifier of the Device." 269 | required: true 270 | schema: 271 | type: string 272 | propertyPathPathParam: 273 | name: propertyPath 274 | in: path 275 | description: The path to the Property. 276 | required: true 277 | schema: 278 | type: string 279 | -------------------------------------------------------------------------------- /openapi/MotionDetector-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: Bosch Smart Home Local API for Motion Detector 4 | description: |- 5 | This description focuses on the JSON-based, REST-like API for a Motion Detector. 6 | 7 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 8 | 9 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 10 | 11 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 12 | version: "1.0" 13 | servers: 14 | - url: https://{shcIp}:8444/smarthome 15 | description: "Bosch Smart Home Controller URL" 16 | variables: 17 | shcIp: 18 | default: 192.168.0.10 19 | tags: 20 | - name: Services 21 | description: Services of your MotionDetector 22 | - name: States 23 | description: States of your MotionDetector 24 | paths: 25 | '/devices/{deviceId}/services/LatestMotion': 26 | get: 27 | summary: Retrieve the LatestMotion service of the MotionDetector. 28 | description: |- 29 | Detects every movement through an intelligent combination of passive infra-red technology and an additional temperature sensor. 30 | tags: 31 | - Services 32 | parameters: 33 | - $ref: '#/components/parameters/apiVersionHeaderParam' 34 | - $ref: '#/components/parameters/deviceIdPathParam' 35 | responses: 36 | '200': 37 | description: The LatestMotion was successfully retrieved. 38 | content: 39 | application/json: 40 | schema: 41 | $ref: '#/components/schemas/LatestMotionService' 42 | '404': 43 | description: |- 44 | The entity could not be found. One of the defined query parameters was invalid. 45 | content: 46 | application/json: 47 | schema: 48 | $ref: '#/components/schemas/AdvancedError' 49 | '/devices/{deviceId}/services/LatestMotion/state': 50 | get: 51 | summary: Retrieve the state of the LatestMotion service. 52 | description: |- 53 | Retrieve the state of the LatestMotion service identified by the 54 | `deviceId` path parameter. 55 | tags: 56 | - States 57 | parameters: 58 | - $ref: '#/components/parameters/apiVersionHeaderParam' 59 | - $ref: '#/components/parameters/deviceIdPathParam' 60 | responses: 61 | '200': 62 | description: The state of LatestMotion was successfully retrieved. 63 | content: 64 | application/json: 65 | schema: 66 | $ref: '#/components/schemas/LatestMotionServiceStates' 67 | '404': 68 | description: |- 69 | The entity could not be found. One of the defined query parameters was invalid. 70 | content: 71 | application/json: 72 | schema: 73 | $ref: '#/components/schemas/AdvancedError' 74 | '/devices//services/MultiLevelSensor/state': 75 | get: 76 | summary: The MultiLevelSensor reports the illuminance only if either the corresponding MotionLight is enabled or 77 | an Automation trigger or condition for the MotionDetector's illuminance exists. 78 | description: |- 79 | Retrieve the state of the MultiLevelSensor service identified by the `deviceId` path parameter. 80 | tags: 81 | - States 82 | parameters: 83 | - $ref: '#/components/parameters/apiVersionHeaderParam' 84 | - $ref: '#/components/parameters/deviceIdPathParam' 85 | responses: 86 | '200': 87 | description: The state of MultiLevelSensor was successfully retrieved. 88 | content: 89 | application/json: 90 | schema: 91 | $ref: '#/components/schemas/IlluminanceLevelState' 92 | '404': 93 | description: |- 94 | The entity could not be found. One of the defined query parameters was invalid. 95 | content: 96 | application/json: 97 | schema: 98 | $ref: '#/components/schemas/AdvancedError' 99 | components: 100 | schemas: 101 | AdvancedError: 102 | type: object 103 | properties: 104 | '@type': 105 | type: string 106 | description: The type of the Object. 107 | example: JsonRestExceptionResponseEntity 108 | errorCode: 109 | type: string 110 | description: The error code of the occurred Exception. 111 | statusCode: 112 | type: integer 113 | description: The HTTP status of the error. 114 | ServiceDefinition: 115 | type: array 116 | minItems: 1 117 | uniqueItems: true 118 | items: 119 | type: string 120 | description: "A single fully qualified identifier of the Service of a Device." 121 | example: 122 | - LatestMotion 123 | LatestMotionServiceStates: 124 | type: object 125 | description: LatestMotionService states of MotionDetector 126 | properties: 127 | latestMotionDetected: 128 | type: string 129 | LatestMotionService: 130 | type: object 131 | properties: 132 | '@type': 133 | type: string 134 | enum: [DeviceServiceData] 135 | description: The type of the Object. 136 | id: 137 | type: string 138 | enum: [deviceServiceId] 139 | description: "A single fully qualified identifier of the Service of a Device." 140 | deviceId: 141 | type: string 142 | description: "A single fully qualified identifier of the Device." 143 | state: 144 | $ref: '#/components/schemas/LatestMotionServiceStates' 145 | path: 146 | type: string 147 | description: The path to the Property. 148 | IlluminanceLevelState: 149 | type: object 150 | properties: 151 | "@type": 152 | type: string 153 | example: "illuminanceLevelState" 154 | illuminance: 155 | type: integer 156 | example: 100 157 | 158 | parameters: 159 | apiVersionHeaderParam: 160 | in: header 161 | name: api-version 162 | description: The version of the API. 163 | schema: 164 | type: string 165 | example: "1.0" 166 | deviceIdPathParam: 167 | name: deviceId 168 | in: path 169 | description: "A single fully qualified identifier of the Device." 170 | required: true 171 | schema: 172 | type: string 173 | propertyPathPathParam: 174 | name: propertyPath 175 | in: path 176 | description: The path to the Property. 177 | required: true 178 | schema: 179 | type: string 180 | -------------------------------------------------------------------------------- /openapi/PresenceSimulationSystem-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:PresenceSimulationSystem:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Presence Simulation System 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for a Presence Simulation System. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: Services 22 | description: Services of your PresenceSimulationSystem 23 | - name: States 24 | description: States of your PresenceSimulationSystem 25 | paths: 26 | '/devices/{deviceId}/services/PresenceSimulationConfiguration': 27 | get: 28 | summary: Retrieve the PresenceSimulationConfiguration service of the PresenceSimulationSystem. 29 | description: |- 30 | Presence is simulated by automatically controlling lights and electrical devices connected to Smart Plugs like the radio or television. A random algorithm changes the switching times just as if you were at home to give you peace of mind even when you are not there. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: The PresenceSimulationConfiguration was successfully retrieved. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/PresenceSimulationService' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | '/devices/{deviceId}/services/PresenceSimulationConfiguration/state': 51 | get: 52 | summary: Retrieve the state of the PresenceSimulationConfiguration service. 53 | description: |- 54 | Retrieve the state of the PresenceSimulationConfiguration service identified by the 55 | `deviceId` path parameter. 56 | tags: 57 | - States 58 | parameters: 59 | - $ref: '#/components/parameters/apiVersionHeaderParam' 60 | - $ref: '#/components/parameters/deviceIdPathParam' 61 | responses: 62 | '200': 63 | description: The state of PresenceSimulationConfiguration was successfully retrieved. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/PresenceSimulationServiceStates' 68 | '404': 69 | description: |- 70 | The entity could not be found. One of the defined query parameters was invalid. 71 | content: 72 | application/json: 73 | schema: 74 | $ref: '#/components/schemas/AdvancedError' 75 | 76 | put: 77 | summary: Executes the presenceSimulationConfigurationState on the device. 78 | description: |- 79 | Executes the presenceSimulationConfigurationState on the device identified by the `deviceId` path parameter. 80 | tags: 81 | - States 82 | parameters: 83 | - $ref: '#/components/parameters/apiVersionHeaderParam' 84 | - $ref: '#/components/parameters/deviceIdPathParam' 85 | responses: 86 | '204': 87 | description: Accepted request. 88 | '400': 89 | description: One of the defined query parameters was invalid. 90 | content: 91 | application/json: 92 | schema: 93 | $ref: '#/components/schemas/AdvancedError' 94 | '404': 95 | description: The entity could not be found. One of the defined path parameters was invalid. 96 | content: 97 | application/json: 98 | schema: 99 | $ref: '#/components/schemas/AdvancedError' 100 | '405': 101 | description: The method was not allowed. 102 | '422': 103 | description: Mapping of defined query parameter failed. 104 | content: 105 | application/json: 106 | schema: 107 | $ref: '#/components/schemas/AdvancedError' 108 | requestBody: 109 | $ref: '#/components/requestBodies/PresenceSimulationServicePresenceSimulationConfigurationStatePayload' 110 | components: 111 | schemas: 112 | AdvancedError: 113 | type: object 114 | properties: 115 | '@type': 116 | type: string 117 | description: The type of the Object. 118 | example: JsonRestExceptionResponseEntity 119 | errorCode: 120 | type: string 121 | description: The error code of the occurred Exception. 122 | statusCode: 123 | type: integer 124 | description: The HTTP status of the error. 125 | ServiceDefinition: 126 | type: array 127 | minItems: 1 128 | uniqueItems: true 129 | items: 130 | type: string 131 | description: "A single fully qualified identifier of the Service of a Device." 132 | example: 133 | - PresenceSimulationConfiguration 134 | PresenceSimulationServiceStates: 135 | type: object 136 | description: PresenceSimulationService states of PresenceSimulationSystem 137 | properties: 138 | '@type': 139 | type: string 140 | enum: [presenceSimulationConfigurationState] 141 | description: The type of the Object. 142 | enabled: 143 | type: boolean 144 | PresenceSimulationService: 145 | type: object 146 | properties: 147 | '@type': 148 | type: string 149 | enum: [DeviceServiceData] 150 | description: The type of the Object. 151 | id: 152 | type: string 153 | enum: [deviceServiceId] 154 | description: "A single fully qualified identifier of the Service of a Device." 155 | deviceId: 156 | type: string 157 | description: "A single fully qualified identifier of the Device." 158 | state: 159 | $ref: '#/components/schemas/PresenceSimulationServiceStates' 160 | path: 161 | type: string 162 | description: The path to the Property. 163 | 164 | requestBodies: 165 | PresenceSimulationServicePresenceSimulationConfigurationStatePayload: 166 | content: 167 | application/json: 168 | schema: 169 | type: object 170 | properties: 171 | '@type': 172 | type: string 173 | enum: [presenceSimulationConfigurationState] 174 | description: The type of the Object. 175 | enabled: 176 | type: boolean 177 | parameters: 178 | apiVersionHeaderParam: 179 | in: header 180 | name: api-version 181 | description: The version of the API. 182 | schema: 183 | type: string 184 | example: "1.0" 185 | deviceIdPathParam: 186 | name: deviceId 187 | in: path 188 | description: "A single fully qualified identifier of the Device." 189 | required: true 190 | schema: 191 | type: string 192 | propertyPathPathParam: 193 | name: propertyPath 194 | in: path 195 | description: The path to the Property. 196 | required: true 197 | schema: 198 | type: string 199 | -------------------------------------------------------------------------------- /openapi/RoomThermostat-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:Thermostat:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Room Thermostat 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for a Room Thermostat. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: Services 22 | description: Services of your RoomThermostat 23 | - name: States 24 | description: States of your RoomThermostat 25 | paths: 26 | '/devices/{deviceId}/services/HumidityLevel': 27 | get: 28 | summary: Retrieve the HumidityLevel service of the RoomThermostat. 29 | description: |- 30 | Measures the humidity at a central point in the room. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: The HumidityLevel was successfully retrieved. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/HumidityLevelService' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | '/devices/{deviceId}/services/HumidityLevel/state': 51 | get: 52 | summary: Retrieve the state of the HumidityLevel service. 53 | description: |- 54 | Retrieve the state of the HumidityLevel service identified by the 55 | `deviceId` path parameter. 56 | tags: 57 | - States 58 | parameters: 59 | - $ref: '#/components/parameters/apiVersionHeaderParam' 60 | - $ref: '#/components/parameters/deviceIdPathParam' 61 | responses: 62 | '200': 63 | description: The state of HumidityLevel was successfully retrieved. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/HumidityLevelServiceStates' 68 | '404': 69 | description: |- 70 | The entity could not be found. One of the defined query parameters was invalid. 71 | content: 72 | application/json: 73 | schema: 74 | $ref: '#/components/schemas/AdvancedError' 75 | 76 | '/devices/{deviceId}/services/TemperatureLevel': 77 | get: 78 | summary: Retrieve the TemperatureLevel service of the RoomThermostat. 79 | description: |- 80 | Measures the temperature at a central point in the room. 81 | tags: 82 | - Services 83 | parameters: 84 | - $ref: '#/components/parameters/apiVersionHeaderParam' 85 | - $ref: '#/components/parameters/deviceIdPathParam' 86 | responses: 87 | '200': 88 | description: The TemperatureLevel was successfully retrieved. 89 | content: 90 | application/json: 91 | schema: 92 | $ref: '#/components/schemas/TemperatureLevelService' 93 | '404': 94 | description: |- 95 | The entity could not be found. One of the defined query parameters was invalid. 96 | content: 97 | application/json: 98 | schema: 99 | $ref: '#/components/schemas/AdvancedError' 100 | '/devices/{deviceId}/services/TemperatureLevel/state': 101 | get: 102 | summary: Retrieve the state of the TemperatureLevel service. 103 | description: |- 104 | Retrieve the state of the TemperatureLevel service identified by the 105 | `deviceId` path parameter. 106 | tags: 107 | - States 108 | parameters: 109 | - $ref: '#/components/parameters/apiVersionHeaderParam' 110 | - $ref: '#/components/parameters/deviceIdPathParam' 111 | responses: 112 | '200': 113 | description: The state of TemperatureLevel was successfully retrieved. 114 | content: 115 | application/json: 116 | schema: 117 | $ref: '#/components/schemas/TemperatureLevelServiceStates' 118 | '404': 119 | description: |- 120 | The entity could not be found. One of the defined query parameters was invalid. 121 | content: 122 | application/json: 123 | schema: 124 | $ref: '#/components/schemas/AdvancedError' 125 | 126 | components: 127 | schemas: 128 | AdvancedError: 129 | type: object 130 | properties: 131 | '@type': 132 | type: string 133 | description: The type of the Object. 134 | example: JsonRestExceptionResponseEntity 135 | errorCode: 136 | type: string 137 | description: The error code of the occurred Exception. 138 | statusCode: 139 | type: integer 140 | description: The HTTP status of the error. 141 | ServiceDefinition: 142 | type: array 143 | minItems: 1 144 | uniqueItems: true 145 | items: 146 | type: string 147 | description: "A single fully qualified identifier of the Service of a Device." 148 | example: 149 | - HumidityLevel 150 | - TemperatureLevel 151 | HumidityLevelServiceStates: 152 | type: object 153 | description: HumidityLevelService states of RoomThermostat 154 | properties: 155 | humidity: 156 | type: number 157 | HumidityLevelService: 158 | type: object 159 | properties: 160 | '@type': 161 | type: string 162 | enum: [DeviceServiceData] 163 | description: The type of the Object. 164 | id: 165 | type: string 166 | enum: [HumidityLevel] 167 | description: "A single fully qualified identifier of the Service of a Device." 168 | deviceId: 169 | type: string 170 | description: "A single fully qualified identifier of the Device." 171 | state: 172 | $ref: '#/components/schemas/HumidityLevelServiceStates' 173 | path: 174 | type: string 175 | description: The path to the Property. 176 | TemperatureLevelServiceStates: 177 | type: object 178 | description: TemperatureLevelService states of RoomThermostat 179 | properties: 180 | temperature: 181 | type: number 182 | TemperatureLevelService: 183 | type: object 184 | properties: 185 | '@type': 186 | type: string 187 | enum: [DeviceServiceData] 188 | description: The type of the Object. 189 | id: 190 | type: string 191 | enum: [TemperatureLevel] 192 | description: "A single fully qualified identifier of the Service of a Device." 193 | deviceId: 194 | type: string 195 | description: "A single fully qualified identifier of the Device." 196 | state: 197 | $ref: '#/components/schemas/TemperatureLevelServiceStates' 198 | path: 199 | type: string 200 | description: The path to the Property. 201 | 202 | parameters: 203 | apiVersionHeaderParam: 204 | in: header 205 | name: api-version 206 | description: The version of the API. 207 | schema: 208 | type: string 209 | example: "1.0" 210 | deviceIdPathParam: 211 | name: deviceId 212 | in: path 213 | description: "A single fully qualified identifier of the Device." 214 | required: true 215 | schema: 216 | type: string 217 | propertyPathPathParam: 218 | name: propertyPath 219 | in: path 220 | description: The path to the Property. 221 | required: true 222 | schema: 223 | type: string 224 | -------------------------------------------------------------------------------- /openapi/SecurityCamera360-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:SecurityCamera360:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Security Camera 360 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for a Security Camera 360. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: Services 22 | description: Services of your SecurityCamera360 23 | - name: States 24 | description: States of your SecurityCamera360 25 | paths: 26 | '/devices/{deviceId}/services/PrivacyMode': 27 | get: 28 | summary: Retrieve the PrivacyMode service of the SecurityCamera360. 29 | description: |- 30 | With this service the device can be easily set in privacy mode and enhances your Bosch Smart Home System as an additional security component. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: The PrivacyMode was successfully retrieved. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/PrivacyModeService' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | '/devices/{deviceId}/services/PrivacyMode/state': 51 | get: 52 | summary: Retrieve the state of the PrivacyMode service. 53 | description: |- 54 | Retrieve the state of the PrivacyMode service identified by the 55 | `deviceId` path parameter. 56 | tags: 57 | - States 58 | parameters: 59 | - $ref: '#/components/parameters/apiVersionHeaderParam' 60 | - $ref: '#/components/parameters/deviceIdPathParam' 61 | responses: 62 | '200': 63 | description: The state of PrivacyMode was successfully retrieved. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/PrivacyModeServiceStates' 68 | '404': 69 | description: |- 70 | The entity could not be found. One of the defined query parameters was invalid. 71 | content: 72 | application/json: 73 | schema: 74 | $ref: '#/components/schemas/AdvancedError' 75 | 76 | put: 77 | summary: Executes the privacyModeState on the device. 78 | description: |- 79 | Executes the privacyModeState on the device identified by the `deviceId` path parameter. 80 | tags: 81 | - States 82 | parameters: 83 | - $ref: '#/components/parameters/apiVersionHeaderParam' 84 | - $ref: '#/components/parameters/deviceIdPathParam' 85 | responses: 86 | '204': 87 | description: Accepted request. 88 | '400': 89 | description: One of the defined query parameters was invalid. 90 | content: 91 | application/json: 92 | schema: 93 | $ref: '#/components/schemas/AdvancedError' 94 | '404': 95 | description: The entity could not be found. One of the defined path parameters was invalid. 96 | content: 97 | application/json: 98 | schema: 99 | $ref: '#/components/schemas/AdvancedError' 100 | '405': 101 | description: The method was not allowed. 102 | '422': 103 | description: Mapping of defined query parameter failed. 104 | content: 105 | application/json: 106 | schema: 107 | $ref: '#/components/schemas/AdvancedError' 108 | requestBody: 109 | $ref: '#/components/requestBodies/PrivacyModeServicePrivacyModeStatePayload' 110 | components: 111 | schemas: 112 | AdvancedError: 113 | type: object 114 | properties: 115 | '@type': 116 | type: string 117 | description: The type of the Object. 118 | example: JsonRestExceptionResponseEntity 119 | errorCode: 120 | type: string 121 | description: The error code of the occurred Exception. 122 | statusCode: 123 | type: integer 124 | description: The HTTP status of the error. 125 | ServiceDefinition: 126 | type: array 127 | minItems: 1 128 | uniqueItems: true 129 | items: 130 | type: string 131 | description: "A single fully qualified identifier of the Service of a Device." 132 | example: 133 | - PrivacyMode 134 | PrivacyModeServiceStates: 135 | type: object 136 | description: PrivacyModeService states of SecurityCamera360 137 | properties: 138 | '@type': 139 | type: string 140 | enum: [privacyModeState] 141 | description: The type of the Object. 142 | value: 143 | $ref: '#/components/schemas/PrivacyModeState' 144 | PrivacyModeService: 145 | type: object 146 | properties: 147 | '@type': 148 | type: string 149 | enum: [DeviceServiceData] 150 | description: The type of the Object. 151 | id: 152 | type: string 153 | enum: [deviceServiceId] 154 | description: "A single fully qualified identifier of the Service of a Device." 155 | deviceId: 156 | type: string 157 | description: "A single fully qualified identifier of the Device." 158 | state: 159 | $ref: '#/components/schemas/PrivacyModeServiceStates' 160 | path: 161 | type: string 162 | description: The path to the Property. 163 | PrivacyModeState: 164 | type: string 165 | enum: [ENABLED,DISABLED] 166 | 167 | requestBodies: 168 | PrivacyModeServicePrivacyModeStatePayload: 169 | content: 170 | application/json: 171 | schema: 172 | type: object 173 | properties: 174 | '@type': 175 | type: string 176 | enum: [privacyModeState] 177 | description: The type of the Object. 178 | value: 179 | $ref: '#/components/schemas/PrivacyModeState' 180 | parameters: 181 | apiVersionHeaderParam: 182 | in: header 183 | name: api-version 184 | description: The version of the API. 185 | schema: 186 | type: string 187 | example: "1.0" 188 | deviceIdPathParam: 189 | name: deviceId 190 | in: path 191 | description: "A single fully qualified identifier of the Device." 192 | required: true 193 | schema: 194 | type: string 195 | propertyPathPathParam: 196 | name: propertyPath 197 | in: path 198 | description: The path to the Property. 199 | required: true 200 | schema: 201 | type: string 202 | -------------------------------------------------------------------------------- /openapi/SecurityCameraEyes-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:SecurityCameraEyes:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Security Camera Eyes 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for a Security Camera Eyes. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: Services 22 | description: Services of your SecurityCameraEyes 23 | - name: States 24 | description: States of your SecurityCameraEyes 25 | paths: 26 | '/devices/{deviceId}/services/PrivacyMode': 27 | get: 28 | summary: Retrieve the PrivacyMode service of the SecurityCameraEyes. 29 | description: |- 30 | With this service the device can be easily set in privacy mode and enhances your Bosch Smart Home System as an additional security component. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: The PrivacyMode was successfully retrieved. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/PrivacyModeService' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | '/devices/{deviceId}/services/PrivacyMode/state': 51 | get: 52 | summary: Retrieve the state of the PrivacyMode service. 53 | description: |- 54 | Retrieve the state of the PrivacyMode service identified by the 55 | `deviceId` path parameter. 56 | tags: 57 | - States 58 | parameters: 59 | - $ref: '#/components/parameters/apiVersionHeaderParam' 60 | - $ref: '#/components/parameters/deviceIdPathParam' 61 | responses: 62 | '200': 63 | description: The state of PrivacyMode was successfully retrieved. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/PrivacyModeServiceStates' 68 | '404': 69 | description: |- 70 | The entity could not be found. One of the defined query parameters was invalid. 71 | content: 72 | application/json: 73 | schema: 74 | $ref: '#/components/schemas/AdvancedError' 75 | 76 | put: 77 | summary: Executes the privacyModeState on the device. 78 | description: |- 79 | Executes the privacyModeState on the device identified by the `deviceId` path parameter. 80 | tags: 81 | - States 82 | parameters: 83 | - $ref: '#/components/parameters/apiVersionHeaderParam' 84 | - $ref: '#/components/parameters/deviceIdPathParam' 85 | responses: 86 | '204': 87 | description: Accepted request. 88 | '400': 89 | description: One of the defined query parameters was invalid. 90 | content: 91 | application/json: 92 | schema: 93 | $ref: '#/components/schemas/AdvancedError' 94 | '404': 95 | description: The entity could not be found. One of the defined path parameters was invalid. 96 | content: 97 | application/json: 98 | schema: 99 | $ref: '#/components/schemas/AdvancedError' 100 | '405': 101 | description: The method was not allowed. 102 | '422': 103 | description: Mapping of defined query parameter failed. 104 | content: 105 | application/json: 106 | schema: 107 | $ref: '#/components/schemas/AdvancedError' 108 | requestBody: 109 | $ref: '#/components/requestBodies/PrivacyModeServicePrivacyModeStatePayload' 110 | components: 111 | schemas: 112 | AdvancedError: 113 | type: object 114 | properties: 115 | '@type': 116 | type: string 117 | description: The type of the Object. 118 | example: JsonRestExceptionResponseEntity 119 | errorCode: 120 | type: string 121 | description: The error code of the occurred Exception. 122 | statusCode: 123 | type: integer 124 | description: The HTTP status of the error. 125 | ServiceDefinition: 126 | type: array 127 | minItems: 1 128 | uniqueItems: true 129 | items: 130 | type: string 131 | description: "A single fully qualified identifier of the Service of a Device." 132 | example: 133 | - PrivacyMode 134 | PrivacyModeServiceStates: 135 | type: object 136 | description: PrivacyModeService states of SecurityCameraEyes 137 | properties: 138 | '@type': 139 | type: string 140 | enum: [privacyModeState] 141 | description: The type of the Object. 142 | value: 143 | $ref: '#/components/schemas/PrivacyModeState' 144 | PrivacyModeService: 145 | type: object 146 | properties: 147 | '@type': 148 | type: string 149 | enum: [DeviceServiceData] 150 | description: The type of the Object. 151 | id: 152 | type: string 153 | enum: [deviceServiceId] 154 | description: "A single fully qualified identifier of the Service of a Device." 155 | deviceId: 156 | type: string 157 | description: "A single fully qualified identifier of the Device." 158 | state: 159 | $ref: '#/components/schemas/PrivacyModeServiceStates' 160 | path: 161 | type: string 162 | description: The path to the Property. 163 | PrivacyModeState: 164 | type: string 165 | enum: [ENABLED,DISABLED] 166 | 167 | requestBodies: 168 | PrivacyModeServicePrivacyModeStatePayload: 169 | content: 170 | application/json: 171 | schema: 172 | type: object 173 | properties: 174 | '@type': 175 | type: string 176 | enum: [privacyModeState] 177 | description: The type of the Object. 178 | value: 179 | $ref: '#/components/schemas/PrivacyModeState' 180 | parameters: 181 | apiVersionHeaderParam: 182 | in: header 183 | name: api-version 184 | description: The version of the API. 185 | schema: 186 | type: string 187 | example: "1.0" 188 | deviceIdPathParam: 189 | name: deviceId 190 | in: path 191 | description: "A single fully qualified identifier of the Device." 192 | required: true 193 | schema: 194 | type: string 195 | propertyPathPathParam: 196 | name: propertyPath 197 | in: path 198 | description: The path to the Property. 199 | required: true 200 | schema: 201 | type: string 202 | -------------------------------------------------------------------------------- /openapi/Shutter-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: Bosch Smart Home Local API for Shutter 4 | description: |- 5 | This description focuses on the JSON-based, REST-like API for a Shutter. 6 | 7 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 8 | 9 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 10 | 11 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 12 | version: "1.0" 13 | servers: 14 | - url: https://{shcIp}:8444/smarthome 15 | description: "Bosch Smart Home Controller URL" 16 | variables: 17 | shcIp: 18 | default: 192.168.0.10 19 | tags: 20 | - name: Services 21 | description: Services of your Shutter 22 | - name: States 23 | description: States of your Shutter 24 | paths: 25 | '/devices/{deviceId}/services/ShutterControl': 26 | get: 27 | summary: Retrieve the ShutterControl service of the Shutter. 28 | description: |- 29 | Control of your shutter to take any position you desire. 30 | tags: 31 | - Services 32 | parameters: 33 | - $ref: '#/components/parameters/apiVersionHeaderParam' 34 | - $ref: '#/components/parameters/deviceIdPathParam' 35 | responses: 36 | '200': 37 | description: The ShutterControl was successfully retrieved. 38 | content: 39 | application/json: 40 | schema: 41 | $ref: '#/components/schemas/ShutterControlService' 42 | '404': 43 | description: |- 44 | The entity could not be found. One of the defined query parameters was invalid. 45 | content: 46 | application/json: 47 | schema: 48 | $ref: '#/components/schemas/AdvancedError' 49 | '/devices/{deviceId}/services/ShutterControl/state': 50 | get: 51 | summary: Retrieve the state of the ShutterControl service. 52 | description: |- 53 | Retrieve the state of the ShutterControl service identified by the 54 | `deviceId` path parameter. 55 | tags: 56 | - States 57 | parameters: 58 | - $ref: '#/components/parameters/apiVersionHeaderParam' 59 | - $ref: '#/components/parameters/deviceIdPathParam' 60 | responses: 61 | '200': 62 | description: The state of ShutterControl was successfully retrieved. 63 | content: 64 | application/json: 65 | schema: 66 | $ref: '#/components/schemas/ShutterControlServiceStates' 67 | '404': 68 | description: |- 69 | The entity could not be found. One of the defined query parameters was invalid. 70 | content: 71 | application/json: 72 | schema: 73 | $ref: '#/components/schemas/AdvancedError' 74 | 75 | put: 76 | summary: Executes the shutterControlState on the device. 77 | description: |- 78 | Executes the shutterControlState on the device identified by the `deviceId` path parameter. 79 | tags: 80 | - States 81 | parameters: 82 | - $ref: '#/components/parameters/apiVersionHeaderParam' 83 | - $ref: '#/components/parameters/deviceIdPathParam' 84 | responses: 85 | '204': 86 | description: Accepted request. 87 | '400': 88 | description: One of the defined query parameters was invalid. 89 | content: 90 | application/json: 91 | schema: 92 | $ref: '#/components/schemas/AdvancedError' 93 | '404': 94 | description: The entity could not be found. One of the defined path parameters was invalid. 95 | content: 96 | application/json: 97 | schema: 98 | $ref: '#/components/schemas/AdvancedError' 99 | '405': 100 | description: The method was not allowed. 101 | '422': 102 | description: Mapping of defined query parameter failed. 103 | content: 104 | application/json: 105 | schema: 106 | $ref: '#/components/schemas/AdvancedError' 107 | requestBody: 108 | $ref: '#/components/requestBodies/ShutterControlServiceShutterControlStatePayload' 109 | components: 110 | schemas: 111 | AdvancedError: 112 | type: object 113 | properties: 114 | '@type': 115 | type: string 116 | description: The type of the Object. 117 | example: JsonRestExceptionResponseEntity 118 | errorCode: 119 | type: string 120 | description: The error code of the occurred Exception. 121 | statusCode: 122 | type: integer 123 | description: The HTTP status of the error. 124 | ServiceDefinition: 125 | type: array 126 | minItems: 1 127 | uniqueItems: true 128 | items: 129 | type: string 130 | description: "A single fully qualified identifier of the Service of a Device." 131 | example: 132 | - ShutterControl 133 | ShutterControlServiceStates: 134 | type: object 135 | description: ShutterControlService states of Shutter 136 | properties: 137 | '@type': 138 | type: string 139 | enum: [shutterControlState] 140 | description: The type of the Object. 141 | level: 142 | $ref: '#/components/schemas/ShutterControlState' 143 | ShutterControlService: 144 | type: object 145 | properties: 146 | '@type': 147 | type: string 148 | enum: [DeviceServiceData] 149 | description: The type of the Object. 150 | id: 151 | type: string 152 | enum: [deviceServiceId] 153 | description: "A single fully qualified identifier of the Service of a Device." 154 | deviceId: 155 | type: string 156 | description: "A single fully qualified identifier of the Device." 157 | state: 158 | $ref: '#/components/schemas/ShutterControlServiceStates' 159 | path: 160 | type: string 161 | description: The path to the Property. 162 | ShutterControlState: 163 | type: string 164 | enum: ["0.000", "0.005", "...", "0.995", "1.000"] 165 | 166 | requestBodies: 167 | ShutterControlServiceShutterControlStatePayload: 168 | content: 169 | application/json: 170 | schema: 171 | type: object 172 | properties: 173 | '@type': 174 | type: string 175 | enum: [shutterControlState] 176 | description: The type of the Object. 177 | level: 178 | $ref: '#/components/schemas/ShutterControlState' 179 | parameters: 180 | apiVersionHeaderParam: 181 | in: header 182 | name: api-version 183 | description: The version of the API. 184 | schema: 185 | type: string 186 | example: "1.0" 187 | deviceIdPathParam: 188 | name: deviceId 189 | in: path 190 | description: "A single fully qualified identifier of the Device." 191 | required: true 192 | schema: 193 | type: string 194 | propertyPathPathParam: 195 | name: propertyPath 196 | in: path 197 | description: The path to the Property. 198 | required: true 199 | schema: 200 | type: string 201 | -------------------------------------------------------------------------------- /openapi/SmartPlug-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:SmartPlug:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Smart Plug 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for a Smart Plug. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: Services 22 | description: Services of your SmartPlug 23 | - name: States 24 | description: States of your SmartPlug 25 | paths: 26 | '/devices/{deviceId}/services/PowerMeter': 27 | get: 28 | summary: Retrieve the PowerMeter service of the SmartPlug. 29 | description: |- 30 | With this service you always have an eye on energy consumption. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: The PowerMeter was successfully retrieved. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/PowerMeterService' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | '/devices/{deviceId}/services/PowerMeter/state': 51 | get: 52 | summary: Retrieve the state of the PowerMeter service. 53 | description: |- 54 | Retrieve the state of the PowerMeter service identified by the 55 | `deviceId` path parameter. 56 | tags: 57 | - States 58 | parameters: 59 | - $ref: '#/components/parameters/apiVersionHeaderParam' 60 | - $ref: '#/components/parameters/deviceIdPathParam' 61 | responses: 62 | '200': 63 | description: The state of PowerMeter was successfully retrieved. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/PowerMeterServiceStates' 68 | '404': 69 | description: |- 70 | The entity could not be found. One of the defined query parameters was invalid. 71 | content: 72 | application/json: 73 | schema: 74 | $ref: '#/components/schemas/AdvancedError' 75 | 76 | '/devices/{deviceId}/services/PowerSwitch': 77 | get: 78 | summary: Retrieve the PowerSwitch service of the SmartPlug. 79 | description: |- 80 | Switch electrical appliances on and off. Can be used with electrical appliances with high ratings of up to 3680 W. 81 | tags: 82 | - Services 83 | parameters: 84 | - $ref: '#/components/parameters/apiVersionHeaderParam' 85 | - $ref: '#/components/parameters/deviceIdPathParam' 86 | responses: 87 | '200': 88 | description: The PowerSwitch was successfully retrieved. 89 | content: 90 | application/json: 91 | schema: 92 | $ref: '#/components/schemas/PowerSwitchService' 93 | '404': 94 | description: |- 95 | The entity could not be found. One of the defined query parameters was invalid. 96 | content: 97 | application/json: 98 | schema: 99 | $ref: '#/components/schemas/AdvancedError' 100 | '/devices/{deviceId}/services/PowerSwitch/state': 101 | get: 102 | summary: Retrieve the state of the PowerSwitch service. 103 | description: |- 104 | Retrieve the state of the PowerSwitch service identified by the 105 | `deviceId` path parameter. 106 | tags: 107 | - States 108 | parameters: 109 | - $ref: '#/components/parameters/apiVersionHeaderParam' 110 | - $ref: '#/components/parameters/deviceIdPathParam' 111 | responses: 112 | '200': 113 | description: The state of PowerSwitch was successfully retrieved. 114 | content: 115 | application/json: 116 | schema: 117 | $ref: '#/components/schemas/PowerSwitchServiceStates' 118 | '404': 119 | description: |- 120 | The entity could not be found. One of the defined query parameters was invalid. 121 | content: 122 | application/json: 123 | schema: 124 | $ref: '#/components/schemas/AdvancedError' 125 | 126 | put: 127 | summary: Executes the powerSwitchState on the device. 128 | description: |- 129 | Executes the powerSwitchState on the device identified by the `deviceId` path parameter. 130 | tags: 131 | - States 132 | parameters: 133 | - $ref: '#/components/parameters/apiVersionHeaderParam' 134 | - $ref: '#/components/parameters/deviceIdPathParam' 135 | responses: 136 | '204': 137 | description: Accepted request. 138 | '400': 139 | description: One of the defined query parameters was invalid. 140 | content: 141 | application/json: 142 | schema: 143 | $ref: '#/components/schemas/AdvancedError' 144 | '404': 145 | description: The entity could not be found. One of the defined path parameters was invalid. 146 | content: 147 | application/json: 148 | schema: 149 | $ref: '#/components/schemas/AdvancedError' 150 | '405': 151 | description: The method was not allowed. 152 | '422': 153 | description: Mapping of defined query parameter failed. 154 | content: 155 | application/json: 156 | schema: 157 | $ref: '#/components/schemas/AdvancedError' 158 | requestBody: 159 | $ref: '#/components/requestBodies/PowerSwitchServicePowerSwitchStatePayload' 160 | components: 161 | schemas: 162 | AdvancedError: 163 | type: object 164 | properties: 165 | '@type': 166 | type: string 167 | description: The type of the Object. 168 | example: JsonRestExceptionResponseEntity 169 | errorCode: 170 | type: string 171 | description: The error code of the occurred Exception. 172 | statusCode: 173 | type: integer 174 | description: The HTTP status of the error. 175 | ServiceDefinition: 176 | type: array 177 | minItems: 1 178 | uniqueItems: true 179 | items: 180 | type: string 181 | description: "A single fully qualified identifier of the Service of a Device." 182 | example: 183 | - PowerMeter 184 | - PowerSwitch 185 | PowerMeterServiceStates: 186 | type: object 187 | description: PowerMeterService states of SmartPlug 188 | properties: 189 | powerConsumption: 190 | type: number 191 | energyConsumption: 192 | type: number 193 | PowerMeterService: 194 | type: object 195 | properties: 196 | '@type': 197 | type: string 198 | enum: [DeviceServiceData] 199 | description: The type of the Object. 200 | id: 201 | type: string 202 | enum: [deviceServiceId] 203 | description: "A single fully qualified identifier of the Service of a Device." 204 | deviceId: 205 | type: string 206 | description: "A single fully qualified identifier of the Device." 207 | state: 208 | $ref: '#/components/schemas/PowerMeterServiceStates' 209 | path: 210 | type: string 211 | description: The path to the Property. 212 | PowerSwitchServiceStates: 213 | type: object 214 | description: PowerSwitchService states of SmartPlug 215 | properties: 216 | '@type': 217 | type: string 218 | enum: [powerSwitchState] 219 | description: The type of the Object. 220 | switchState: 221 | $ref: '#/components/schemas/PowerSwitchState' 222 | PowerSwitchService: 223 | type: object 224 | properties: 225 | '@type': 226 | type: string 227 | enum: [DeviceServiceData] 228 | description: The type of the Object. 229 | id: 230 | type: string 231 | enum: [deviceServiceId] 232 | description: "A single fully qualified identifier of the Service of a Device." 233 | deviceId: 234 | type: string 235 | description: "A single fully qualified identifier of the Device." 236 | state: 237 | $ref: '#/components/schemas/PowerSwitchServiceStates' 238 | path: 239 | type: string 240 | description: The path to the Property. 241 | PowerSwitchState: 242 | type: string 243 | enum: [ON,OFF] 244 | 245 | requestBodies: 246 | PowerSwitchServicePowerSwitchStatePayload: 247 | content: 248 | application/json: 249 | schema: 250 | type: object 251 | properties: 252 | '@type': 253 | type: string 254 | enum: [powerSwitchState] 255 | description: The type of the Object. 256 | switchState: 257 | $ref: '#/components/schemas/PowerSwitchState' 258 | parameters: 259 | apiVersionHeaderParam: 260 | in: header 261 | name: api-version 262 | description: The version of the API. 263 | schema: 264 | type: string 265 | example: "1.0" 266 | deviceIdPathParam: 267 | name: deviceId 268 | in: path 269 | description: "A single fully qualified identifier of the Device." 270 | required: true 271 | schema: 272 | type: string 273 | propertyPathPathParam: 274 | name: propertyPath 275 | in: path 276 | description: The path to the Property. 277 | required: true 278 | schema: 279 | type: string 280 | -------------------------------------------------------------------------------- /openapi/SmokeDetector-II-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: Bosch Smart Home Local API for Smoke Detector II 4 | description: |- 5 | This description focuses on the JSON-based, REST-like API for a Smoke Detector II. 6 | 7 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 8 | 9 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 10 | 11 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 12 | version: "1.0" 13 | 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | 21 | tags: 22 | - name: Services 23 | description: Services of your SmokeDetector II 24 | - name: States 25 | description: States of your SmokeDetector II 26 | 27 | paths: 28 | '/devices/{deviceId}/services': 29 | get: 30 | summary: Get all available services of Smoke Detector II 31 | description: Retrieves the list of available services for the Smoke Detector II device with the specified device ID. 32 | tags: 33 | - Services 34 | parameters: 35 | - $ref: '#/components/parameters/apiVersionHeaderParam' 36 | - $ref: '#/components/parameters/deviceIdPathParam' 37 | responses: 38 | '200': 39 | description: The SmokeDetector's services were successfully retrieved. 40 | content: 41 | application/json: 42 | schema: 43 | type: array 44 | items: 45 | $ref: '#/components/schemas/DeviceServiceData' 46 | '404': 47 | description: |- 48 | The entity could not be found. One of the defined query parameters was invalid. 49 | content: 50 | application/json: 51 | schema: 52 | $ref: '#/components/schemas/AdvancedError' 53 | 54 | '/devices/{deviceId}/services/Alarm/state': 55 | get: 56 | summary: Get Alarm state 57 | description: Retrieves the current Alarm state of the device with the specified device ID. 58 | tags: 59 | - States 60 | parameters: 61 | - $ref: '#/components/parameters/apiVersionHeaderParam' 62 | - $ref: '#/components/parameters/deviceIdPathParam' 63 | responses: 64 | '200': 65 | description: The Alarm state was successfully retrieved. 66 | content: 67 | application/json: 68 | schema: 69 | $ref: '#/components/schemas/AlarmState' 70 | put: 71 | summary: Update Alarm state 72 | description: Updates the Alarm state of the device with the specified device ID. 73 | tags: 74 | - States 75 | parameters: 76 | - $ref: '#/components/parameters/apiVersionHeaderParam' 77 | - $ref: '#/components/parameters/deviceIdPathParam' 78 | requestBody: 79 | required: true 80 | content: 81 | application/json: 82 | schema: 83 | type: object 84 | properties: 85 | '@type': 86 | type: enum 87 | example: [ alarmState ] 88 | value: 89 | type: string 90 | description: New value of the alarm state 91 | example: [ 92 | 'INTRUSION_ALARM_ON_REQUESTED', 93 | 'INTRUSION_ALARM_OFF_REQUESTED' 94 | ] 95 | required: 96 | - '@type' 97 | - value 98 | responses: 99 | '204': 100 | description: Accepted request. 101 | '400': 102 | description: One of the defined query parameters was invalid. 103 | content: 104 | application/json: 105 | schema: 106 | $ref: '#/components/schemas/AdvancedError' 107 | '404': 108 | description: The entity could not be found. One of the defined path parameters was invalid. 109 | content: 110 | application/json: 111 | schema: 112 | $ref: '#/components/schemas/AdvancedError' 113 | '405': 114 | description: The method was not allowed. 115 | '422': 116 | description: Mapping of defined query parameter failed. 117 | content: 118 | application/json: 119 | schema: 120 | $ref: '#/components/schemas/AdvancedError' 121 | 122 | components: 123 | schemas: 124 | AdvancedError: 125 | type: object 126 | properties: 127 | '@type': 128 | type: string 129 | description: The type of the Object. 130 | example: JsonRestExceptionResponseEntity 131 | errorCode: 132 | type: string 133 | description: The error code of the occurred Exception. 134 | statusCode: 135 | type: integer 136 | description: The HTTP status of the error. 137 | 138 | DeviceServiceData: 139 | type: object 140 | properties: 141 | "@type": 142 | type: string 143 | example: 'DeviceServiceData' 144 | id: 145 | type: string 146 | example: [ 147 | 'SmokeDetectorCheck', 148 | 'CommunicationQuality', 149 | 'BatteryLevel', 150 | 'Alarm' 151 | ] 152 | deviceId: 153 | type: string 154 | example: '{smoke-device}' 155 | state: 156 | oneOf: 157 | - $ref: "#/components/schemas/SmokeDetectorCheckState" 158 | - $ref: "#/components/schemas/CommunicationQualityState" 159 | - $ref: "#/components/schemas/AlarmState" 160 | operations: 161 | type: array 162 | items: 163 | type: string 164 | path: 165 | type: string 166 | example: [ 167 | '/devices/{smoke-device}/services/SmokeDetectorCheck', 168 | '/devices/{smoke-device}/services/CommunicationQuality', 169 | '/devices/{smoke-device}/services/BatteryLevel', 170 | '/devices/{smoke-device}/services/Alarm' 171 | ] 172 | 173 | SmokeDetectorCheckState: 174 | type: object 175 | properties: 176 | '@type': 177 | type: string 178 | example: 'smokeDetectorCheckState' 179 | value: 180 | type: string 181 | enum: [ SMOKE_TEST_REQUESTED, NONE ] 182 | example: 'NONE' 183 | required: 184 | - '@type' 185 | - value 186 | 187 | CommunicationQualityState: 188 | type: object 189 | properties: 190 | '@type': 191 | type: string 192 | example: 'communicationQualityState' 193 | quality: 194 | type: string 195 | description: The quality of the device's communication. 196 | example: 'NORMAL' 197 | required: 198 | - '@type' 199 | - quality 200 | 201 | AlarmState: 202 | type: object 203 | properties: 204 | '@type': 205 | type: string 206 | example: 'alarmState' 207 | value: 208 | type: string 209 | description: Current value of the Alarm state 210 | example: 'IDLE_OFF' 211 | required: 212 | - '@type' 213 | - value 214 | 215 | parameters: 216 | apiVersionHeaderParam: 217 | in: header 218 | name: api-version 219 | description: The version of the API. 220 | schema: 221 | type: string 222 | example: "1.0" 223 | 224 | deviceIdPathParam: 225 | name: deviceId 226 | in: path 227 | description: "A single fully qualified identifier of the Device." 228 | required: true 229 | schema: 230 | type: string 231 | -------------------------------------------------------------------------------- /openapi/SmokeDetector-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: Bosch Smart Home Local API for Smoke Detector 4 | description: |- 5 | This description focuses on the JSON-based, REST-like API for a Smoke Detector. 6 | 7 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 8 | 9 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 10 | 11 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 12 | version: "1.0" 13 | servers: 14 | - url: https://{shcIp}:8444/smarthome 15 | description: "Bosch Smart Home Controller URL" 16 | variables: 17 | shcIp: 18 | default: 192.168.0.10 19 | tags: 20 | - name: Services 21 | description: Services of your SmokeDetector 22 | - name: States 23 | description: States of your SmokeDetector 24 | paths: 25 | '/devices/{deviceId}/services/SmokeDetectorCheck': 26 | get: 27 | summary: Retrieve the SmokeDetectorCheck service of the SmokeDetector. 28 | description: |- 29 | This service checks the smoke detector functionality. 30 | tags: 31 | - Services 32 | parameters: 33 | - $ref: '#/components/parameters/apiVersionHeaderParam' 34 | - $ref: '#/components/parameters/deviceIdPathParam' 35 | responses: 36 | '200': 37 | description: The SmokeDetectorCheck was successfully retrieved. 38 | content: 39 | application/json: 40 | schema: 41 | $ref: '#/components/schemas/SmokeDetectorCheckService' 42 | '404': 43 | description: |- 44 | The entity could not be found. One of the defined query parameters was invalid. 45 | content: 46 | application/json: 47 | schema: 48 | $ref: '#/components/schemas/AdvancedError' 49 | '/devices/{deviceId}/services/SmokeDetectorCheck/state': 50 | get: 51 | summary: Retrieve the state of the SmokeDetectorCheck service. 52 | description: |- 53 | Retrieve the state of the SmokeDetectorCheck service identified by the 54 | `deviceId` path parameter. 55 | tags: 56 | - States 57 | parameters: 58 | - $ref: '#/components/parameters/apiVersionHeaderParam' 59 | - $ref: '#/components/parameters/deviceIdPathParam' 60 | responses: 61 | '200': 62 | description: The state of SmokeDetectorCheck was successfully retrieved. 63 | content: 64 | application/json: 65 | schema: 66 | $ref: '#/components/schemas/SmokeDetectorCheckServiceStates' 67 | '404': 68 | description: |- 69 | The entity could not be found. One of the defined query parameters was invalid. 70 | content: 71 | application/json: 72 | schema: 73 | $ref: '#/components/schemas/AdvancedError' 74 | 75 | put: 76 | summary: Executes the smokeDetectorCheckState on the device. 77 | description: |- 78 | Executes the smokeDetectorCheckState on the device identified by the `deviceId` path parameter. 79 | tags: 80 | - States 81 | parameters: 82 | - $ref: '#/components/parameters/apiVersionHeaderParam' 83 | - $ref: '#/components/parameters/deviceIdPathParam' 84 | responses: 85 | '204': 86 | description: Accepted request. 87 | '400': 88 | description: One of the defined query parameters was invalid. 89 | content: 90 | application/json: 91 | schema: 92 | $ref: '#/components/schemas/AdvancedError' 93 | '404': 94 | description: The entity could not be found. One of the defined path parameters was invalid. 95 | content: 96 | application/json: 97 | schema: 98 | $ref: '#/components/schemas/AdvancedError' 99 | '405': 100 | description: The method was not allowed. 101 | '422': 102 | description: Mapping of defined query parameter failed. 103 | content: 104 | application/json: 105 | schema: 106 | $ref: '#/components/schemas/AdvancedError' 107 | requestBody: 108 | $ref: '#/components/requestBodies/SmokeDetectorCheckServiceSmokeDetectorCheckStatePayload' 109 | components: 110 | schemas: 111 | AdvancedError: 112 | type: object 113 | properties: 114 | '@type': 115 | type: string 116 | description: The type of the Object. 117 | example: JsonRestExceptionResponseEntity 118 | errorCode: 119 | type: string 120 | description: The error code of the occurred Exception. 121 | statusCode: 122 | type: integer 123 | description: The HTTP status of the error. 124 | ServiceDefinition: 125 | type: array 126 | minItems: 1 127 | uniqueItems: true 128 | items: 129 | type: string 130 | description: "A single fully qualified identifier of the Service of a Device." 131 | example: 132 | - SmokeDetectorCheck 133 | SmokeDetectorCheckServiceStates: 134 | type: object 135 | description: SmokeDetectorCheckService states of SmokeDetector 136 | properties: 137 | '@type': 138 | type: string 139 | enum: [smokeDetectorCheckState] 140 | description: The type of the Object. 141 | value: 142 | $ref: '#/components/schemas/SmokeDetectorCheckState' 143 | SmokeDetectorCheckService: 144 | type: object 145 | properties: 146 | '@type': 147 | type: string 148 | enum: [DeviceServiceData] 149 | description: The type of the Object. 150 | id: 151 | type: string 152 | enum: [deviceServiceId] 153 | description: "A single fully qualified identifier of the Service of a Device." 154 | deviceId: 155 | type: string 156 | description: "A single fully qualified identifier of the Device." 157 | state: 158 | $ref: '#/components/schemas/SmokeDetectorCheckServiceStates' 159 | path: 160 | type: string 161 | description: The path to the Property. 162 | SmokeDetectorCheckState: 163 | type: string 164 | enum: [SMOKE_TEST_REQUESTED,NONE] 165 | 166 | requestBodies: 167 | SmokeDetectorCheckServiceSmokeDetectorCheckStatePayload: 168 | content: 169 | application/json: 170 | schema: 171 | type: object 172 | properties: 173 | '@type': 174 | type: string 175 | enum: [smokeDetectorCheckState] 176 | description: The type of the Object. 177 | value: 178 | $ref: '#/components/schemas/SmokeDetectorCheckState' 179 | parameters: 180 | apiVersionHeaderParam: 181 | in: header 182 | name: api-version 183 | description: The version of the API. 184 | schema: 185 | type: string 186 | example: "1.0" 187 | deviceIdPathParam: 188 | name: deviceId 189 | in: path 190 | description: "A single fully qualified identifier of the Device." 191 | required: true 192 | schema: 193 | type: string 194 | propertyPathPathParam: 195 | name: propertyPath 196 | in: path 197 | description: The path to the Property. 198 | required: true 199 | schema: 200 | type: string 201 | -------------------------------------------------------------------------------- /openapi/Thermostat-II-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: Bosch Smart Home Local API for Thermostat II 4 | description: |- 5 | This description focuses on the JSON-based, REST-like API for a Thermostat II. 6 | 7 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 8 | 9 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 10 | 11 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 12 | version: "1.0" 13 | 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | 21 | tags: 22 | - name: Services 23 | description: Services of your Thermostat II 24 | - name: States 25 | description: States of your Thermostat II 26 | 27 | paths: 28 | '/devices/{deviceId}/services/DisplayConfiguration/state': 29 | get: 30 | summary: Get Display Configuration state 31 | description: Retrieves the current configuration state of the display for the TRV II or RTH II device with the specified ID. 32 | tags: 33 | - States 34 | parameters: 35 | - $ref: '#/components/parameters/apiVersionHeaderParam' 36 | - $ref: '#/components/parameters/deviceIdPathParam' 37 | responses: 38 | '200': 39 | description: The state of Display Configuration was successfully retrieved. 40 | content: 41 | application/json: 42 | schema: 43 | $ref: '#/components/schemas/DisplayConfigurationState' 44 | '404': 45 | description: |- 46 | The entity could not be found. One of the defined query parameters was invalid. 47 | content: 48 | application/json: 49 | schema: 50 | $ref: '#/components/schemas/AdvancedError' 51 | put: 52 | summary: Update Display Configuration state 53 | description: Updates the configuration state of the display for the TRV II or RTH II device with the specified ID. 54 | tags: 55 | - States 56 | parameters: 57 | - $ref: '#/components/parameters/apiVersionHeaderParam' 58 | - $ref: '#/components/parameters/deviceIdPathParam' 59 | requestBody: 60 | required: true 61 | content: 62 | application/json: 63 | schema: 64 | type: object 65 | properties: 66 | "@type": 67 | type: string 68 | enum: [ displayConfigurationState ] 69 | description: The type of the state object 70 | displayBrightness: 71 | type: integer 72 | minimum: 0 73 | maximum: 100 74 | description: The brightness level of the display (percentage value) 75 | example: 50 76 | displayOnTime: 77 | type: integer 78 | minimum: 0 79 | description: The time duration for which the display remains on (in seconds) 80 | example: 15 81 | required: 82 | - "@type" 83 | - displayBrightness 84 | - displayOnTime 85 | responses: 86 | '204': 87 | description: Accepted request. 88 | '400': 89 | description: One of the defined query parameters was invalid. 90 | content: 91 | application/json: 92 | schema: 93 | $ref: '#/components/schemas/AdvancedError' 94 | '404': 95 | description: The entity could not be found. One of the defined path parameters was invalid. 96 | content: 97 | application/json: 98 | schema: 99 | $ref: '#/components/schemas/AdvancedError' 100 | '405': 101 | description: The method was not allowed. 102 | '422': 103 | description: Mapping of defined query parameter failed. 104 | content: 105 | application/json: 106 | schema: 107 | $ref: '#/components/schemas/AdvancedError' 108 | 109 | '/devices/{deviceId}/services/DisplayDirection/state': 110 | get: 111 | summary: Get Display Direction state 112 | description: Retrieves the current Display Direction state for the TRV II device with the specified ID. 113 | tags: 114 | - States 115 | parameters: 116 | - $ref: '#/components/parameters/apiVersionHeaderParam' 117 | - $ref: '#/components/parameters/deviceIdPathParam' 118 | responses: 119 | '200': 120 | description: The state of Display Direction was successfully retrieved. 121 | content: 122 | application/json: 123 | schema: 124 | $ref: '#/components/schemas/DisplayDirectionState' 125 | '404': 126 | description: |- 127 | The entity could not be found. One of the defined query parameters was invalid. 128 | content: 129 | application/json: 130 | schema: 131 | $ref: '#/components/schemas/AdvancedError' 132 | put: 133 | summary: Update Display Direction configuration of TRV II device. 134 | tags: 135 | - States 136 | parameters: 137 | - $ref: '#/components/parameters/apiVersionHeaderParam' 138 | - $ref: '#/components/parameters/deviceIdPathParam' 139 | requestBody: 140 | required: true 141 | content: 142 | application/json: 143 | schema: 144 | $ref: '#/components/schemas/DisplayDirectionState' 145 | responses: 146 | '204': 147 | description: Accepted request. 148 | '400': 149 | description: One of the defined query parameters was invalid. 150 | content: 151 | application/json: 152 | schema: 153 | $ref: '#/components/schemas/AdvancedError' 154 | '404': 155 | description: The entity could not be found. One of the defined path parameters was invalid. 156 | content: 157 | application/json: 158 | schema: 159 | $ref: '#/components/schemas/AdvancedError' 160 | '405': 161 | description: The method was not allowed. 162 | '422': 163 | description: Mapping of defined query parameter failed. 164 | content: 165 | application/json: 166 | schema: 167 | $ref: '#/components/schemas/AdvancedError' 168 | 169 | '/devices/{deviceId}/services/DisplayedTemperatureConfiguration/state': 170 | get: 171 | summary: Get the Displayed Temperature Configuration of TRV II device with the specified ID. 172 | tags: 173 | - States 174 | parameters: 175 | - $ref: '#/components/parameters/apiVersionHeaderParam' 176 | - $ref: '#/components/parameters/deviceIdPathParam' 177 | responses: 178 | '200': 179 | description: The state of Displayed Temperature Configuration was successfully retrieved. 180 | content: 181 | application/json: 182 | schema: 183 | $ref: '#/components/schemas/DisplayedTemperatureConfigurationState' 184 | '404': 185 | description: |- 186 | The entity could not be found. One of the defined query parameters was invalid. 187 | content: 188 | application/json: 189 | schema: 190 | $ref: '#/components/schemas/AdvancedError' 191 | put: 192 | summary: Update the Displayed Temperature Configuration of TRV II device with the specified ID. 193 | tags: 194 | - States 195 | requestBody: 196 | required: true 197 | content: 198 | application/json: 199 | schema: 200 | $ref: '#/components/schemas/DisplayedTemperatureConfigurationState' 201 | responses: 202 | '204': 203 | description: Accepted request. 204 | '400': 205 | description: One of the defined query parameters was invalid. 206 | content: 207 | application/json: 208 | schema: 209 | $ref: '#/components/schemas/AdvancedError' 210 | '404': 211 | description: The entity could not be found. One of the defined path parameters was invalid. 212 | content: 213 | application/json: 214 | schema: 215 | $ref: '#/components/schemas/AdvancedError' 216 | '405': 217 | description: The method was not allowed. 218 | '422': 219 | description: Mapping of defined query parameter failed. 220 | content: 221 | application/json: 222 | schema: 223 | $ref: '#/components/schemas/AdvancedError' 224 | 225 | '/devices/{deviceId}/services/ValveTappet': 226 | get: 227 | summary: Get Valve Tappet information 228 | tags: 229 | - Services 230 | parameters: 231 | - $ref: '#/components/parameters/apiVersionHeaderParam' 232 | - $ref: '#/components/parameters/deviceIdPathParam' 233 | responses: 234 | '200': 235 | description: Successful response 236 | content: 237 | application/json: 238 | schema: 239 | type: object 240 | properties: 241 | "@type": 242 | type: string 243 | enum: [ DeviceServiceData ] 244 | id: 245 | type: string 246 | example: ValveTappet 247 | deviceId: 248 | type: string 249 | example: hdm: 250 | state: 251 | $ref: '#/components/schemas/ValveTappetState' 252 | operations: 253 | type: null 254 | faults: 255 | $ref: '#/components/schemas/ValveTappetFaults' 256 | deleted: 257 | type: null 258 | path: 259 | type: string 260 | example: /devices/hdm:/services/ValveTappet 261 | '404': 262 | description: |- 263 | The entity could not be found. One of the defined query parameters was invalid. 264 | content: 265 | application/json: 266 | schema: 267 | $ref: '#/components/schemas/AdvancedError' 268 | 269 | components: 270 | schemas: 271 | AdvancedError: 272 | type: object 273 | properties: 274 | '@type': 275 | type: string 276 | description: The type of the Object. 277 | example: JsonRestExceptionResponseEntity 278 | errorCode: 279 | type: string 280 | description: The error code of the occurred Exception. 281 | statusCode: 282 | type: integer 283 | description: The HTTP status of the error. 284 | 285 | DisplayConfigurationState: 286 | type: object 287 | properties: 288 | "@type": 289 | type: string 290 | enum: [ displayConfigurationState ] 291 | description: The type of the state object 292 | displayBrightness: 293 | type: integer 294 | minimum: 0 295 | maximum: 100 296 | description: The brightness level of the display (percentage value) 297 | example: 70 298 | displayBrightnessMax: 299 | type: integer 300 | minimum: 0 301 | maximum: 100 302 | description: The maximum brightness level supported by the display 303 | example: 100 304 | displayBrightnessMin: 305 | type: integer 306 | minimum: 0 307 | maximum: 100 308 | description: The minimum brightness level supported by the display 309 | example: 10 310 | displayBrightnessStepSize: 311 | type: integer 312 | minimum: 1 313 | description: The step size for adjusting the display brightness 314 | example: 10 315 | displayOnTime: 316 | type: integer 317 | minimum: 0 318 | description: The time duration for which the display remains on (in seconds) 319 | example: 10 320 | displayOnTimeMax: 321 | type: integer 322 | minimum: 0 323 | description: The maximum display on time supported (in seconds) 324 | example: 30 325 | displayOnTimeMin: 326 | type: integer 327 | minimum: 0 328 | description: The minimum display on time supported (in seconds) 329 | example: 5 330 | displayOnTimeStepSize: 331 | type: integer 332 | minimum: 1 333 | description: The step size for adjusting the display on time 334 | example: 5 335 | required: 336 | - "@type" 337 | 338 | DisplayDirectionState: 339 | type: object 340 | properties: 341 | "@type": 342 | type: string 343 | enum: [ displayDirectionState ] 344 | description: The type of the state object 345 | direction: 346 | type: string 347 | enum: 348 | - NORMAL 349 | - REVERSED 350 | description: The display direction configuration (NORMAL or REVERSED) 351 | example: NORMAL 352 | required: 353 | - "@type" 354 | - direction 355 | 356 | DisplayedTemperatureConfigurationState: 357 | type: object 358 | properties: 359 | "@type": 360 | type: string 361 | enum: [ displayedTemperatureConfigurationState ] 362 | description: The type of the state object 363 | displayedTemperature: 364 | type: string 365 | enum: 366 | - MEASURED 367 | - SETPOINT 368 | example: MEASURED 369 | required: 370 | - "@type" 371 | - displayedTemperature 372 | 373 | ValveTappetState: 374 | type: object 375 | properties: 376 | "@type": 377 | type: string 378 | example: valveTappetState 379 | value: 380 | type: string 381 | enum: [ "NO_MOTOR_ERROR", "NO_VALVE_BODY_ERROR" ] 382 | example: NO_MOTOR_ERROR 383 | position: 384 | type: number 385 | example: 80 386 | ValveTappetFaults: 387 | type: object 388 | properties: 389 | entries: 390 | type: array 391 | items: 392 | $ref: '#/components/schemas/ValveTappetFaultEntry' 393 | ValveTappetFaultEntry: 394 | type: object 395 | properties: 396 | type: 397 | type: string 398 | enum: [ "VALVE_NO_MOTOR_ERROR", "VALVE_NO_BODY_ERROR" ] 399 | example: VALVE_NO_MOTOR_ERROR 400 | category: 401 | type: string 402 | example: ERROR 403 | 404 | parameters: 405 | apiVersionHeaderParam: 406 | in: header 407 | name: api-version 408 | description: The version of the API. 409 | schema: 410 | type: string 411 | example: "1.0" 412 | 413 | deviceIdPathParam: 414 | name: deviceId 415 | in: path 416 | description: "A single fully qualified identifier of the Device." 417 | required: true 418 | schema: 419 | type: string 420 | -------------------------------------------------------------------------------- /openapi/Thermostat-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:Thermostat:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Thermostat 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for a Thermostat. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: Services 22 | description: Services of your Thermostat 23 | - name: States 24 | description: States of your Thermostat 25 | paths: 26 | '/devices/{deviceId}/services/ValveTappet': 27 | get: 28 | summary: Retrieve the ValveTappet service of the Thermostat. 29 | description: |- 30 | Get the valve position of a specific thermostat. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: The ValveTappet was successfully retrieved. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/ValveTappetService' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | '/devices/{deviceId}/services/ValveTappet/state': 51 | get: 52 | summary: Retrieve the state of the ValveTappet service. 53 | description: |- 54 | Retrieve the state of the ValveTappet service identified by the 55 | `deviceId` path parameter. 56 | tags: 57 | - States 58 | parameters: 59 | - $ref: '#/components/parameters/apiVersionHeaderParam' 60 | - $ref: '#/components/parameters/deviceIdPathParam' 61 | responses: 62 | '200': 63 | description: The state of ValveTappet was successfully retrieved. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/ValveTappetServiceStates' 68 | '404': 69 | description: |- 70 | The entity could not be found. One of the defined query parameters was invalid. 71 | content: 72 | application/json: 73 | schema: 74 | $ref: '#/components/schemas/AdvancedError' 75 | 76 | '/devices/{deviceId}/services/TemperatureLevel': 77 | get: 78 | summary: Retrieve the TemperatureLevel service of the Thermostat. 79 | description: |- 80 | Measures the temperature at a central point in the room. 81 | tags: 82 | - Services 83 | parameters: 84 | - $ref: '#/components/parameters/apiVersionHeaderParam' 85 | - $ref: '#/components/parameters/deviceIdPathParam' 86 | responses: 87 | '200': 88 | description: The TemperatureLevel was successfully retrieved. 89 | content: 90 | application/json: 91 | schema: 92 | $ref: '#/components/schemas/TemperatureLevelService' 93 | '404': 94 | description: |- 95 | The entity could not be found. One of the defined query parameters was invalid. 96 | content: 97 | application/json: 98 | schema: 99 | $ref: '#/components/schemas/AdvancedError' 100 | '/devices/{deviceId}/services/TemperatureLevel/state': 101 | get: 102 | summary: Retrieve the state of the TemperatureLevel service. 103 | description: |- 104 | Retrieve the state of the TemperatureLevel service identified by the 105 | `deviceId` path parameter. 106 | tags: 107 | - States 108 | parameters: 109 | - $ref: '#/components/parameters/apiVersionHeaderParam' 110 | - $ref: '#/components/parameters/deviceIdPathParam' 111 | responses: 112 | '200': 113 | description: The state of TemperatureLevel was successfully retrieved. 114 | content: 115 | application/json: 116 | schema: 117 | $ref: '#/components/schemas/TemperatureLevelServiceStates' 118 | '404': 119 | description: |- 120 | The entity could not be found. One of the defined query parameters was invalid. 121 | content: 122 | application/json: 123 | schema: 124 | $ref: '#/components/schemas/AdvancedError' 125 | '/devices/{trvId}/services/SilentMode/state': 126 | get: 127 | summary: Get Silent Mode state 128 | description: Retrieves the current state of the Silent Mode for the TRV device with the specified ID. 129 | tags: 130 | - States 131 | parameters: 132 | - $ref: '#/components/parameters/apiVersionHeaderParam' 133 | - $ref: '#/components/parameters/deviceIdPathParam' 134 | responses: 135 | '200': 136 | description: The state of Silent Mode was successfully retrieved. 137 | content: 138 | application/json: 139 | schema: 140 | $ref: '#/components/schemas/SilentModeState' 141 | '404': 142 | description: |- 143 | The entity could not be found. One of the defined query parameters was invalid. 144 | content: 145 | application/json: 146 | schema: 147 | $ref: '#/components/schemas/AdvancedError' 148 | put: 149 | summary: Update Silent Mode state 150 | description: Updates the state of the Silent Mode for the TRV device with the specified ID. 151 | When Silent Mode is enabled the TRV's motor is more silent but it also consumes more power. 152 | tags: 153 | - States 154 | parameters: 155 | - $ref: '#/components/parameters/apiVersionHeaderParam' 156 | - $ref: '#/components/parameters/deviceIdPathParam' 157 | requestBody: 158 | required: true 159 | content: 160 | application/json: 161 | schema: 162 | $ref: '#/components/schemas/SilentModeState' 163 | responses: 164 | '204': 165 | description: Accepted request. 166 | '400': 167 | description: One of the defined query parameters was invalid. 168 | content: 169 | application/json: 170 | schema: 171 | $ref: '#/components/schemas/AdvancedError' 172 | '404': 173 | description: The entity could not be found. One of the defined path parameters was invalid. 174 | content: 175 | application/json: 176 | schema: 177 | $ref: '#/components/schemas/AdvancedError' 178 | '405': 179 | description: The method was not allowed. 180 | '422': 181 | description: Mapping of defined query parameter failed. 182 | content: 183 | application/json: 184 | schema: 185 | $ref: '#/components/schemas/AdvancedError' 186 | 187 | components: 188 | schemas: 189 | AdvancedError: 190 | type: object 191 | properties: 192 | '@type': 193 | type: string 194 | description: The type of the Object. 195 | example: JsonRestExceptionResponseEntity 196 | errorCode: 197 | type: string 198 | description: The error code of the occurred Exception. 199 | statusCode: 200 | type: integer 201 | description: The HTTP status of the error. 202 | ServiceDefinition: 203 | type: array 204 | minItems: 1 205 | uniqueItems: true 206 | items: 207 | type: string 208 | description: "A single fully qualified identifier of the Service of a Device." 209 | example: 210 | - ValveTappet 211 | - TemperatureLevel 212 | ValveTappetServiceStates: 213 | type: object 214 | description: ValveTappetService states of Thermostat 215 | properties: 216 | position: 217 | type: integer 218 | ValveTappetService: 219 | type: object 220 | properties: 221 | '@type': 222 | type: string 223 | enum: [DeviceServiceData] 224 | description: The type of the Object. 225 | id: 226 | type: string 227 | enum: [deviceServiceId] 228 | description: "A single fully qualified identifier of the Service of a Device." 229 | deviceId: 230 | type: string 231 | description: "A single fully qualified identifier of the Device." 232 | state: 233 | $ref: '#/components/schemas/ValveTappetServiceStates' 234 | path: 235 | type: string 236 | description: The path to the Property. 237 | TemperatureLevelServiceStates: 238 | type: object 239 | description: TemperatureLevelService states of Thermostat 240 | properties: 241 | temperature: 242 | type: number 243 | TemperatureLevelService: 244 | type: object 245 | properties: 246 | '@type': 247 | type: string 248 | enum: [DeviceServiceData] 249 | description: The type of the Object. 250 | id: 251 | type: string 252 | enum: [deviceServiceId] 253 | description: "A single fully qualified identifier of the Service of a Device." 254 | deviceId: 255 | type: string 256 | description: "A single fully qualified identifier of the Device." 257 | state: 258 | $ref: '#/components/schemas/TemperatureLevelServiceStates' 259 | path: 260 | type: string 261 | description: The path to the Property. 262 | SilentModeState: 263 | type: object 264 | properties: 265 | "@type": 266 | type: string 267 | enum: [ silentModeState ] 268 | description: The type of the state object 269 | mode: 270 | type: string 271 | enum: 272 | - MODE_NORMAL 273 | - MODE_SILENT 274 | description: The mode of the silent mode 275 | required: 276 | - "@type" 277 | - mode 278 | 279 | parameters: 280 | apiVersionHeaderParam: 281 | in: header 282 | name: api-version 283 | description: The version of the API. 284 | schema: 285 | type: string 286 | example: "1.0" 287 | deviceIdPathParam: 288 | name: deviceId 289 | in: path 290 | description: "A single fully qualified identifier of the Device." 291 | required: true 292 | schema: 293 | type: string 294 | propertyPathPathParam: 295 | name: propertyPath 296 | in: path 297 | description: The path to the Property. 298 | required: true 299 | schema: 300 | type: string 301 | -------------------------------------------------------------------------------- /openapi/Twinguard-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:Twinguard:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Twinguard 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for a Twinguard. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: Services 22 | description: Services of your Twinguard 23 | - name: States 24 | description: States of your Twinguard 25 | paths: 26 | '/devices/{deviceId}/services/AirQualityLevel': 27 | get: 28 | summary: Retrieve the AirQualityLevel service of the Twinguard. 29 | description: |- 30 | This service constantly measures key air quality values to help you create a healthy room climate. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: The AirQualityLevel was successfully retrieved. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/AirQualityLevelService' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | '/devices/{deviceId}/services/AirQualityLevel/state': 51 | get: 52 | summary: Retrieve the state of the AirQualityLevel service. 53 | description: |- 54 | Retrieve the state of the AirQualityLevel service identified by the 55 | `deviceId` path parameter. 56 | tags: 57 | - States 58 | parameters: 59 | - $ref: '#/components/parameters/apiVersionHeaderParam' 60 | - $ref: '#/components/parameters/deviceIdPathParam' 61 | responses: 62 | '200': 63 | description: The state of AirQualityLevel was successfully retrieved. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/AirQualityLevelServiceStates' 68 | '404': 69 | description: |- 70 | The entity could not be found. One of the defined query parameters was invalid. 71 | content: 72 | application/json: 73 | schema: 74 | $ref: '#/components/schemas/AdvancedError' 75 | 76 | '/devices/{deviceId}/services/SmokeDetectorCheck': 77 | get: 78 | summary: Retrieve the SmokeDetectorCheck service of the Twinguard. 79 | description: |- 80 | This service checks the smoke detector functionality. 81 | tags: 82 | - Services 83 | parameters: 84 | - $ref: '#/components/parameters/apiVersionHeaderParam' 85 | - $ref: '#/components/parameters/deviceIdPathParam' 86 | responses: 87 | '200': 88 | description: The SmokeDetectorCheck was successfully retrieved. 89 | content: 90 | application/json: 91 | schema: 92 | $ref: '#/components/schemas/SmokeDetectorCheckService' 93 | '404': 94 | description: |- 95 | The entity could not be found. One of the defined query parameters was invalid. 96 | content: 97 | application/json: 98 | schema: 99 | $ref: '#/components/schemas/AdvancedError' 100 | '/devices/{deviceId}/services/SmokeDetectorCheck/state': 101 | get: 102 | summary: Retrieve the state of the SmokeDetectorCheck service. 103 | description: |- 104 | Retrieve the state of the SmokeDetectorCheck service identified by the 105 | `deviceId` path parameter. 106 | tags: 107 | - States 108 | parameters: 109 | - $ref: '#/components/parameters/apiVersionHeaderParam' 110 | - $ref: '#/components/parameters/deviceIdPathParam' 111 | responses: 112 | '200': 113 | description: The state of SmokeDetectorCheck was successfully retrieved. 114 | content: 115 | application/json: 116 | schema: 117 | $ref: '#/components/schemas/SmokeDetectorCheckServiceStates' 118 | '404': 119 | description: |- 120 | The entity could not be found. One of the defined query parameters was invalid. 121 | content: 122 | application/json: 123 | schema: 124 | $ref: '#/components/schemas/AdvancedError' 125 | 126 | put: 127 | summary: Executes the smokeDetectorCheckState on the device. 128 | description: |- 129 | Executes the smokeDetectorCheckState on the device identified by the `deviceId` path parameter. 130 | tags: 131 | - States 132 | parameters: 133 | - $ref: '#/components/parameters/apiVersionHeaderParam' 134 | - $ref: '#/components/parameters/deviceIdPathParam' 135 | responses: 136 | '204': 137 | description: Accepted request. 138 | '400': 139 | description: One of the defined query parameters was invalid. 140 | content: 141 | application/json: 142 | schema: 143 | $ref: '#/components/schemas/AdvancedError' 144 | '404': 145 | description: The entity could not be found. One of the defined path parameters was invalid. 146 | content: 147 | application/json: 148 | schema: 149 | $ref: '#/components/schemas/AdvancedError' 150 | '405': 151 | description: The method was not allowed. 152 | '422': 153 | description: Mapping of defined query parameter failed. 154 | content: 155 | application/json: 156 | schema: 157 | $ref: '#/components/schemas/AdvancedError' 158 | requestBody: 159 | $ref: '#/components/requestBodies/SmokeDetectorCheckServiceSmokeDetectorCheckStatePayload' 160 | components: 161 | schemas: 162 | AdvancedError: 163 | type: object 164 | properties: 165 | '@type': 166 | type: string 167 | description: The type of the Object. 168 | example: JsonRestExceptionResponseEntity 169 | errorCode: 170 | type: string 171 | description: The error code of the occurred Exception. 172 | statusCode: 173 | type: integer 174 | description: The HTTP status of the error. 175 | ServiceDefinition: 176 | type: array 177 | minItems: 1 178 | uniqueItems: true 179 | items: 180 | type: string 181 | description: "A single fully qualified identifier of the Service of a Device." 182 | example: 183 | - AirQualityLevel 184 | - SmokeDetectorCheck 185 | ComfortZone: 186 | type: object 187 | description: ComfortZone of Twinguard 188 | properties: 189 | name: 190 | type: string 191 | custom: 192 | type: boolean 193 | minTemperature: 194 | type: number 195 | maxTemperature: 196 | type: number 197 | minHumidity: 198 | type: number 199 | maxHumidity: 200 | type: number 201 | maxPurity: 202 | type: number 203 | AirQualityLevelServiceStates: 204 | type: object 205 | description: AirQualityLevelService states of Twinguard 206 | properties: 207 | combinedRating: 208 | $ref: '#/components/schemas/RatingState' 209 | description: 210 | type: string 211 | temperature: 212 | type: number 213 | temperatureRating: 214 | $ref: '#/components/schemas/RatingState' 215 | humidity: 216 | type: number 217 | humidityRating: 218 | $ref: '#/components/schemas/RatingState' 219 | purity: 220 | type: number 221 | purityRating: 222 | $ref: '#/components/schemas/RatingState' 223 | comfortZone: 224 | $ref: '#/components/schemas/ComfortZone' 225 | AirQualityLevelService: 226 | type: object 227 | properties: 228 | '@type': 229 | type: string 230 | enum: [DeviceServiceData] 231 | description: The type of the Object. 232 | id: 233 | type: string 234 | enum: [AirQualityLevel] 235 | description: "A single fully qualified identifier of the Service of a Device." 236 | deviceId: 237 | type: string 238 | description: "A single fully qualified identifier of the Device." 239 | state: 240 | $ref: '#/components/schemas/AirQualityLevelServiceStates' 241 | path: 242 | type: string 243 | description: The path to the Property. 244 | SmokeDetectorCheckServiceStates: 245 | type: object 246 | description: SmokeDetectorCheckService states of Twinguard 247 | properties: 248 | '@type': 249 | type: string 250 | enum: [smokeDetectorCheckState] 251 | description: The type of the Object. 252 | value: 253 | $ref: '#/components/schemas/SmokeDetectorCheckState' 254 | SmokeDetectorCheckService: 255 | type: object 256 | properties: 257 | '@type': 258 | type: string 259 | enum: [DeviceServiceData] 260 | description: The type of the Object. 261 | id: 262 | type: string 263 | enum: [SmokeDetectorCheck] 264 | description: "A single fully qualified identifier of the Service of a Device." 265 | deviceId: 266 | type: string 267 | description: "A single fully qualified identifier of the Device." 268 | state: 269 | $ref: '#/components/schemas/SmokeDetectorCheckServiceStates' 270 | path: 271 | type: string 272 | description: The path to the Property. 273 | RatingState: 274 | type: string 275 | enum: [GOOD,MEDIUM,BAD] 276 | SmokeDetectorCheckState: 277 | type: string 278 | enum: [SMOKE_TEST_REQUESTED,NONE] 279 | 280 | requestBodies: 281 | SmokeDetectorCheckServiceSmokeDetectorCheckStatePayload: 282 | content: 283 | application/json: 284 | schema: 285 | type: object 286 | properties: 287 | '@type': 288 | type: string 289 | enum: [smokeDetectorCheckState] 290 | description: The type of the Object. 291 | value: 292 | $ref: '#/components/schemas/SmokeDetectorCheckState' 293 | parameters: 294 | apiVersionHeaderParam: 295 | in: header 296 | name: api-version 297 | description: The version of the API. 298 | schema: 299 | type: string 300 | example: "1.0" 301 | deviceIdPathParam: 302 | name: deviceId 303 | in: path 304 | description: "A single fully qualified identifier of the Device." 305 | required: true 306 | schema: 307 | type: string 308 | propertyPathPathParam: 309 | name: propertyPath 310 | in: path 311 | description: The path to the Property. 312 | required: true 313 | schema: 314 | type: string 315 | -------------------------------------------------------------------------------- /openapi/UniversalSwitch-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:UniversalSwitch:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Universal Switch 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for a Universal Switch. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: Services 22 | description: Services of your UniversalSwitch 23 | - name: States 24 | description: States of your UniversalSwitch 25 | paths: 26 | '/devices/{deviceId}/services/Keypad': 27 | get: 28 | summary: Retrieve the Keypad service of the UniversalSwitch. 29 | description: |- 30 | Control of up to four commands without the need of your smartphone. Activate or deactivate lighting and alarm settings at the touch of a button when you enter your home or enter a room. Can be used flexibly in your home and is always within reach. 31 | tags: 32 | - Services 33 | parameters: 34 | - $ref: '#/components/parameters/apiVersionHeaderParam' 35 | - $ref: '#/components/parameters/deviceIdPathParam' 36 | responses: 37 | '200': 38 | description: The Keypad was successfully retrieved. 39 | content: 40 | application/json: 41 | schema: 42 | $ref: '#/components/schemas/KeypadService' 43 | '404': 44 | description: |- 45 | The entity could not be found. One of the defined query parameters was invalid. 46 | content: 47 | application/json: 48 | schema: 49 | $ref: '#/components/schemas/AdvancedError' 50 | '/devices/{deviceId}/services/Keypad/state': 51 | get: 52 | summary: Retrieve the state of the Keypad service. 53 | description: |- 54 | Retrieve the state of the Keypad service identified by the 55 | `deviceId` path parameter. 56 | tags: 57 | - States 58 | parameters: 59 | - $ref: '#/components/parameters/apiVersionHeaderParam' 60 | - $ref: '#/components/parameters/deviceIdPathParam' 61 | responses: 62 | '200': 63 | description: The state of Keypad was successfully retrieved. 64 | content: 65 | application/json: 66 | schema: 67 | $ref: '#/components/schemas/KeypadServiceStates' 68 | '404': 69 | description: |- 70 | The entity could not be found. One of the defined query parameters was invalid. 71 | content: 72 | application/json: 73 | schema: 74 | $ref: '#/components/schemas/AdvancedError' 75 | 76 | components: 77 | schemas: 78 | AdvancedError: 79 | type: object 80 | properties: 81 | '@type': 82 | type: string 83 | description: The type of the Object. 84 | example: JsonRestExceptionResponseEntity 85 | errorCode: 86 | type: string 87 | description: The error code of the occurred Exception. 88 | statusCode: 89 | type: integer 90 | description: The HTTP status of the error. 91 | ServiceDefinition: 92 | type: array 93 | minItems: 1 94 | uniqueItems: true 95 | items: 96 | type: string 97 | description: "A single fully qualified identifier of the Service of a Device." 98 | example: 99 | - Keypad 100 | KeypadServiceStates: 101 | type: object 102 | description: KeypadService states of UniversalSwitch 103 | properties: 104 | keyCode: 105 | type: integer 106 | keyName: 107 | $ref: '#/components/schemas/KeypadKeyState' 108 | eventType: 109 | $ref: '#/components/schemas/KeypadEventState' 110 | eventTimestamp: 111 | type: integer 112 | KeypadService: 113 | type: object 114 | properties: 115 | '@type': 116 | type: string 117 | enum: [DeviceServiceData] 118 | description: The type of the Object. 119 | id: 120 | type: string 121 | enum: [deviceServiceId] 122 | description: "A single fully qualified identifier of the Service of a Device." 123 | deviceId: 124 | type: string 125 | description: "A single fully qualified identifier of the Device." 126 | state: 127 | $ref: '#/components/schemas/KeypadServiceStates' 128 | path: 129 | type: string 130 | description: The path to the Property. 131 | KeypadKeyState: 132 | type: string 133 | enum: [LOWER_BUTTON,UPPER_BUTTON] 134 | KeypadEventState: 135 | type: string 136 | enum: [PRESS_SHORT,PRESS_LONG] 137 | 138 | parameters: 139 | apiVersionHeaderParam: 140 | in: header 141 | name: api-version 142 | description: The version of the API. 143 | schema: 144 | type: string 145 | example: "1.0" 146 | deviceIdPathParam: 147 | name: deviceId 148 | in: path 149 | description: "A single fully qualified identifier of the Device." 150 | required: true 151 | schema: 152 | type: string 153 | propertyPathPathParam: 154 | name: propertyPath 155 | in: path 156 | description: The path to the Property. 157 | required: true 158 | schema: 159 | type: string 160 | -------------------------------------------------------------------------------- /openapi/WaterDetectionSystem-local-openapi-v3.yml: -------------------------------------------------------------------------------- 1 | ### Generated by Eclipse Vorto OpenAPI Generator from Model 'vorto.private.local.com.bosch.sh:SmartPlug:1.0.0' 2 | openapi: 3.0.0 3 | info: 4 | title: Bosch Smart Home Local API for Water Detection System 5 | description: |- 6 | This description focuses on the JSON-based, REST-like API for the Water Detection System. 7 | 8 | By using this documentation, the developer accepts and agrees to be bound by our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 9 | 10 | This documentation is subject to the [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode). 11 | 12 | Please report any issues you encounter with this documentation in our [GitHub tracker](https://github.com/BoschSmartHome/bosch-shc-api-docs/issues). 13 | version: "1.0" 14 | servers: 15 | - url: https://{shcIp}:8444/smarthome 16 | description: "Bosch Smart Home Controller URL" 17 | variables: 18 | shcIp: 19 | default: 192.168.0.10 20 | tags: 21 | - name: States 22 | description: States of your Water Detection Alam System 23 | - name: Actions 24 | description: Actions of your Water Detection Alarm System 25 | paths: 26 | /wateralarm: 27 | get: 28 | summary: Get the alarm system's combined state. 29 | description: Returns the combined system sate of the water detection alarm system. 30 | tags: 31 | - States 32 | parameters: [ ] 33 | responses: 34 | '200': 35 | description: OK 36 | content: 37 | application/json: 38 | schema: 39 | $ref: '#/components/schemas/WaterAlarmSystemStateData' 40 | '404': 41 | description: |- 42 | The entity could not be found. One of the defined query parameters was invalid. 43 | content: 44 | application/json: 45 | schema: 46 | $ref: '#/components/schemas/AdvancedError' 47 | /wateralarm/actions/mute: 48 | post: 49 | summary: Mutes an ongoing alarm of the water detection system. 50 | description: Sets the water detection alarm system's sate to mute. 51 | tags: 52 | - Actions 53 | parameters: [ ] 54 | responses: 55 | '202': 56 | description: Accepted 57 | '404': 58 | description: |- 59 | The entity could not be found. One of the defined query parameters was invalid. 60 | content: 61 | application/json: 62 | schema: 63 | $ref: '#/components/schemas/AdvancedError' 64 | components: 65 | schemas: 66 | AdvancedError: 67 | type: object 68 | properties: 69 | '@type': 70 | type: string 71 | description: The type of the Object. 72 | example: JsonRestExceptionResponseEntity 73 | errorCode: 74 | type: string 75 | description: The error code of the occurred Exception. 76 | statusCode: 77 | type: integer 78 | description: The HTTP status of the error. 79 | WaterAlarmIncidentData: 80 | type: object 81 | properties: 82 | deviceId: 83 | type: string 84 | readOnly: true 85 | roomName: 86 | type: string 87 | readOnly: true 88 | timestamp: 89 | type: integer 90 | format: int64 91 | readOnly: true 92 | WaterAlarmSystemStateData: 93 | type: object 94 | properties: 95 | available: 96 | type: boolean 97 | readOnly: true 98 | visualActuatorsAvailable: 99 | type: boolean 100 | readOnly: true 101 | videoActuatorsAvailable: 102 | type: boolean 103 | readOnly: true 104 | state: 105 | type: string 106 | readOnly: true 107 | enum: 108 | - WATER_ALARM 109 | - ALARM_OFF 110 | - ALARM_MUTED 111 | firstIncident: 112 | readOnly: true 113 | $ref: '#/components/schemas/WaterAlarmIncidentData' 114 | id: 115 | type: string 116 | deleted: 117 | type: boolean 118 | -------------------------------------------------------------------------------- /postman/Bosch Smart Home Controller.postman_environment.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "68e9ae92-4ad0-40e3-ab40-1d348014443c", 3 | "name": "Bosch Smart Home Controller", 4 | "values": [ 5 | { 6 | "key": "api_version", 7 | "value": "3.2", 8 | "enabled": true 9 | }, 10 | { 11 | "key": "host", 12 | "value": "192.168.0.10", 13 | "enabled": true 14 | }, 15 | { 16 | "key": "system_password_base64", 17 | "value": "bXlfcGFzc3cwcmQ=", 18 | "enabled": true 19 | }, 20 | { 21 | "key": "client_id", 22 | "value": "postman", 23 | "enabled": true 24 | }, 25 | { 26 | "key": "client_name", 27 | "value": "Postman", 28 | "enabled": true 29 | }, 30 | { 31 | "key": "shc_secure", 32 | "value": "https://{{host}}:8443/smarthome/clients", 33 | "enabled": true 34 | }, 35 | { 36 | "key": "shc_api", 37 | "value": "https://{{host}}:8444/smarthome", 38 | "enabled": true 39 | }, 40 | { 41 | "key": "shc_poll", 42 | "value": "https://{{host}}:8444/remote/json-rpc", 43 | "enabled": true 44 | }, 45 | { 46 | "key": "shc_public", 47 | "value": "https://{{host}}:8446/smarthome/public/information", 48 | "enabled": true 49 | }, 50 | { 51 | "key": "device_id", 52 | "value": "intrusionDetectionSystem", 53 | "enabled": true 54 | }, 55 | { 56 | "key": "service_id", 57 | "value": "IntrusionDetectionControl", 58 | "enabled": true 59 | }, 60 | { 61 | "key": "room_id", 62 | "value": "hz_1", 63 | "enabled": true 64 | }, 65 | { 66 | "key": "shc_poll_id", 67 | "value": "", 68 | "type": "any", 69 | "enabled": true 70 | }, 71 | { 72 | "key": "user_defined_state_id", 73 | "value": "", 74 | "enabled": true 75 | } 76 | ], 77 | "_postman_variable_scope": "environment", 78 | "_postman_exported_at": "2022-12-09T09:16:11.038Z", 79 | "_postman_exported_using": "Postman/10.1.2" 80 | } -------------------------------------------------------------------------------- /postman/README.md: -------------------------------------------------------------------------------- 1 | # How to use the Bosch Smart Home Postman Collection 2 | 3 | To get started with the Postman Collection you need the following: 4 | 5 | - Postman Collection and Environment downloaded to a local directory 6 | - The IP address of your Smart Home Controller (SHC) 7 | - A generated 2048 bit self signed certificate and the key to that certificate. 8 | 9 | **Hint:** Using OpenSSL a key pair can be generated with: `openssl req -x509 -nodes -days 9999 -newkey rsa:2048 -keyout client-key.pem -out client-cert.pem` 10 | 11 | For security reasons you should consider to encrypt the key with: `openssl rsa -aes256 -in client-key.pem -out client-encrypted-key.pem` 12 | 13 | ## Import the collection, the environment, the certificate and the key into Postman 14 | 1. Start by importing the downloaded Postman Collection and Environment via the **Import** button of Postman. 15 | 16 | 2. In the next step, you need to import the generated certificate (e.g. `client-cert.pem`) and the key (e.g. `client-key.pem` or `client-encrypted-key.pem`) into Postman. Therefore, open the **Settings** in Postman: 17 | 18 | ![Postman Settings](images/postman_settings.png "Postman Settings") 19 | 20 | 3. On the **General** tab, disable **SSL certificate verification**: 21 | 22 | ![Postman Disable SSL Verification](images/postman_disable_ssl_verification.png "Postman Disable SSL Verification") 23 | 24 | 4. On the **Certificates** tab, click on **Add Certificate**: 25 | 26 | ![Postman Add Certificate](images/postman_add_certificate.png "Postman Add Certificate") 27 | 28 | 5. Enter the **IP address** of your SHC and the port **8443**. After that, provide the requested files for the **certificate** and the **key**. If you use a **passphrase**, you should provide this information as well: 29 | 30 | ![Postman Add PEMs](images/postman_add_pems.png "Postman Add PEMs") 31 | 32 | 6. Click **Add** to add the certificate to your Postman Settings. 33 | 34 | 7. Do the same for port **8444**. 35 | 36 | Now, you have all the prerequisites to communicate with your SHC via Postman. Start by checking the connection. 37 | 38 | ## Check the connection with the Bosch Smart Home Controller in your local network 39 | 1. On the left pane of Postman, select **Collections** 40 | 41 | 2. Double-click **Public Information** 42 | 43 | ![Postman Collections](images/postman_collections.png "Postman Collections") 44 | 45 | 3. In the upper right area of Postman, select the **Bosch Smart Home** environment 46 | 47 | 4. Click the icon with the eye 48 | 49 | 5. Edit the **Current Value** for **host**, enter the IP of your Bosch Smart Home Controller and close the environment window 50 | 51 | ![Postman Environment Host](images/postman_environment_host.png "Postman Environment Host") 52 | 53 | 6. Click the **Send** button 54 | 55 | 7. Your setup is correct when you receive a **200 OK** and some information about your Bosch Smart Home Controller 56 | 57 | ![Postman Check SHC Connection](images/postman_check_shc_connection.png "Postman Check SHC Connection") 58 | 59 | ## Register a New Client to the Bosch Smart Home Controller 60 | A client is a piece of software that has the permission to communicate with the Bosch Smart Home Controller. For example, the Bosch Smart Home App becomes a client of the Bosch Smart Home Controller upon successfully registration. All registered clients can be listed in the Bosch Smart Home App. To locate this in your app, go to `Management -> Mobile devices`. The communication between a client and the Bosch Smart Home Controller is always encrypted with TLSv1.2. 61 | ![Schematic view](images/shc-client-schematic-view.png "Schematic view") 62 | **Hint:** Before submitting the **New Client** request, always **press the Bosch Smart Home Controller's front-side button, until the LEDs begin flashing**. 63 | 64 | To register a **New Client** to the Bosch Smart Home Controller, you need the following: 65 | 66 | - A designated name of your open source software project 67 | - The 2048 bit self-signed certificate from the previous step 68 | - The system password of your Bosch Smart Home Controller, which you created upon initial setup 69 | 70 | **Hint:** Your Bosch Smart Home Controller must already be initialized and paired with a Bosch Smart Home App! 71 | 72 | ### Naming convention for the Client ID and Client Name 73 | Using the API requires identification against the Bosch Smart Home Controller with an individual Client ID and Client Name that starts with `oss_` followed by the name of the open source project, or the name of the developer. 74 | 75 | **Hint:** Please note that this naming convention is part of our [Terms and Conditions](https://github.com/BoschSmartHome/bosch-shc-api-docs#terms-and-conditions). 76 | 77 | The **Client ID** and **Client Name** is already set in the Postman Environment. 78 | 79 | ### Customize the certificate 80 | To modify the certificate so that it fits into a JSON object, you have to manually remove all carriage returns, and additionally add `\r` before and after the certificate. Take the following example to illustrate this: 81 | 82 | `"-----BEGIN CERTIFICATE-----\r` followed by the **2048 bit self signed certificate** and `\r-----END CERTIFICATE-----"` 83 | 84 | Provide the **2048 bit self signed certificate** in the **body** of the **New Client** call. 85 | 86 | If the certificate, or one of the defined query parameters was invalid, the Bosch Smart Home Controller will respond with `400 bad request`. 87 | 88 | ![Postman New Client](images/postman_new_client.png "Postman New Client") 89 | 90 | ### Encode your password to base64 91 | 92 | In order for the request to be accepted, you have to encode your Bosch Smart Home Controller password into base64. If you need a hint how to do this, there are many base64 encoders online. Just pick one and encode your password there. For instance, the base64 encoded password for `my_passw0rd` is `bXlfcGFzc3cwcmQ=`. 93 | 94 | Enter the information of the **base64 encoded password** in the **Bosch Smart Home** environment. 95 | 96 | If the password is wrong, the Bosch Smart Home Controller will respond with `401 unauthorized`. 97 | 98 | ![Postman Environment Pass](images/postman_environment_pass.png "Postman Environment Pass") 99 | 100 | ### Add the client 101 | 1. Press the front-side button of the Bosch Smart Home Controller (short for Controller II, long until the LEDs begin flashing for the old SHC). 102 | 2. Click the "Send" button. 103 | 104 | After a couple of seconds the LEDs should stop flashing. Your client is now added. 105 | 106 | ### Delete a client 107 | 108 | Please, start your Bosch Smart Home App. 109 | 1. Navigate to `Management -> Mobile devices` 110 | 1. Select the client you want to delete 111 | 1. Delete the client with the button at the bottom of the page 112 | 113 | ## Get events from the Bosch Smart Home Controller (Long Polling) 114 | 115 | After registering a client to the Bosch Smart Home Controller, the requests in the Postman Collection for Long Polling should work without explicitly configuring them. 116 | 117 | - Long Polling **Subscribe** returns a polling id. This id is needed to **Poll** and to **Unsubscribe**. In the **Test** tab, there is a function to store the polling id to the environment variable: `shc_poll_id` 118 | 119 | - Long Polling **Poll** opens a connection and waits for a period of time to receive status updates from edge devices. The connection will be closed if an edge device sends a status update, or if no status updates are received during a period of time. To keep polling, you need to reopen the connection with the same polling id (`shc_poll_id`) again. 120 | 121 | - Long Polling **Unsubscribe** removes the subscription with `shc_poll_id`. 122 | 123 | **Hint:** If you are using **Long Poll**, it is normal that Postman waits for a certain amount of time. The connection stays open either until the polling time has expired, or a device has updated its status. 124 | -------------------------------------------------------------------------------- /postman/images/postman_add_certificate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/postman/images/postman_add_certificate.png -------------------------------------------------------------------------------- /postman/images/postman_add_pems.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/postman/images/postman_add_pems.png -------------------------------------------------------------------------------- /postman/images/postman_check_shc_connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/postman/images/postman_check_shc_connection.png -------------------------------------------------------------------------------- /postman/images/postman_collections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/postman/images/postman_collections.png -------------------------------------------------------------------------------- /postman/images/postman_disable_ssl_verification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/postman/images/postman_disable_ssl_verification.png -------------------------------------------------------------------------------- /postman/images/postman_environment_host.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/postman/images/postman_environment_host.png -------------------------------------------------------------------------------- /postman/images/postman_environment_pass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/postman/images/postman_environment_pass.png -------------------------------------------------------------------------------- /postman/images/postman_new_client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/postman/images/postman_new_client.png -------------------------------------------------------------------------------- /postman/images/postman_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/postman/images/postman_settings.png -------------------------------------------------------------------------------- /postman/images/shc-client-schematic-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoschSmartHome/bosch-shc-api-docs/4f6ecf0fadd3d3e855d81f7f413891c9fd07a3bd/postman/images/shc-client-schematic-view.png --------------------------------------------------------------------------------