pingera-sdk 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. pingera_sdk-1.0.0/LICENSE +21 -0
  2. pingera_sdk-1.0.0/PKG-INFO +284 -0
  3. pingera_sdk-1.0.0/README.md +227 -0
  4. pingera_sdk-1.0.0/client/pingera_generated/__init__.py +152 -0
  5. pingera_sdk-1.0.0/client/pingera_generated/api/__init__.py +11 -0
  6. pingera_sdk-1.0.0/client/pingera_generated/api/alerts_api.py +4511 -0
  7. pingera_sdk-1.0.0/client/pingera_generated/api/checks_api.py +2937 -0
  8. pingera_sdk-1.0.0/client/pingera_generated/api/checks_unified_results_api.py +1196 -0
  9. pingera_sdk-1.0.0/client/pingera_generated/api/heartbeats_api.py +3444 -0
  10. pingera_sdk-1.0.0/client/pingera_generated/api/on_demand_checks_api.py +1188 -0
  11. pingera_sdk-1.0.0/client/pingera_generated/api/status_pages_components_api.py +4498 -0
  12. pingera_sdk-1.0.0/client/pingera_generated/api/status_pages_incidents_api.py +5163 -0
  13. pingera_sdk-1.0.0/client/pingera_generated/api_client.py +802 -0
  14. pingera_sdk-1.0.0/client/pingera_generated/api_response.py +21 -0
  15. pingera_sdk-1.0.0/client/pingera_generated/configuration.py +612 -0
  16. pingera_sdk-1.0.0/client/pingera_generated/exceptions.py +217 -0
  17. pingera_sdk-1.0.0/client/pingera_generated/models/__init__.py +63 -0
  18. pingera_sdk-1.0.0/client/pingera_generated/models/alert.py +219 -0
  19. pingera_sdk-1.0.0/client/pingera_generated/models/alert_channel.py +124 -0
  20. pingera_sdk-1.0.0/client/pingera_generated/models/alert_channel1.py +127 -0
  21. pingera_sdk-1.0.0/client/pingera_generated/models/alert_list.py +102 -0
  22. pingera_sdk-1.0.0/client/pingera_generated/models/alert_notification.py +176 -0
  23. pingera_sdk-1.0.0/client/pingera_generated/models/alert_rule.py +156 -0
  24. pingera_sdk-1.0.0/client/pingera_generated/models/alert_rule1.py +159 -0
  25. pingera_sdk-1.0.0/client/pingera_generated/models/alert_stats.py +106 -0
  26. pingera_sdk-1.0.0/client/pingera_generated/models/check_job.py +147 -0
  27. pingera_sdk-1.0.0/client/pingera_generated/models/check_server.py +98 -0
  28. pingera_sdk-1.0.0/client/pingera_generated/models/component.py +147 -0
  29. pingera_sdk-1.0.0/client/pingera_generated/models/component1.py +147 -0
  30. pingera_sdk-1.0.0/client/pingera_generated/models/component_uptime_bulk_request.py +89 -0
  31. pingera_sdk-1.0.0/client/pingera_generated/models/error.py +94 -0
  32. pingera_sdk-1.0.0/client/pingera_generated/models/execute_custom_check_request.py +108 -0
  33. pingera_sdk-1.0.0/client/pingera_generated/models/execute_existing_check_response.py +99 -0
  34. pingera_sdk-1.0.0/client/pingera_generated/models/heartbeat_check.py +134 -0
  35. pingera_sdk-1.0.0/client/pingera_generated/models/heartbeat_check1.py +134 -0
  36. pingera_sdk-1.0.0/client/pingera_generated/models/heartbeat_check_channel_assignment.py +89 -0
  37. pingera_sdk-1.0.0/client/pingera_generated/models/heartbeat_check_detail.py +146 -0
  38. pingera_sdk-1.0.0/client/pingera_generated/models/heartbeat_check_list.py +102 -0
  39. pingera_sdk-1.0.0/client/pingera_generated/models/heartbeat_ping.py +111 -0
  40. pingera_sdk-1.0.0/client/pingera_generated/models/heartbeat_ping_history.py +102 -0
  41. pingera_sdk-1.0.0/client/pingera_generated/models/heartbeat_ping_response.py +103 -0
  42. pingera_sdk-1.0.0/client/pingera_generated/models/incident.py +209 -0
  43. pingera_sdk-1.0.0/client/pingera_generated/models/incident_create.py +116 -0
  44. pingera_sdk-1.0.0/client/pingera_generated/models/incident_postmortem.py +117 -0
  45. pingera_sdk-1.0.0/client/pingera_generated/models/incident_update.py +128 -0
  46. pingera_sdk-1.0.0/client/pingera_generated/models/incident_update_create.py +99 -0
  47. pingera_sdk-1.0.0/client/pingera_generated/models/incident_update_edit.py +91 -0
  48. pingera_sdk-1.0.0/client/pingera_generated/models/incident_update_schema_edit.py +119 -0
  49. pingera_sdk-1.0.0/client/pingera_generated/models/job_list_response.py +98 -0
  50. pingera_sdk-1.0.0/client/pingera_generated/models/log_past_incident.py +110 -0
  51. pingera_sdk-1.0.0/client/pingera_generated/models/monitor_check.py +143 -0
  52. pingera_sdk-1.0.0/client/pingera_generated/models/monitor_check1.py +146 -0
  53. pingera_sdk-1.0.0/client/pingera_generated/models/monitor_check_list.py +98 -0
  54. pingera_sdk-1.0.0/client/pingera_generated/models/monitor_check_result.py +125 -0
  55. pingera_sdk-1.0.0/client/pingera_generated/models/monitor_check_result_list.py +98 -0
  56. pingera_sdk-1.0.0/client/pingera_generated/models/monitor_check_status_history.py +108 -0
  57. pingera_sdk-1.0.0/client/pingera_generated/models/monitor_check_status_history_list.py +98 -0
  58. pingera_sdk-1.0.0/client/pingera_generated/models/pagination_metadata.py +100 -0
  59. pingera_sdk-1.0.0/client/pingera_generated/models/past_incident_update.py +102 -0
  60. pingera_sdk-1.0.0/client/pingera_generated/models/region.py +92 -0
  61. pingera_sdk-1.0.0/client/pingera_generated/models/regions_list.py +98 -0
  62. pingera_sdk-1.0.0/client/pingera_generated/models/unified_result.py +146 -0
  63. pingera_sdk-1.0.0/client/pingera_generated/models/unified_result_list.py +98 -0
  64. pingera_sdk-1.0.0/client/pingera_generated/py.typed +0 -0
  65. pingera_sdk-1.0.0/client/pingera_generated/rest.py +259 -0
  66. pingera_sdk-1.0.0/client/pingera_sdk.egg-info/PKG-INFO +284 -0
  67. pingera_sdk-1.0.0/client/pingera_sdk.egg-info/SOURCES.txt +125 -0
  68. pingera_sdk-1.0.0/client/pingera_sdk.egg-info/dependency_links.txt +1 -0
  69. pingera_sdk-1.0.0/client/pingera_sdk.egg-info/requires.txt +23 -0
  70. pingera_sdk-1.0.0/client/pingera_sdk.egg-info/top_level.txt +2 -0
  71. pingera_sdk-1.0.0/client/test/__init__.py +0 -0
  72. pingera_sdk-1.0.0/client/test/test_alert.py +69 -0
  73. pingera_sdk-1.0.0/client/test/test_alert_channel.py +62 -0
  74. pingera_sdk-1.0.0/client/test/test_alert_channel1.py +59 -0
  75. pingera_sdk-1.0.0/client/test/test_alert_list.py +73 -0
  76. pingera_sdk-1.0.0/client/test/test_alert_notification.py +62 -0
  77. pingera_sdk-1.0.0/client/test/test_alert_rule.py +79 -0
  78. pingera_sdk-1.0.0/client/test/test_alert_rule1.py +75 -0
  79. pingera_sdk-1.0.0/client/test/test_alert_stats.py +56 -0
  80. pingera_sdk-1.0.0/client/test/test_alerts_api.py +144 -0
  81. pingera_sdk-1.0.0/client/test/test_check_job.py +61 -0
  82. pingera_sdk-1.0.0/client/test/test_check_server.py +56 -0
  83. pingera_sdk-1.0.0/client/test/test_checks_api.py +102 -0
  84. pingera_sdk-1.0.0/client/test/test_checks_unified_results_api.py +53 -0
  85. pingera_sdk-1.0.0/client/test/test_component.py +65 -0
  86. pingera_sdk-1.0.0/client/test/test_component1.py +64 -0
  87. pingera_sdk-1.0.0/client/test/test_component_uptime_bulk_request.py +53 -0
  88. pingera_sdk-1.0.0/client/test/test_error.py +57 -0
  89. pingera_sdk-1.0.0/client/test/test_execute_custom_check_request.py +60 -0
  90. pingera_sdk-1.0.0/client/test/test_execute_existing_check_response.py +57 -0
  91. pingera_sdk-1.0.0/client/test/test_heartbeat_check.py +64 -0
  92. pingera_sdk-1.0.0/client/test/test_heartbeat_check1.py +62 -0
  93. pingera_sdk-1.0.0/client/test/test_heartbeat_check_channel_assignment.py +53 -0
  94. pingera_sdk-1.0.0/client/test/test_heartbeat_check_detail.py +73 -0
  95. pingera_sdk-1.0.0/client/test/test_heartbeat_check_list.py +66 -0
  96. pingera_sdk-1.0.0/client/test/test_heartbeat_ping.py +57 -0
  97. pingera_sdk-1.0.0/client/test/test_heartbeat_ping_history.py +61 -0
  98. pingera_sdk-1.0.0/client/test/test_heartbeat_ping_response.py +55 -0
  99. pingera_sdk-1.0.0/client/test/test_heartbeats_api.py +116 -0
  100. pingera_sdk-1.0.0/client/test/test_incident.py +82 -0
  101. pingera_sdk-1.0.0/client/test/test_incident_create.py +59 -0
  102. pingera_sdk-1.0.0/client/test/test_incident_postmortem.py +64 -0
  103. pingera_sdk-1.0.0/client/test/test_incident_update.py +59 -0
  104. pingera_sdk-1.0.0/client/test/test_incident_update_create.py +56 -0
  105. pingera_sdk-1.0.0/client/test/test_incident_update_edit.py +53 -0
  106. pingera_sdk-1.0.0/client/test/test_incident_update_schema_edit.py +57 -0
  107. pingera_sdk-1.0.0/client/test/test_job_list_response.py +65 -0
  108. pingera_sdk-1.0.0/client/test/test_log_past_incident.py +70 -0
  109. pingera_sdk-1.0.0/client/test/test_monitor_check.py +67 -0
  110. pingera_sdk-1.0.0/client/test/test_monitor_check1.py +65 -0
  111. pingera_sdk-1.0.0/client/test/test_monitor_check_list.py +69 -0
  112. pingera_sdk-1.0.0/client/test/test_monitor_check_result.py +66 -0
  113. pingera_sdk-1.0.0/client/test/test_monitor_check_result_list.py +64 -0
  114. pingera_sdk-1.0.0/client/test/test_monitor_check_status_history.py +54 -0
  115. pingera_sdk-1.0.0/client/test/test_monitor_check_status_history_list.py +58 -0
  116. pingera_sdk-1.0.0/client/test/test_on_demand_checks_api.py +60 -0
  117. pingera_sdk-1.0.0/client/test/test_pagination_metadata.py +58 -0
  118. pingera_sdk-1.0.0/client/test/test_past_incident_update.py +58 -0
  119. pingera_sdk-1.0.0/client/test/test_region.py +54 -0
  120. pingera_sdk-1.0.0/client/test/test_regions_list.py +58 -0
  121. pingera_sdk-1.0.0/client/test/test_status_pages_components_api.py +137 -0
  122. pingera_sdk-1.0.0/client/test/test_status_pages_incidents_api.py +155 -0
  123. pingera_sdk-1.0.0/client/test/test_unified_result.py +71 -0
  124. pingera_sdk-1.0.0/client/test/test_unified_result_list.py +72 -0
  125. pingera_sdk-1.0.0/pyproject.toml +143 -0
  126. pingera_sdk-1.0.0/setup.cfg +4 -0
  127. pingera_sdk-1.0.0/setup.py +64 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Pingera Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,284 @@
