pinky-provider 0.1.0.dev1__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 (105) hide show
  1. pinky_provider-0.1.0.dev1/.github/workflows/ci.yml +39 -0
  2. pinky_provider-0.1.0.dev1/.github/workflows/publish.yml +32 -0
  3. pinky_provider-0.1.0.dev1/.github/workflows/release.yml +37 -0
  4. pinky_provider-0.1.0.dev1/.gitignore +52 -0
  5. pinky_provider-0.1.0.dev1/.pinky/schemas/warehouse.schema.json +474 -0
  6. pinky_provider-0.1.0.dev1/.pre-commit-config.yaml +125 -0
  7. pinky_provider-0.1.0.dev1/.secrets.baseline +127 -0
  8. pinky_provider-0.1.0.dev1/.vscode/settings.json +7 -0
  9. pinky_provider-0.1.0.dev1/AGENT.md +103 -0
  10. pinky_provider-0.1.0.dev1/CONTEXT.md +27 -0
  11. pinky_provider-0.1.0.dev1/LICENSE +21 -0
  12. pinky_provider-0.1.0.dev1/PKG-INFO +103 -0
  13. pinky_provider-0.1.0.dev1/README.md +47 -0
  14. pinky_provider-0.1.0.dev1/docs/adr/0001-pydantic-sdk-fields.md +30 -0
  15. pinky_provider-0.1.0.dev1/docs/adr/0002-click-over-argparse.md +22 -0
  16. pinky_provider-0.1.0.dev1/docs/adr/0003-rich-terminal-output.md +21 -0
  17. pinky_provider-0.1.0.dev1/docs/adr/0004-zero-statefile.md +23 -0
  18. pinky_provider-0.1.0.dev1/docs/adr/0005-ddl-strategy-core-api-over-sql.md +33 -0
  19. pinky_provider-0.1.0.dev1/docs/adr/0006-try-create-or-alter-except-create-or-replace.md +44 -0
  20. pinky_provider-0.1.0.dev1/docs/adr/0007-table-reorder-swap-over-ctas.md +94 -0
  21. pinky_provider-0.1.0.dev1/docs/adr/0008-handler-python-sql-only.md +22 -0
  22. pinky_provider-0.1.0.dev1/docs/adr/0009-opinionated-stage-architecture.md +125 -0
  23. pinky_provider-0.1.0.dev1/docs/adr/0010-repo-name-equals-schema-name.md +40 -0
  24. pinky_provider-0.1.0.dev1/docs/adr/0011-session-query-tag-auto-injection.md +67 -0
  25. pinky_provider-0.1.0.dev1/docs/adr/0012-url-first-notifications.md +61 -0
  26. pinky_provider-0.1.0.dev1/docs/adr/0013-conditional-cron-trigger-mode.md +53 -0
  27. pinky_provider-0.1.0.dev1/docs/adr/0014-modular-resource-scope.md +146 -0
  28. pinky_provider-0.1.0.dev1/docs/adr/0015-field-curation-and-json-schema.md +50 -0
  29. pinky_provider-0.1.0.dev1/docs/explanation/dag.md +136 -0
  30. pinky_provider-0.1.0.dev1/docs/explanation/design.md +257 -0
  31. pinky_provider-0.1.0.dev1/docs/explanation/features.md +82 -0
  32. pinky_provider-0.1.0.dev1/docs/how-to/deploy.md +0 -0
  33. pinky_provider-0.1.0.dev1/docs/how-to/test.md +0 -0
  34. pinky_provider-0.1.0.dev1/docs/index.md +43 -0
  35. pinky_provider-0.1.0.dev1/docs/reference/generated/api/account.md +85 -0
  36. pinky_provider-0.1.0.dev1/docs/reference/generated/api/base.md +5 -0
  37. pinky_provider-0.1.0.dev1/docs/reference/generated/api/dag.md +5 -0
  38. pinky_provider-0.1.0.dev1/docs/reference/generated/api/database.md +25 -0
  39. pinky_provider-0.1.0.dev1/docs/reference/generated/api/provider.md +5 -0
  40. pinky_provider-0.1.0.dev1/docs/reference/generated/api/schema.md +97 -0
  41. pinky_provider-0.1.0.dev1/docs/tutorials/.gitkeep +0 -0
  42. pinky_provider-0.1.0.dev1/examples/manifest.yml +6 -0
  43. pinky_provider-0.1.0.dev1/examples/resources/warehouse/wh_compute.yml +4 -0
  44. pinky_provider-0.1.0.dev1/examples/vars/PRODUCTION.yml +2 -0
  45. pinky_provider-0.1.0.dev1/examples/vars/SANDBOX.yml +2 -0
  46. pinky_provider-0.1.0.dev1/mkdocs.dev.yml +3 -0
  47. pinky_provider-0.1.0.dev1/mkdocs.yml +51 -0
  48. pinky_provider-0.1.0.dev1/pyproject.toml +107 -0
  49. pinky_provider-0.1.0.dev1/scripts/hooks/check_forbidden_keywords.py +76 -0
  50. pinky_provider-0.1.0.dev1/scripts/hooks/check_snowpark_api.py +160 -0
  51. pinky_provider-0.1.0.dev1/scripts/hooks/check_typed_api.py +140 -0
  52. pinky_provider-0.1.0.dev1/scripts/hooks/check_zws.py +39 -0
  53. pinky_provider-0.1.0.dev1/scripts/hooks/commit-msg +142 -0
  54. pinky_provider-0.1.0.dev1/src/pinky_provider/__init__.py +26 -0
  55. pinky_provider-0.1.0.dev1/src/pinky_provider/cli/__init__.py +3 -0
  56. pinky_provider-0.1.0.dev1/src/pinky_provider/cli/main.py +84 -0
  57. pinky_provider-0.1.0.dev1/src/pinky_provider/core/__init__.py +5 -0
  58. pinky_provider-0.1.0.dev1/src/pinky_provider/core/diff.py +75 -0
  59. pinky_provider-0.1.0.dev1/src/pinky_provider/core/manifest.py +111 -0
  60. pinky_provider-0.1.0.dev1/src/pinky_provider/core/schemas.py +47 -0
  61. pinky_provider-0.1.0.dev1/src/pinky_provider/core/session.py +56 -0
  62. pinky_provider-0.1.0.dev1/src/pinky_provider/dag/__init__.py +3 -0
  63. pinky_provider-0.1.0.dev1/src/pinky_provider/dag/dag.py +27 -0
  64. pinky_provider-0.1.0.dev1/src/pinky_provider/provider.py +87 -0
  65. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/__init__.py +27 -0
  66. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/__init__.py +96 -0
  67. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/api_integration.py +6 -0
  68. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/compute_pool.py +6 -0
  69. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/database.py +6 -0
  70. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/external_access_integration.py +6 -0
  71. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/external_volume.py +6 -0
  72. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/network_policy.py +6 -0
  73. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/network_rule.py +6 -0
  74. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/notification_integration.py +6 -0
  75. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/role.py +6 -0
  76. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/secret.py +6 -0
  77. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/tag.py +6 -0
  78. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/user.py +6 -0
  79. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/account/warehouse.py +72 -0
  80. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/base.py +160 -0
  81. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/database/__init__.py +41 -0
  82. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/database/database_role.py +6 -0
  83. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/database/grant.py +6 -0
  84. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/database/schema.py +6 -0
  85. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/__init__.py +68 -0
  86. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/alert.py +6 -0
  87. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/dynamic_table.py +6 -0
  88. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/event_table.py +6 -0
  89. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/iceberg_table.py +6 -0
  90. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/procedure.py +6 -0
  91. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/secret.py +6 -0
  92. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/stage.py +6 -0
  93. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/storage_lifecycle_policy.py +6 -0
  94. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/stream.py +6 -0
  95. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/streamlit.py +6 -0
  96. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/table.py +6 -0
  97. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/tag.py +6 -0
  98. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/task.py +6 -0
  99. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/user_defined_function.py +6 -0
  100. pinky_provider-0.1.0.dev1/src/pinky_provider/resources/schema/view.py +6 -0
  101. pinky_provider-0.1.0.dev1/tests/test_base.py +72 -0
  102. pinky_provider-0.1.0.dev1/tests/test_diff.py +59 -0
  103. pinky_provider-0.1.0.dev1/tests/test_manifest.py +46 -0
  104. pinky_provider-0.1.0.dev1/tests/test_schemas.py +32 -0
  105. pinky_provider-0.1.0.dev1/tests/test_warehouse.py +74 -0