1
+ Metadata-Version: 2.4
2
+ Name: pingera-sdk
3
+ Version: 1.0.0
4
+ Summary: Python SDK for the Pingera monitoring platform API
5
+ Home-page: https://github.com/pingera/pingera-sdk
6
+ Author: Pingera Team
7
+ Author-email: Pingera Team <privet@pingera.ru>
8
+ License: MIT
9
+ Project-URL: Homepage, https://pingera.ru
10
+ Project-URL: Documentation, https://docs.pingera.ru/api/overview
11
+ Project-URL: Repository, https://github.com/pingera/pingera-sdk
12
+ Project-URL: Bug Tracker, https://github.com/pingera/pingera-sdk/issues
13
+ Project-URL: API Documentation, https://api.pingera.ru
14
+ Keywords: pingera,monitoring,api,sdk,status-page,incidents,components
15
+ Classifier: Development Status :: 5 - Production/Stable
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Programming Language :: Python :: 3.10
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
26
+ Classifier: Topic :: System :: Monitoring
27
+ Classifier: Topic :: System :: Networking :: Monitoring
28
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
+ Requires-Python: >=3.9
30
+ Description-Content-Type: text/markdown
31
+ License-File: LICENSE
32
+ Requires-Dist: httpx>=0.24.0
33
+ Requires-Dist: pydantic>=2.0.0
34
+ Requires-Dist: pytest-cov>=4.0.0
35
+ Requires-Dist: pytest>=7.0.0
36
+ Requires-Dist: typing-extensions>=4.0.0
37
+ Requires-Dist: pytest-asyncio>=0.21.0
38
+ Requires-Dist: setuptools>=75.3.2
39
+ Requires-Dist: python-dateutil>=2.9.0.post0
40
+ Requires-Dist: urllib3>=2.2.3
41
+ Provides-Extra: dev
42
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
43
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
44
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
45
+ Requires-Dist: black>=23.0.0; extra == "dev"
46
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
47
+ Requires-Dist: pre-commit>=3.0.0; extra == "dev"
48
+ Requires-Dist: twine>=4.0.0; extra == "dev"
49
+ Provides-Extra: test
50
+ Requires-Dist: pytest>=7.0.0; extra == "test"
51
+ Requires-Dist: pytest-cov>=4.0.0; extra == "test"
52
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
53
+ Dynamic: author
54
+ Dynamic: home-page
55
+ Dynamic: license-file
56
+ Dynamic: requires-python
57
+
58
+
59
+ # Pingera SDK
60
+
61
+ A comprehensive Python SDK for the [Pingera monitoring platform API](https://api.pingera.ru), built using OpenAPI Generator for full type safety and complete API coverage.
62
+
63
+ ## Features
64
+
65
+ - **Complete API Coverage**: Auto-generated from the official OpenAPI specification
66
+ - **Type Safety**: Full type hints and Pydantic model validation
67
+ - **Easy Authentication**: Support for Bearer tokens and API keys
68
+ - **Comprehensive**: All Pingera API endpoints supported:
69
+ - Status Pages (Components & Incidents)
70
+ - Monitoring Checks
71
+ - Heartbeats
72
+ - Alerts
73
+ - On-demand Checks
74
+ - Unified Results
75
+
76
+ ## Installation
77
+
78
+ ```bash
79
+ pip install pingera-sdk
80
+ ```
81
+
82
+ Or install from source:
83
+
84
+ ```bash
85
+ git clone https://github.com/pingera/pingera-sdk.git
86
+ cd pingera-sdk
87
+ pip install -e .
88
+ ```
89
+
90
+ ## Quick Start
91
+
92
+ ### Authentication
93
+
94
+ Set your API token via environment variable:
95
+
96
+ ```bash
97
+ export PINGERA_API_KEY="your_api_token"
98
+ ```
99
+
100
+ ### Basic Usage
101
+
102
+ ```python
103
+ from pingera_generated import ApiClient, Configuration
104
+ from pingera_generated.api import ChecksApi, StatusPagesComponentsApi
105
+
106
+ # Configure the client
107
+ configuration = Configuration()
108
+ configuration.host = "https://api.pingera.ru"
109
+ configuration.api_key['apiKeyAuth'] = "your_api_token"
110
+
111
+ # Create API client
112
+ with ApiClient(configuration) as api_client:
113
+ # Initialize API instances
114
+ checks_api = ChecksApi(api_client)
115
+ components_api = StatusPagesComponentsApi(api_client)
116
+
117
+ # List monitoring checks
118
+ checks = checks_api.v1_checks_get(page=1, page_size=10)
119
+ print(f"Found {len(checks.checks)} checks")
120
+
121
+ # List components for a status page
122
+ components = components_api.v1_pages_page_id_components_get("your_page_id")
123
+ print(f"Found {len(components.data)} components")
124
+ ```
125
+
126
+ ### Available APIs
127
+
128
+ The SDK provides access to all Pingera API endpoints through these API classes:
129
+
130
+ ```python
131
+ from pingera_generated.api import (
132
+ StatusPagesComponentsApi, # Manage status page components
133
+ StatusPagesIncidentsApi, # Manage incidents and maintenance
134
+ ChecksApi, # Manage monitoring checks
135
+ AlertsApi, # Manage alerts and notifications
136
+ HeartbeatsApi, # Manage heartbeat monitoring
137
+ OnDemandChecksApi, # Execute checks on-demand
138
+ ChecksUnifiedResultsApi # Get unified check results
139
+ )
140
+ ```
141
+
142
+ ### Working with Models
143
+
144
+ All API requests and responses use typed Pydantic models:
145
+
146
+ ```python
147
+ from pingera_generated.models import (
148
+ Component,
149
+ IncidentCreate,
150
+ IncidentUpdateCreate,
151
+ ExecuteCustomCheckRequest
152
+ )
153
+
154
+ # Create a new component
155
+ new_component = Component(
156
+ name="API Server",
157
+ description="Main API endpoint",
158
+ status="operational"
159
+ )
160
+
161
+ # Create an incident
162
+ new_incident = IncidentCreate(
163
+ name="Database Connectivity Issues",
164
+ body="We are investigating connectivity issues",
165
+ status="investigating",
166
+ impact="major"
167
+ )
168
+ ```
169
+
170
+ ## Examples
171
+
172
+ Check the `examples/` directory for comprehensive usage examples:
173
+
174
+ - [`basic_usage.py`](examples/basic_usage.py) - Basic client setup and operations
175
+ - [`component_management.py`](examples/component_management.py) - Component CRUD operations
176
+ - [`incident_management.py`](examples/incident_management.py) - Incident and maintenance management
177
+ - [`generated_client_usage.py`](examples/generated_client_usage.py) - Comprehensive API demonstration
178
+ - [`on_demand_synthetic_check.py`](examples/on_demand_synthetic_check.py) - Execute synthetic check with playwright script and get the result
179
+
180
+ ## Configuration
181
+
182
+ ### Environment Variables
183
+
184
+ | Variable | Description |
185
+ |----------|-------------|
186
+ | `PINGERA_API_KEY` | Your Pingera API token |
187
+ | `PINGERA_PAGE_ID` | Default page ID for status page operations |
188
+
189
+ ### Manual Configuration
190
+
191
+ ```python
192
+ from pingera_generated import Configuration
193
+
194
+ configuration = Configuration()
195
+ configuration.host = "https://api.pingera.ru"
196
+
197
+ # API token authentication
198
+ configuration.api_key['apiKeyAuth'] = "your_api_token"
199
+
200
+ # Optional: configure timeouts, retries, etc.
201
+ configuration.timeout = 30
202
+ ```
203
+
204
+ ## Error Handling
205
+
206
+ The SDK uses proper exception handling:
207
+
208
+ ```python
209
+ from pingera_generated.exceptions import ApiException
210
+
211
+ try:
212
+ checks = checks_api.v1_checks_get()
213
+ except ApiException as e:
214
+ print(f"API Error [{e.status}]: {e.reason}")
215
+ if e.body:
216
+ print(f"Details: {e.body}")
217
+ ```
218
+
219
+ ## Development
220
+
221
+ ### Regenerating the Client
222
+
223
+ If the Pingera API specification changes, you can regenerate the client:
224
+
225
+ ```bash
226
+ # Install the OpenAPI generator
227
+ pip install openapi-generator-cli[jdk4py]
228
+
229
+ # Regenerate the client
230
+ python generate_client.py
231
+ ```
232
+
233
+ ### Running Tests
234
+
235
+ ```bash
236
+ pip install -e ".[dev]"
237
+ pytest
238
+ ```
239
+
240
+ ### Running Examples
241
+
242
+ ```bash
243
+ # Set your credentials
244
+ export PINGERA_API_KEY="your_api_token"
245
+ export PINGERA_PAGE_ID="your_page_id"
246
+
247
+ # Run examples
248
+ python examples/basic_usage.py
249
+ python examples/component_management.py
250
+ python examples/incident_management.py
251
+ ```
252
+
253
+ ## API Documentation
254
+
255
+ For detailed API documentation, visit:
256
+ - [Official Pingera API Docs](https://docs.pingera.ru/api/overview)
257
+ - [Generated Client Docs](client/README.md)
258
+
259
+ ## Contributing
260
+
261
+ 1. Fork the repository
262
+ 2. Create a feature branch
263
+ 3. Make your changes
264
+ 4. Add tests if applicable
265
+ 5. Run the test suite
266
+ 6. Submit a pull request
267
+
268
+ ## License
269
+
270
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
271
+
272
+ ## Support
273
+
274
+ - 📧 Email: [privet@pingera.ru](mailto:privet@pingera.ru)
275
+ - 📖 Documentation: [docs.pingera.ru](https://docs.pingera.ru)
276
+ - 🌐 Website: [pingera.ru](https://pingera.ru)
277
+ - 📊 Status: [status.pingera.ru](https://status.pingera.ru)
278
+
279
+ ## Links
280
+
281
+ - [Pingera Platform](https://app.pingera.ru)
282
+ - [API Documentation](https://docs.pingera.ru/api/overview)
283
+ - [Status Page](https://status.pingera.ru)
284
+ - [Website](https://pingera.ru)
@@ -0,0 +1,227 @@
1
+
2
+ # Pingera SDK
3
+
4
+ A comprehensive Python SDK for the [Pingera monitoring platform API](https://api.pingera.ru), built using OpenAPI Generator for full type safety and complete API coverage.
5
+
6
+ ## Features
7
+
8
+ - **Complete API Coverage**: Auto-generated from the official OpenAPI specification
9
+ - **Type Safety**: Full type hints and Pydantic model validation
10
+ - **Easy Authentication**: Support for Bearer tokens and API keys
11
+ - **Comprehensive**: All Pingera API endpoints supported:
12
+ - Status Pages (Components & Incidents)
13
+ - Monitoring Checks
14
+ - Heartbeats
15
+ - Alerts
16
+ - On-demand Checks
17
+ - Unified Results
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ pip install pingera-sdk
23
+ ```
24
+
25
+ Or install from source:
26
+
27
+ ```bash
28
+ git clone https://github.com/pingera/pingera-sdk.git
29
+ cd pingera-sdk
30
+ pip install -e .
31
+ ```
32
+
33
+ ## Quick Start
34
+
35
+ ### Authentication
36
+
37
+ Set your API token via environment variable:
38
+
39
+ ```bash
40
+ export PINGERA_API_KEY="your_api_token"
41
+ ```
42
+
43
+ ### Basic Usage
44
+
45
+ ```python
46
+ from pingera_generated import ApiClient, Configuration
47
+ from pingera_generated.api import ChecksApi, StatusPagesComponentsApi
48
+
49
+ # Configure the client
50
+ configuration = Configuration()
51
+ configuration.host = "https://api.pingera.ru"
52
+ configuration.api_key['apiKeyAuth'] = "your_api_token"
53
+
54
+ # Create API client
55
+ with ApiClient(configuration) as api_client:
56
+ # Initialize API instances
57
+ checks_api = ChecksApi(api_client)
58
+ components_api = StatusPagesComponentsApi(api_client)
59
+
60
+ # List monitoring checks
61
+ checks = checks_api.v1_checks_get(page=1, page_size=10)
62
+ print(f"Found {len(checks.checks)} checks")
63
+
64
+ # List components for a status page
65
+ components = components_api.v1_pages_page_id_components_get("your_page_id")
66
+ print(f"Found {len(components.data)} components")
67
+ ```
68
+
69
+ ### Available APIs
70
+
71
+ The SDK provides access to all Pingera API endpoints through these API classes:
72
+
73
+ ```python
74
+ from pingera_generated.api import (
75
+ StatusPagesComponentsApi, # Manage status page components
76
+ StatusPagesIncidentsApi, # Manage incidents and maintenance
77
+ ChecksApi, # Manage monitoring checks
78
+ AlertsApi, # Manage alerts and notifications
79
+ HeartbeatsApi, # Manage heartbeat monitoring
80
+ OnDemandChecksApi, # Execute checks on-demand
81
+ ChecksUnifiedResultsApi # Get unified check results
82
+ )
83
+ ```
84
+
85
+ ### Working with Models
86
+
87
+ All API requests and responses use typed Pydantic models:
88
+
89
+ ```python
90
+ from pingera_generated.models import (
91
+ Component,
92
+ IncidentCreate,
93
+ IncidentUpdateCreate,
94
+ ExecuteCustomCheckRequest
95
+ )
96
+
97
+ # Create a new component
98
+ new_component = Component(
99
+ name="API Server",
100
+ description="Main API endpoint",
101
+ status="operational"
102
+ )
103
+
104
+ # Create an incident
105
+ new_incident = IncidentCreate(
106
+ name="Database Connectivity Issues",
107
+ body="We are investigating connectivity issues",
108
+ status="investigating",
109
+ impact="major"
110
+ )
111
+ ```
112
+
113
+ ## Examples
114
+
115
+ Check the `examples/` directory for comprehensive usage examples:
116
+
117
+ - [`basic_usage.py`](examples/basic_usage.py) - Basic client setup and operations
118
+ - [`component_management.py`](examples/component_management.py) - Component CRUD operations
119
+ - [`incident_management.py`](examples/incident_management.py) - Incident and maintenance management
120
+ - [`generated_client_usage.py`](examples/generated_client_usage.py) - Comprehensive API demonstration
121
+ - [`on_demand_synthetic_check.py`](examples/on_demand_synthetic_check.py) - Execute synthetic check with playwright script and get the result
122
+
123
+ ## Configuration
124
+
125
+ ### Environment Variables
126
+
127
+ | Variable | Description |
128
+ |----------|-------------|
129
+ | `PINGERA_API_KEY` | Your Pingera API token |
130
+ | `PINGERA_PAGE_ID` | Default page ID for status page operations |
131
+
132
+ ### Manual Configuration
133
+
134
+ ```python
135
+ from pingera_generated import Configuration
136
+
137
+ configuration = Configuration()
138
+ configuration.host = "https://api.pingera.ru"
139
+
140
+ # API token authentication
141
+ configuration.api_key['apiKeyAuth'] = "your_api_token"
142
+
143
+ # Optional: configure timeouts, retries, etc.
144
+ configuration.timeout = 30
145
+ ```
146
+
147
+ ## Error Handling
148
+
149
+ The SDK uses proper exception handling:
150
+
151
+ ```python
152
+ from pingera_generated.exceptions import ApiException
153
+
154
+ try:
155
+ checks = checks_api.v1_checks_get()
156
+ except ApiException as e:
157
+ print(f"API Error [{e.status}]: {e.reason}")
158
+ if e.body:
159
+ print(f"Details: {e.body}")
160
+ ```
161
+
162
+ ## Development
163
+
164
+ ### Regenerating the Client
165
+
166
+ If the Pingera API specification changes, you can regenerate the client:
167
+
168
+ ```bash
169
+ # Install the OpenAPI generator
170
+ pip install openapi-generator-cli[jdk4py]
171
+
172
+ # Regenerate the client
173
+ python generate_client.py
174
+ ```
175
+
176
+ ### Running Tests
177
+
178
+ ```bash
179
+ pip install -e ".[dev]"
180
+ pytest
181
+ ```
182
+
183
+ ### Running Examples
184
+
185
+ ```bash
186
+ # Set your credentials
187
+ export PINGERA_API_KEY="your_api_token"
188
+ export PINGERA_PAGE_ID="your_page_id"
189
+
190
+ # Run examples
191
+ python examples/basic_usage.py
192
+ python examples/component_management.py
193
+ python examples/incident_management.py
194
+ ```
195
+
196
+ ## API Documentation
197
+
198
+ For detailed API documentation, visit:
199
+ - [Official Pingera API Docs](https://docs.pingera.ru/api/overview)
200
+ - [Generated Client Docs](client/README.md)
201
+
202
+ ## Contributing
203
+
204
+ 1. Fork the repository
205
+ 2. Create a feature branch
206
+ 3. Make your changes
207
+ 4. Add tests if applicable
208
+ 5. Run the test suite
209
+ 6. Submit a pull request
210
+
211
+ ## License
212
+
213
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
214
+
215
+ ## Support
216
+
217
+ - 📧 Email: [privet@pingera.ru](mailto:privet@pingera.ru)
218
+ - 📖 Documentation: [docs.pingera.ru](https://docs.pingera.ru)
219
+ - 🌐 Website: [pingera.ru](https://pingera.ru)
220
+ - 📊 Status: [status.pingera.ru](https://status.pingera.ru)
221
+
222
+ ## Links
223
+
224
+ - [Pingera Platform](https://app.pingera.ru)
225
+ - [API Documentation](https://docs.pingera.ru/api/overview)
226
+ - [Status Page](https://status.pingera.ru)
227
+ - [Website](https://pingera.ru)
@@ -0,0 +1,152 @@
1
+ # coding: utf-8
2
+
3
+ # flake8: noqa
4
+
5
+ """
6
+ Pingera API
7
+
8
+ The official API for Pingera, a monitoring and status page platform. This API allows you to manage checks, organizations, incidents, and more. Some useful links: * [Pingera website](https://pingera.ru?utm_source=api_docs) * [API documentation](https://docs.pingera.ru/api/overview) * [Application](https://app.pingera.ru) * [Status page](https://status.pingera.ru)
9
+
10
+ The version of the OpenAPI document: v1
11
+ Contact: privet@pingera.ru
12
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
13
+
14
+ Do not edit the class manually.
15
+ """ # noqa: E501
16
+
17
+
18
+ __version__ = "1.0.0"
19
+
20
+ # Define package exports
21
+ __all__ = [
22
+ "AlertsApi",
23
+ "ChecksApi",
24
+ "ChecksUnifiedResultsApi",
25
+ "HeartbeatsApi",
26
+ "OnDemandChecksApi",
27
+ "StatusPagesComponentsApi",
28
+ "StatusPagesIncidentsApi",
29
+ "ApiResponse",
30
+ "ApiClient",
31
+ "Configuration",
32
+ "OpenApiException",
33
+ "ApiTypeError",
34
+ "ApiValueError",
35
+ "ApiKeyError",
36
+ "ApiAttributeError",
37
+ "ApiException",
38
+ "Alert",
39
+ "AlertChannel",
40
+ "AlertChannel1",
41
+ "AlertList",
42
+ "AlertNotification",
43
+ "AlertRule",
44
+ "AlertRule1",
45
+ "AlertStats",
46
+ "CheckJob",
47
+ "CheckServer",
48
+ "Component",
49
+ "Component1",
50
+ "ComponentUptimeBulkRequest",
51
+ "Error",
52
+ "ExecuteCustomCheckRequest",
53
+ "ExecuteExistingCheckResponse",
54
+ "HeartbeatCheck",
55
+ "HeartbeatCheck1",
56
+ "HeartbeatCheckChannelAssignment",
57
+ "HeartbeatCheckDetail",
58
+ "HeartbeatCheckList",
59
+ "HeartbeatPing",
60
+ "HeartbeatPingHistory",
61
+ "HeartbeatPingResponse",
62
+ "Incident",
63
+ "IncidentCreate",
64
+ "IncidentPostmortem",
65
+ "IncidentUpdate",
66
+ "IncidentUpdateCreate",
67
+ "IncidentUpdateEdit",
68
+ "IncidentUpdateSchemaEdit",
69
+ "JobListResponse",
70
+ "LogPastIncident",
71
+ "MonitorCheck",
72
+ "MonitorCheck1",
73
+ "MonitorCheckList",
74
+ "MonitorCheckResult",
75
+ "MonitorCheckResultList",
76
+ "MonitorCheckStatusHistory",
77
+ "MonitorCheckStatusHistoryList",
78
+ "PaginationMetadata",
79
+ "PastIncidentUpdate",
80
+ "Region",
81
+ "RegionsList",
82
+ "UnifiedResult",
83
+ "UnifiedResultList",
84
+ ]
85
+
86
+ # import apis into sdk package
87
+ from pingera_generated.api.alerts_api import AlertsApi as AlertsApi
88
+ from pingera_generated.api.checks_api import ChecksApi as ChecksApi
89
+ from pingera_generated.api.checks_unified_results_api import ChecksUnifiedResultsApi as ChecksUnifiedResultsApi
90
+ from pingera_generated.api.heartbeats_api import HeartbeatsApi as HeartbeatsApi
91
+ from pingera_generated.api.on_demand_checks_api import OnDemandChecksApi as OnDemandChecksApi
92
+ from pingera_generated.api.status_pages_components_api import StatusPagesComponentsApi as StatusPagesComponentsApi
93
+ from pingera_generated.api.status_pages_incidents_api import StatusPagesIncidentsApi as StatusPagesIncidentsApi
94
+
95
+ # import ApiClient
96
+ from pingera_generated.api_response import ApiResponse as ApiResponse
97
+ from pingera_generated.api_client import ApiClient as ApiClient
98
+ from pingera_generated.configuration import Configuration as Configuration
99
+ from pingera_generated.exceptions import OpenApiException as OpenApiException
100
+ from pingera_generated.exceptions import ApiTypeError as ApiTypeError
101
+ from pingera_generated.exceptions import ApiValueError as ApiValueError
102
+ from pingera_generated.exceptions import ApiKeyError as ApiKeyError
103
+ from pingera_generated.exceptions import ApiAttributeError as ApiAttributeError
104
+ from pingera_generated.exceptions import ApiException as ApiException
105
+
106
+ # import models into sdk package
107
+ from pingera_generated.models.alert import Alert as Alert
108
+ from pingera_generated.models.alert_channel import AlertChannel as AlertChannel
109
+ from pingera_generated.models.alert_channel1 import AlertChannel1 as AlertChannel1
110
+ from pingera_generated.models.alert_list import AlertList as AlertList
111
+ from pingera_generated.models.alert_notification import AlertNotification as AlertNotification
112
+ from pingera_generated.models.alert_rule import AlertRule as AlertRule
113
+ from pingera_generated.models.alert_rule1 import AlertRule1 as AlertRule1
114
+ from pingera_generated.models.alert_stats import AlertStats as AlertStats
115
+ from pingera_generated.models.check_job import CheckJob as CheckJob
116
+ from pingera_generated.models.check_server import CheckServer as CheckServer
117
+ from pingera_generated.models.component import Component as Component
118
+ from pingera_generated.models.component1 import Component1 as Component1
119
+ from pingera_generated.models.component_uptime_bulk_request import ComponentUptimeBulkRequest as ComponentUptimeBulkRequest
120
+ from pingera_generated.models.error import Error as Error
121
+ from pingera_generated.models.execute_custom_check_request import ExecuteCustomCheckRequest as ExecuteCustomCheckRequest
122
+ from pingera_generated.models.execute_existing_check_response import ExecuteExistingCheckResponse as ExecuteExistingCheckResponse
123
+ from pingera_generated.models.heartbeat_check import HeartbeatCheck as HeartbeatCheck
124
+ from pingera_generated.models.heartbeat_check1 import HeartbeatCheck1 as HeartbeatCheck1
125
+ from pingera_generated.models.heartbeat_check_channel_assignment import HeartbeatCheckChannelAssignment as HeartbeatCheckChannelAssignment
126
+ from pingera_generated.models.heartbeat_check_detail import HeartbeatCheckDetail as HeartbeatCheckDetail
127
+ from pingera_generated.models.heartbeat_check_list import HeartbeatCheckList as HeartbeatCheckList
128
+ from pingera_generated.models.heartbeat_ping import HeartbeatPing as HeartbeatPing
129
+ from pingera_generated.models.heartbeat_ping_history import HeartbeatPingHistory as HeartbeatPingHistory
130
+ from pingera_generated.models.heartbeat_ping_response import HeartbeatPingResponse as HeartbeatPingResponse
131
+ from pingera_generated.models.incident import Incident as Incident
132
+ from pingera_generated.models.incident_create import IncidentCreate as IncidentCreate
133
+ from pingera_generated.models.incident_postmortem import IncidentPostmortem as IncidentPostmortem
134
+ from pingera_generated.models.incident_update import IncidentUpdate as IncidentUpdate
135
+ from pingera_generated.models.incident_update_create import IncidentUpdateCreate as IncidentUpdateCreate
136
+ from pingera_generated.models.incident_update_edit import IncidentUpdateEdit as IncidentUpdateEdit
137
+ from pingera_generated.models.incident_update_schema_edit import IncidentUpdateSchemaEdit as IncidentUpdateSchemaEdit
138
+ from pingera_generated.models.job_list_response import JobListResponse as JobListResponse
139
+ from pingera_generated.models.log_past_incident import LogPastIncident as LogPastIncident
140
+ from pingera_generated.models.monitor_check import MonitorCheck as MonitorCheck
141
+ from pingera_generated.models.monitor_check1 import MonitorCheck1 as MonitorCheck1
142
+ from pingera_generated.models.monitor_check_list import MonitorCheckList as MonitorCheckList
143
+ from pingera_generated.models.monitor_check_result import MonitorCheckResult as MonitorCheckResult
144
+ from pingera_generated.models.monitor_check_result_list import MonitorCheckResultList as MonitorCheckResultList
145
+ from pingera_generated.models.monitor_check_status_history import MonitorCheckStatusHistory as MonitorCheckStatusHistory
146
+ from pingera_generated.models.monitor_check_status_history_list import MonitorCheckStatusHistoryList as MonitorCheckStatusHistoryList
147
+ from pingera_generated.models.pagination_metadata import PaginationMetadata as PaginationMetadata
148
+ from pingera_generated.models.past_incident_update import PastIncidentUpdate as PastIncidentUpdate
149
+ from pingera_generated.models.region import Region as Region
150
+ from pingera_generated.models.regions_list import RegionsList as RegionsList
151
+ from pingera_generated.models.unified_result import UnifiedResult as UnifiedResult
152
+ from pingera_generated.models.unified_result_list import UnifiedResultList as UnifiedResultList
@@ -0,0 +1,11 @@
1
+ # flake8: noqa
2
+
3
+ # import apis into api package
4
+ from pingera_generated.api.alerts_api import AlertsApi
5
+ from pingera_generated.api.checks_api import ChecksApi
6
+ from pingera_generated.api.checks_unified_results_api import ChecksUnifiedResultsApi
7
+ from pingera_generated.api.heartbeats_api import HeartbeatsApi
8
+ from pingera_generated.api.on_demand_checks_api import OnDemandChecksApi
9
+ from pingera_generated.api.status_pages_components_api import StatusPagesComponentsApi
10
+ from pingera_generated.api.status_pages_incidents_api import StatusPagesIncidentsApi
11
+