@@ -0,0 +1,39 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ pull_request:
7
+ branches: [main, develop]
8
+
9
+ jobs:
10
+ ci:
11
+ runs-on: ubuntu-latest
12
+ env:
13
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Set up Python 3.11
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.11"
22
+
23
+ - name: Install dependencies
24
+ run: pip install -e ".[dev]"
25
+
26
+ - name: Lint
27
+ run: ruff check src/ tests/ scripts/
28
+
29
+ - name: Format check
30
+ run: ruff format --check src/ tests/ scripts/
31
+
32
+ - name: Type check
33
+ run: mypy src/pinky_provider/
34
+
35
+ - name: Security scan
36
+ run: bandit -r src/pinky_provider/ -ll
37
+
38
+ - name: Tests
39
+ run: pytest
@@ -0,0 +1,32 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.dev*"
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+ env:
12
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
13
+ permissions:
14
+ contents: read
15
+ id-token: write # required for trusted publishing (OIDC)
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Set up Python 3.11
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.11"
24
+
25
+ - name: Install build
26
+ run: pip install build
27
+
28
+ - name: Build wheel and sdist
29
+ run: python -m build
30
+
31
+ - name: Publish to PyPI
32
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,37 @@
1
+ name: Release
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ jobs:
6
+ release:
7
+ runs-on: ubuntu-latest
8
+ env:
9
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
10
+ permissions:
11
+ contents: write
12
+ id-token: write
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - name: Read version
16
+ id: version
17
+ run: echo "version=$(grep '^version' pyproject.toml | cut -d'"' -f2)" >> $GITHUB_OUTPUT
18
+ - name: Guard — no .dev version on main
19
+ run: |
20
+ if [[ "${{ steps.version.outputs.version }}" == *".dev"* ]]; then
21
+ echo "❌ version .dev sur main — bumper la version avant de merger"
22
+ exit 1
23
+ fi
24
+ - name: Create tag
25
+ run: |
26
+ git tag "v${{ steps.version.outputs.version }}"
27
+ git push origin "v${{ steps.version.outputs.version }}"
28
+ - name: Set up Python 3.11
29
+ uses: actions/setup-python@v5
30
+ with:
31
+ python-version: "3.11"
32
+ - name: Install build
33
+ run: pip install build
34
+ - name: Build
35
+ run: python -m build
36
+ - name: Publish to PyPI
37
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,52 @@
1
+ docs/_legacy/
2
+
3
+ # ── Python ───────────────────────────────────────────────────────────────────
4
+ __pycache__/
5
+ *.py[cod]
6
+ *.pyo
7
+ *.pyd
8
+ .Python
9
+ *.egg-info/
10
+ dist/
11
+ build/
12
+ *.egg
13
+ .eggs/
14
+
15
+ # ── Environments ─────────────────────────────────────────────────────────────
16
+ .env
17
+ .venv/
18
+ venv/
19
+ .conda/
20
+
21
+ # ── Tools cache ──────────────────────────────────────────────────────────────
22
+ .ruff_cache/
23
+ .mypy_cache/
24
+ .pytest_cache/
25
+ .pre-commit-cache/
26
+ htmlcov/
27
+ .coverage
28
+ .coverage.*
29
+ coverage.xml
30
+
31
+ # ── Generated docs ───────────────────────────────────────────────────────────
32
+ # Local MkDocs assets — symlinked from pinky-studio for local dev, not committed
33
+ docs/assets/
34
+ site/
35
+
36
+ # ── Local dev ────────────────────────────────────────────────────────────────
37
+ .local/
38
+ *.local.json
39
+
40
+ # ── Snowflake credentials ────────────────────────────────────────────────────
41
+ *.p8
42
+ connection.json
43
+ connections.toml
44
+ .snowflake/
45
+
46
+ # ── macOS ────────────────────────────────────────────────────────────────────
47
+ .DS_Store
48
+ .AppleDouble
49
+ .LSOverride
50
+
51
+ # ── VSCode ───────────────────────────────────────────────────────────────────
52
+ .vscode/*.log
@@ -0,0 +1,474 @@
1
+ {
2
+ "$defs": {
3
+ "WarehouseSize": {
4
+ "description": "Curated warehouse sizes \u2014 drives YAML autocomplete (ADR-0015).\n\nSnowflake's SDK types ``warehouse_size`` as a bare ``str``; exposing this enum gives the editor\na value dropdown. Used as a **soft** enum (``WarehouseSize | str``): unknown values still pass \u2014\nforward-compatible if Snowflake adds a tier before we do \u2014 and are validated by Snowflake at\n``apply``. Extend by one line to get autocomplete for a new tier.",
5
+ "enum": [
6
+ "XSMALL",
7
+ "SMALL",
8
+ "MEDIUM",
9
+ "LARGE",
10
+ "XLARGE",
11
+ "XXLARGE",
12
+ "XXXLARGE",
13
+ "X4LARGE",
14
+ "X5LARGE",
15
+ "X6LARGE"
16
+ ],
17
+ "title": "WarehouseSize",
18
+ "type": "string"
19
+ }
20
+ },
21
+ "additionalProperties": false,
22
+ "description": "Account-scoped warehouse \u2014 fields introspected from ``snowflake.core.warehouse.Warehouse``.\n\nDeployed via Core API ``create_or_alter`` (ADR-0005) \u2014 no SQL fallback needed. Two SDK warts are\ncurated for a clean YAML surface (ADR-0015): ``warehouse_size`` is exposed as :class:`WarehouseSize`\n(autocompleted, typo-checked) and ``auto_resume`` as a real ``bool``.",
23
+ "properties": {
24
+ "name": {
25
+ "title": "Name",
26
+ "type": "string"
27
+ },
28
+ "warehouse_type": {
29
+ "anyOf": [
30
+ {
31
+ "type": "string"
32
+ },
33
+ {
34
+ "type": "null"
35
+ }
36
+ ],
37
+ "default": null,
38
+ "title": "Warehouse Type"
39
+ },
40
+ "warehouse_size": {
41
+ "anyOf": [
42
+ {
43
+ "$ref": "#/$defs/WarehouseSize"
44
+ },
45
+ {
46
+ "type": "string"
47
+ }
48
+ ],
49
+ "default": null,
50
+ "title": "Warehouse Size"
51
+ },
52
+ "wait_for_completion": {
53
+ "anyOf": [
54
+ {
55
+ "type": "string"
56
+ },
57
+ {
58
+ "type": "null"
59
+ }
60
+ ],
61
+ "default": null,
62
+ "title": "Wait For Completion"
63
+ },
64
+ "max_cluster_count": {
65
+ "anyOf": [
66
+ {
67
+ "type": "integer"
68
+ },
69
+ {
70
+ "type": "null"
71
+ }
72
+ ],
73
+ "default": null,
74
+ "title": "Max Cluster Count"
75
+ },
76
+ "min_cluster_count": {
77
+ "anyOf": [
78
+ {
79
+ "type": "integer"
80
+ },
81
+ {
82
+ "type": "null"
83
+ }
84
+ ],
85
+ "default": null,
86
+ "title": "Min Cluster Count"
87
+ },
88
+ "scaling_policy": {
89
+ "anyOf": [
90
+ {
91
+ "type": "string"
92
+ },
93
+ {
94
+ "type": "null"
95
+ }
96
+ ],
97
+ "default": null,
98
+ "title": "Scaling Policy"
99
+ },
100
+ "auto_suspend": {
101
+ "anyOf": [
102
+ {
103
+ "type": "integer"
104
+ },
105
+ {
106
+ "type": "null"
107
+ }
108
+ ],
109
+ "default": null,
110
+ "title": "Auto Suspend"
111
+ },
112
+ "auto_resume": {
113
+ "default": null,
114
+ "title": "Auto Resume",
115
+ "type": "boolean"
116
+ },
117
+ "initially_suspended": {
118
+ "anyOf": [
119
+ {
120
+ "type": "string"
121
+ },
122
+ {
123
+ "type": "null"
124
+ }
125
+ ],
126
+ "default": null,
127
+ "title": "Initially Suspended"
128
+ },
129
+ "resource_monitor": {
130
+ "anyOf": [
131
+ {
132
+ "type": "string"
133
+ },
134
+ {
135
+ "type": "null"
136
+ }
137
+ ],
138
+ "default": null,
139
+ "title": "Resource Monitor"
140
+ },
141
+ "comment": {
142
+ "anyOf": [
143
+ {
144
+ "type": "string"
145
+ },
146
+ {
147
+ "type": "null"
148
+ }
149
+ ],
150
+ "default": null,
151
+ "title": "Comment"
152
+ },
153
+ "enable_query_acceleration": {
154
+ "anyOf": [
155
+ {
156
+ "type": "string"
157
+ },
158
+ {
159
+ "type": "null"
160
+ }
161
+ ],
162
+ "default": null,
163
+ "title": "Enable Query Acceleration"
164
+ },
165
+ "query_acceleration_max_scale_factor": {
166
+ "anyOf": [
167
+ {
168
+ "type": "integer"
169
+ },
170
+ {
171
+ "type": "null"
172
+ }
173
+ ],
174
+ "default": null,
175
+ "title": "Query Acceleration Max Scale Factor"
176
+ },
177
+ "max_concurrency_level": {
178
+ "anyOf": [
179
+ {
180
+ "type": "integer"
181
+ },
182
+ {
183
+ "type": "null"
184
+ }
185
+ ],
186
+ "default": null,
187
+ "title": "Max Concurrency Level"
188
+ },
189
+ "statement_queued_timeout_in_seconds": {
190
+ "anyOf": [
191
+ {
192
+ "type": "integer"
193
+ },
194
+ {
195
+ "type": "null"
196
+ }
197
+ ],
198
+ "default": null,
199
+ "title": "Statement Queued Timeout In Seconds"
200
+ },
201
+ "statement_timeout_in_seconds": {
202
+ "anyOf": [
203
+ {
204
+ "type": "integer"
205
+ },
206
+ {
207
+ "type": "null"
208
+ }
209
+ ],
210
+ "default": null,
211
+ "title": "Statement Timeout In Seconds"
212
+ },
213
+ "type": {
214
+ "anyOf": [
215
+ {
216
+ "type": "string"
217
+ },
218
+ {
219
+ "type": "null"
220
+ }
221
+ ],
222
+ "default": null,
223
+ "title": "Type"
224
+ },
225
+ "size": {
226
+ "anyOf": [
227
+ {
228
+ "type": "string"
229
+ },
230
+ {
231
+ "type": "null"
232
+ }
233
+ ],
234
+ "default": null,
235
+ "title": "Size"
236
+ },
237
+ "state": {
238
+ "anyOf": [
239
+ {
240
+ "type": "string"
241
+ },
242
+ {
243
+ "type": "null"
244
+ }
245
+ ],
246
+ "default": null,
247
+ "title": "State"
248
+ },
249
+ "started_clusters": {
250
+ "anyOf": [
251
+ {
252
+ "type": "integer"
253
+ },
254
+ {
255
+ "type": "null"
256
+ }
257
+ ],
258
+ "default": null,
259
+ "title": "Started Clusters"
260
+ },
261
+ "running": {
262
+ "anyOf": [
263
+ {
264
+ "type": "integer"
265
+ },
266
+ {
267
+ "type": "null"
268
+ }
269
+ ],
270
+ "default": null,
271
+ "title": "Running"
272
+ },
273
+ "queued": {
274
+ "anyOf": [
275
+ {
276
+ "type": "integer"
277
+ },
278
+ {
279
+ "type": "null"
280
+ }
281
+ ],
282
+ "default": null,
283
+ "title": "Queued"
284
+ },
285
+ "is_default": {
286
+ "anyOf": [
287
+ {
288
+ "type": "boolean"
289
+ },
290
+ {
291
+ "type": "null"
292
+ }
293
+ ],
294
+ "default": null,
295
+ "title": "Is Default"
296
+ },
297
+ "is_current": {
298
+ "anyOf": [
299
+ {
300
+ "type": "boolean"
301
+ },
302
+ {
303
+ "type": "null"
304
+ }
305
+ ],
306
+ "default": null,
307
+ "title": "Is Current"
308
+ },
309
+ "available": {
310
+ "anyOf": [
311
+ {
312
+ "type": "string"
313
+ },
314
+ {
315
+ "type": "null"
316
+ }
317
+ ],
318
+ "default": null,
319
+ "title": "Available"
320
+ },
321
+ "provisioning": {
322
+ "anyOf": [
323
+ {
324
+ "type": "string"
325
+ },
326
+ {
327
+ "type": "null"
328
+ }
329
+ ],
330
+ "default": null,
331
+ "title": "Provisioning"
332
+ },
333
+ "quiescing": {
334
+ "anyOf": [
335
+ {
336
+ "type": "string"
337
+ },
338
+ {
339
+ "type": "null"
340
+ }
341
+ ],
342
+ "default": null,
343
+ "title": "Quiescing"
344
+ },
345
+ "other": {
346
+ "anyOf": [
347
+ {
348
+ "type": "string"
349
+ },
350
+ {
351
+ "type": "null"
352
+ }
353
+ ],
354
+ "default": null,
355
+ "title": "Other"
356
+ },
357
+ "created_on": {
358
+ "anyOf": [
359
+ {
360
+ "format": "date-time",
361
+ "type": "string"
362
+ },
363
+ {
364
+ "type": "null"
365
+ }
366
+ ],
367
+ "default": null,
368
+ "title": "Created On"
369
+ },
370
+ "resumed_on": {
371
+ "anyOf": [
372
+ {
373
+ "format": "date-time",
374
+ "type": "string"
375
+ },
376
+ {
377
+ "type": "null"
378
+ }
379
+ ],
380
+ "default": null,
381
+ "title": "Resumed On"
382
+ },
383
+ "updated_on": {
384
+ "anyOf": [
385
+ {
386
+ "format": "date-time",
387
+ "type": "string"
388
+ },
389
+ {
390
+ "type": "null"
391
+ }
392
+ ],
393
+ "default": null,
394
+ "title": "Updated On"
395
+ },
396
+ "owner": {
397
+ "anyOf": [
398
+ {
399
+ "type": "string"
400
+ },
401
+ {
402
+ "type": "null"
403
+ }
404
+ ],
405
+ "default": null,
406
+ "title": "Owner"
407
+ },
408
+ "budget": {
409
+ "anyOf": [
410
+ {
411
+ "type": "string"
412
+ },
413
+ {
414
+ "type": "null"
415
+ }
416
+ ],
417
+ "default": null,
418
+ "title": "Budget"
419
+ },
420
+ "kind": {
421
+ "anyOf": [
422
+ {
423
+ "type": "string"
424
+ },
425
+ {
426
+ "type": "null"
427
+ }
428
+ ],
429
+ "default": null,
430
+ "title": "Kind"
431
+ },
432
+ "owner_role_type": {
433
+ "anyOf": [
434
+ {
435
+ "type": "string"
436
+ },
437
+ {
438
+ "type": "null"
439
+ }
440
+ ],
441
+ "default": null,
442
+ "title": "Owner Role Type"
443
+ },
444
+ "warehouse_credit_limit": {
445
+ "anyOf": [
446
+ {
447
+ "type": "integer"
448
+ },
449
+ {
450
+ "type": "null"
451
+ }
452
+ ],
453
+ "default": null,
454
+ "title": "Warehouse Credit Limit"
455
+ },
456
+ "target_statement_size": {
457
+ "anyOf": [
458
+ {
459
+ "type": "string"
460
+ },
461
+ {
462
+ "type": "null"
463
+ }
464
+ ],
465
+ "default": null,
466
+ "title": "Target Statement Size"
467
+ }
468
+ },
469
+ "required": [
470
+ "name"
471
+ ],
472
+ "title": "Warehouse",
473
+ "type": "object"
474
+ }