From f3d8cdf45a8be92b9cd14ac4112fe0ad2dc3b9c1 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Fri, 28 Aug 2026 11:30:45 +1000 Subject: [PATCH 1/3] netlify updates --- .gitattributes | 9 + .github/workflows/build-and-test.yml | 148 + .github/workflows/prod-web-deploy.yml | 116 +- .github/workflows/test-web-deploy.yml | 60 +- .gitignore | 180 +- CLAUDE.md | 85 + Makefile | 192 + NOTES.md | 109 + README.md | 428 +- bin/generate-docs.mjs | 44 - bin/generate-docs.sh | 63 - bin/generate-mappings.mjs | 42 - bin/generate-mappings.sh | 83 - bin/generate-provider.mjs | 66 - bin/generate-provider.sh | 134 - bin/split.mjs | 76 - bin/split.sh | 123 - bin/start-server.sh | 102 +- package-lock.json | 1503 +- package.json | 63 +- provider-dev/config/all_services.csv | 196 + provider-dev/config/provider_config.json | 1 + provider-dev/config/servers.json | 1 + provider-dev/config/service_config.json | 6 + .../docgen/provider-data/headerContent1.txt | 41 +- .../docgen/provider-data/headerContent2.txt | 365 +- provider-dev/downloaded/openapi.json | 25026 ++++++++++++++++ provider-dev/downloaded/swagger.json | 24441 +++++++++++++++ .../src/netlify/v00.00.00000/provider.yaml | 325 +- .../v00.00.00000/services/access_token.yaml | 157 - .../services/account_membership.yaml | 325 - .../v00.00.00000/services/account_type.yaml | 159 - .../v00.00.00000/services/accounts.yaml | 1030 + .../v00.00.00000/services/agent_runners.yaml | 1651 + .../v00.00.00000/services/ai_gateway.yaml | 198 + .../netlify/v00.00.00000/services/asset.yaml | 284 - .../services/asset_public_signature.yaml | 154 - .../v00.00.00000/services/audit_log.yaml | 185 - .../netlify/v00.00.00000/services/build.yaml | 348 - .../v00.00.00000/services/build_hook.yaml | 267 - .../v00.00.00000/services/build_log_msg.yaml | 139 - .../netlify/v00.00.00000/services/builds.yaml | 729 + .../v00.00.00000/services/database.yaml | 1449 + .../netlify/v00.00.00000/services/deploy.yaml | 576 - .../v00.00.00000/services/deploy_key.yaml | 214 - .../services/deployed_branch.yaml | 161 - .../v00.00.00000/services/deploys.yaml | 2213 ++ .../v00.00.00000/services/dev_servers.yaml | 705 + .../netlify/v00.00.00000/services/dns.yaml | 811 + .../v00.00.00000/services/dns_zone.yaml | 557 - .../netlify/v00.00.00000/services/env.yaml | 1335 + .../netlify/v00.00.00000/services/file.yaml | 248 - .../netlify/v00.00.00000/services/form.yaml | 197 - .../netlify/v00.00.00000/services/forms.yaml | 431 + .../v00.00.00000/services/function.yaml | 176 - .../v00.00.00000/services/functions.yaml | 94 + .../netlify/v00.00.00000/services/hook.yaml | 305 - .../v00.00.00000/services/hook_type.yaml | 153 - .../netlify/v00.00.00000/services/hooks.yaml | 445 + .../netlify/v00.00.00000/services/member.yaml | 182 - .../v00.00.00000/services/metadata.yaml | 168 - .../netlify/v00.00.00000/services/oauth.yaml | 221 + .../v00.00.00000/services/payment_method.yaml | 166 - .../v00.00.00000/services/service.yaml | 244 - .../services/service_instance.yaml | 300 - .../v00.00.00000/services/services.yaml | 647 + .../netlify/v00.00.00000/services/site.yaml | 613 - .../netlify/v00.00.00000/services/sites.yaml | 4171 +++ .../services/sni_certificate.yaml | 198 - .../v00.00.00000/services/snippet.yaml | 262 - .../v00.00.00000/services/split_test.yaml | 338 - .../v00.00.00000/services/split_tests.yaml | 403 + .../v00.00.00000/services/submission.yaml | 288 - .../netlify/v00.00.00000/services/ticket.yaml | 182 - .../netlify/v00.00.00000/services/user.yaml | 173 - .../netlify/v00.00.00000/services/users.yaml | 94 + provider-dev/scripts/.gitkeep | 0 provider-dev/scripts/map_operations.mjs | 340 + provider-dev/scripts/post_normalize.mjs | 97 + provider-dev/scripts/post_process.mjs | 419 + provider-dev/scripts/preprocess.mjs | 52 + provider-dev/scripts/svc-discriminator.mjs | 98 + provider-dev/source/.gitkeep | 0 provider-dev/source/accounts.yaml | 863 + provider-dev/source/agent_runners.yaml | 1467 + provider-dev/source/ai_gateway.yaml | 146 + provider-dev/source/builds.yaml | 587 + provider-dev/source/database.yaml | 1149 + provider-dev/source/deploys.yaml | 1967 ++ provider-dev/source/dev_servers.yaml | 588 + provider-dev/source/dns.yaml | 711 + provider-dev/source/env.yaml | 972 + provider-dev/source/forms.yaml | 358 + provider-dev/source/functions.yaml | 67 + provider-dev/source/hooks.yaml | 360 + provider-dev/source/oauth.yaml | 178 + provider-dev/source/services.yaml | 486 + provider-dev/source/sites.yaml | 3788 +++ provider-dev/source/split_tests.yaml | 335 + provider-dev/source/users.yaml | 67 + provider-dev/test/README.md | 83 + provider-dev/test/bootstrap.sh | 39 + provider-dev/test/conftest.py | 315 + provider-dev/test/provider.yaml | 30 + provider-dev/test/requirements.txt | 3 + provider-dev/test/test_tier1.py | 89 + provider-dev/test/tier1.yaml | 286 + website/.gitignore | 3 + {provider-dev/downloaded => website}/.gitkeep | 0 website/docs/index.md | 457 +- website/docs/services/access_token/index.md | 33 - .../oauth_tickets_exchange/index.md | 101 - .../account_types}/index.md | 33 +- .../accounts/index.md | 168 +- .../services/accounts/audit_events/index.md | 164 + .../services/{asset => accounts}/index.md | 15 +- .../docs/services/accounts/members/index.md | 348 + .../payment_methods}/index.md | 29 +- .../agent_runners/agent_runner_hooks/index.md | 403 + .../agent_runner_sessions/index.md | 639 + .../agent_runners/agent_runners/index.md | 877 + .../{split_test => agent_runners}/index.md | 12 +- .../services/{service => ai_gateway}/index.md | 10 +- .../providers}/index.md | 67 +- .../docs/services/ai_gateway/tokens/index.md | 201 + .../services/asset_public_signature/index.md | 33 - website/docs/services/build_hook/index.md | 33 - .../build_log_msg/builds_log/index.md | 101 - website/docs/services/build_log_msg/index.md | 33 - .../build_hooks}/index.md | 123 +- .../build_status}/index.md | 57 +- website/docs/services/builds/builds/index.md | 422 + .../{account_type => builds}/index.md | 13 +- .../docs/services/database/branches/index.md | 373 + .../database/compute_settings/index.md | 236 + .../docs/services/database/databases/index.md | 213 + .../{account_membership => database}/index.md | 15 +- .../services/database/migrations/index.md | 255 + .../docs/services/database/snapshots/index.md | 302 + website/docs/services/deploy/deploys/index.md | 307 - .../services/deploy/deploys_lock/index.md | 101 - .../services/deploy/deploys_unlock/index.md | 101 - website/docs/services/deploy/index.md | 38 - .../services/deploy/sites_deploys/index.md | 675 - .../services/deploy/sites_rollback/index.md | 101 - website/docs/services/deploy_key/index.md | 33 - .../docs/services/deployed_branch/index.md | 33 - .../deploy_keys/index.md | 61 +- .../docs/services/deploys/deploys/index.md | 1405 + website/docs/services/deploys/index.md | 33 + .../dev_servers/dev_server_hooks/index.md | 372 + .../services/dev_servers/dev_servers/index.md | 466 + website/docs/services/dev_servers/index.md | 33 + .../dns_records}/index.md | 133 +- .../{dns_zone => dns}/dns_zones/index.md | 125 +- website/docs/services/{hook => dns}/index.md | 10 +- .../dns_zone/dns_zones_transfer/index.md | 119 - website/docs/services/dns_zone/index.md | 35 - .../docs/services/file/deploys_files/index.md | 113 - .../sites_forms => forms/forms}/index.md | 39 +- .../docs/services/{site => forms}/index.md | 10 +- .../docs/services/forms/submissions/index.md | 466 + .../function/deploys_functions/index.md | 119 - website/docs/services/function/index.md | 33 - .../services/functions/functions/index.md | 164 + .../services/{metadata => functions}/index.md | 8 +- .../docs/services/hook/hooks_enable/index.md | 101 - website/docs/services/hook_type/index.md | 33 - .../hooks_types => hooks/hook_types}/index.md | 29 +- .../services/{hook => hooks}/hooks/index.md | 188 +- .../docs/services/{file => hooks}/index.md | 10 +- website/docs/services/member/index.md | 33 - website/docs/services/member/members/index.md | 200 - website/docs/services/metadata/sites/index.md | 119 - .../docs/services/{form => oauth}/index.md | 8 +- .../oauth_tickets => oauth/tickets}/index.md | 123 +- website/docs/services/payment_method/index.md | 33 - .../service/services_manifest/index.md | 101 - .../docs/services/service_instance/index.md | 33 - .../sites_service_instances/index.md | 193 - .../sites_services_instances/index.md | 224 - .../{submission => services}/index.md | 12 +- .../services/service_instances/index.md | 442 + .../service_manifests}/index.md | 71 +- .../{service => services}/services/index.md | 151 +- .../services/site/sites_unlink_repo/index.md | 101 - .../deployed_branches}/index.md | 29 +- website/docs/services/sites/index.md | 40 + .../site_asset_public_signatures}/index.md | 29 +- .../site_assets}/index.md | 171 +- .../sites_dns => sites/site_dns}/index.md | 39 +- .../sites_files => sites/site_files}/index.md | 41 +- .../services/sites/site_metadata/index.md | 159 + .../services/{site => sites}/sites/index.md | 885 +- .../snippets}/index.md | 161 +- .../services/sites/ssl_certificates/index.md | 306 + .../docs/services/sni_certificate/index.md | 33 - .../sni_certificate/sites_ssl/index.md | 137 - website/docs/services/snippet/index.md | 33 - .../sites_traffic_splits_publish/index.md | 107 - .../sites_traffic_splits_unpublish/index.md | 107 - .../{audit_log => split_tests}/index.md | 8 +- .../split_tests}/index.md | 145 +- .../submission/forms_submissions/index.md | 205 - .../submission/sites_submissions/index.md | 205 - .../services/submission/submissions/index.md | 221 - website/docs/services/ticket/index.md | 33 - .../docs/services/{user => users}/index.md | 8 +- .../{user/user => users/users}/index.md | 29 +- website/docusaurus.config.js | 263 +- website/package.json | 32 +- website/provider.js | 2 + website/scripts/sanitize-docs.mjs | 190 + website/sidebars.js | 40 +- .../components/CopyableCode/CopyableCode.js | 58 +- .../src/components/SchemaTable/SchemaTable.js | 49 + .../SchemaTable/SchemaTable.module.css | 27 + .../StackqlDeployDropdown.js | 400 + .../StackqlDeployDropdown.module.css | 12 + website/src/css/{custom.css => global.css} | 30 +- website/src/pages/blog.js | 10 - website/src/pages/contact-us.js | 10 - website/src/pages/install.js | 10 - website/src/pages/providers/aws.js | 10 - website/src/pages/providers/azure.js | 10 - website/src/pages/providers/confluent.js | 10 - website/src/pages/providers/databricks.js | 10 - website/src/pages/providers/github.js | 10 - website/src/pages/providers/google.js | 10 - website/src/pages/providers/index.js | 10 - website/src/pages/providers/okta.js | 10 - website/src/pages/providers/openai.js | 10 - website/src/pages/providers/snowflake.js | 10 - website/src/pages/stackql-deploy.js | 10 - website/src/pages/stackqldocs.js | 10 - website/src/pages/tutorials.js | 10 - website/src/theme/DocBreadcrumbs/index.js | 12 + website/src/theme/Footer/index.tsx | 522 +- website/static/CNAME | 2 +- website/static/apple-touch-icon.png | Bin 0 -> 7748 bytes website/static/favicon-16x16.png | Bin 0 -> 872 bytes website/static/favicon-32x32.png | Bin 0 -> 1533 bytes website/static/favicon.ico | Bin 0 -> 15086 bytes website/static/img/docusaurus-social-card.jpg | Bin 0 -> 55746 bytes website/static/img/docusaurus.png | Bin 0 -> 5142 bytes website/static/img/logo.svg | 1 + ...l-digitalocean-provider-featured-image.png | Bin 23974 -> 0 bytes website/static/img/stackql-featured-image.png | Bin 0 -> 29955 bytes .../static/img/undraw_docusaurus_mountain.svg | 171 + .../static/img/undraw_docusaurus_react.svg | 170 + website/static/img/undraw_docusaurus_tree.svg | 40 + website/static/safari-pinned-tab.svg | 27 + website/static/site.webmanifest | 11 + website/yarn.lock | 6200 ++-- 254 files changed, 100867 insertions(+), 18104 deletions(-) create mode 100644 .gitattributes create mode 100644 .github/workflows/build-and-test.yml create mode 100644 CLAUDE.md create mode 100644 Makefile create mode 100644 NOTES.md delete mode 100644 bin/generate-docs.mjs delete mode 100644 bin/generate-docs.sh delete mode 100644 bin/generate-mappings.mjs delete mode 100644 bin/generate-mappings.sh delete mode 100644 bin/generate-provider.mjs delete mode 100644 bin/generate-provider.sh delete mode 100644 bin/split.mjs delete mode 100644 bin/split.sh create mode 100644 provider-dev/config/all_services.csv create mode 100644 provider-dev/config/provider_config.json create mode 100644 provider-dev/config/servers.json create mode 100644 provider-dev/config/service_config.json create mode 100644 provider-dev/downloaded/openapi.json create mode 100644 provider-dev/downloaded/swagger.json delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/access_token.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/account_membership.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/account_type.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/accounts.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/agent_runners.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/ai_gateway.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/asset.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/asset_public_signature.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/audit_log.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/build.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/build_hook.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/build_log_msg.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/builds.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/database.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/deploy.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/deploy_key.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/deployed_branch.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/deploys.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/dev_servers.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/dns.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/dns_zone.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/env.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/file.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/form.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/forms.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/function.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/functions.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/hook.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/hook_type.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/hooks.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/member.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/metadata.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/oauth.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/payment_method.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/service.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/service_instance.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/services.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/site.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/sites.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/sni_certificate.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/snippet.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/split_test.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/split_tests.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/submission.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/ticket.yaml delete mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/user.yaml create mode 100644 provider-dev/openapi/src/netlify/v00.00.00000/services/users.yaml delete mode 100644 provider-dev/scripts/.gitkeep create mode 100644 provider-dev/scripts/map_operations.mjs create mode 100644 provider-dev/scripts/post_normalize.mjs create mode 100644 provider-dev/scripts/post_process.mjs create mode 100644 provider-dev/scripts/preprocess.mjs create mode 100644 provider-dev/scripts/svc-discriminator.mjs delete mode 100644 provider-dev/source/.gitkeep create mode 100644 provider-dev/source/accounts.yaml create mode 100644 provider-dev/source/agent_runners.yaml create mode 100644 provider-dev/source/ai_gateway.yaml create mode 100644 provider-dev/source/builds.yaml create mode 100644 provider-dev/source/database.yaml create mode 100644 provider-dev/source/deploys.yaml create mode 100644 provider-dev/source/dev_servers.yaml create mode 100644 provider-dev/source/dns.yaml create mode 100644 provider-dev/source/env.yaml create mode 100644 provider-dev/source/forms.yaml create mode 100644 provider-dev/source/functions.yaml create mode 100644 provider-dev/source/hooks.yaml create mode 100644 provider-dev/source/oauth.yaml create mode 100644 provider-dev/source/services.yaml create mode 100644 provider-dev/source/sites.yaml create mode 100644 provider-dev/source/split_tests.yaml create mode 100644 provider-dev/source/users.yaml create mode 100644 provider-dev/test/README.md create mode 100644 provider-dev/test/bootstrap.sh create mode 100644 provider-dev/test/conftest.py create mode 100644 provider-dev/test/provider.yaml create mode 100644 provider-dev/test/requirements.txt create mode 100644 provider-dev/test/test_tier1.py create mode 100644 provider-dev/test/tier1.yaml rename {provider-dev/downloaded => website}/.gitkeep (100%) delete mode 100644 website/docs/services/access_token/index.md delete mode 100644 website/docs/services/access_token/oauth_tickets_exchange/index.md rename website/docs/services/{account_type/accounts_types => accounts/account_types}/index.md (75%) rename website/docs/services/{account_membership => accounts}/accounts/index.md (71%) create mode 100644 website/docs/services/accounts/audit_events/index.md rename website/docs/services/{asset => accounts}/index.md (53%) create mode 100644 website/docs/services/accounts/members/index.md rename website/docs/services/{payment_method/billing_payment_methods => accounts/payment_methods}/index.md (73%) create mode 100644 website/docs/services/agent_runners/agent_runner_hooks/index.md create mode 100644 website/docs/services/agent_runners/agent_runner_sessions/index.md create mode 100644 website/docs/services/agent_runners/agent_runners/index.md rename website/docs/services/{split_test => agent_runners}/index.md (58%) rename website/docs/services/{service => ai_gateway}/index.md (72%) rename website/docs/services/{deploy/deploys_cancel => ai_gateway/providers}/index.md (55%) create mode 100644 website/docs/services/ai_gateway/tokens/index.md delete mode 100644 website/docs/services/asset_public_signature/index.md delete mode 100644 website/docs/services/build_hook/index.md delete mode 100644 website/docs/services/build_log_msg/builds_log/index.md delete mode 100644 website/docs/services/build_log_msg/index.md rename website/docs/services/{build_hook/sites_build_hooks => builds/build_hooks}/index.md (66%) rename website/docs/services/{audit_log/accounts_audit => builds/build_status}/index.md (63%) create mode 100644 website/docs/services/builds/builds/index.md rename website/docs/services/{account_type => builds}/index.md (64%) create mode 100644 website/docs/services/database/branches/index.md create mode 100644 website/docs/services/database/compute_settings/index.md create mode 100644 website/docs/services/database/databases/index.md rename website/docs/services/{account_membership => database}/index.md (54%) create mode 100644 website/docs/services/database/migrations/index.md create mode 100644 website/docs/services/database/snapshots/index.md delete mode 100644 website/docs/services/deploy/deploys/index.md delete mode 100644 website/docs/services/deploy/deploys_lock/index.md delete mode 100644 website/docs/services/deploy/deploys_unlock/index.md delete mode 100644 website/docs/services/deploy/index.md delete mode 100644 website/docs/services/deploy/sites_deploys/index.md delete mode 100644 website/docs/services/deploy/sites_rollback/index.md delete mode 100644 website/docs/services/deploy_key/index.md delete mode 100644 website/docs/services/deployed_branch/index.md rename website/docs/services/{deploy_key => deploys}/deploy_keys/index.md (71%) create mode 100644 website/docs/services/deploys/deploys/index.md create mode 100644 website/docs/services/deploys/index.md create mode 100644 website/docs/services/dev_servers/dev_server_hooks/index.md create mode 100644 website/docs/services/dev_servers/dev_servers/index.md create mode 100644 website/docs/services/dev_servers/index.md rename website/docs/services/{dns_zone/dns_zones_dns_records => dns/dns_records}/index.md (74%) rename website/docs/services/{dns_zone => dns}/dns_zones/index.md (72%) rename website/docs/services/{hook => dns}/index.md (76%) delete mode 100644 website/docs/services/dns_zone/dns_zones_transfer/index.md delete mode 100644 website/docs/services/dns_zone/index.md delete mode 100644 website/docs/services/file/deploys_files/index.md rename website/docs/services/{form/sites_forms => forms/forms}/index.md (78%) rename website/docs/services/{site => forms}/index.md (75%) create mode 100644 website/docs/services/forms/submissions/index.md delete mode 100644 website/docs/services/function/deploys_functions/index.md delete mode 100644 website/docs/services/function/index.md create mode 100644 website/docs/services/functions/functions/index.md rename website/docs/services/{metadata => functions}/index.md (80%) delete mode 100644 website/docs/services/hook/hooks_enable/index.md delete mode 100644 website/docs/services/hook_type/index.md rename website/docs/services/{hook_type/hooks_types => hooks/hook_types}/index.md (74%) rename website/docs/services/{hook => hooks}/hooks/index.md (67%) rename website/docs/services/{file => hooks}/index.md (74%) delete mode 100644 website/docs/services/member/index.md delete mode 100644 website/docs/services/member/members/index.md delete mode 100644 website/docs/services/metadata/sites/index.md rename website/docs/services/{form => oauth}/index.md (82%) rename website/docs/services/{ticket/oauth_tickets => oauth/tickets}/index.md (50%) delete mode 100644 website/docs/services/payment_method/index.md delete mode 100644 website/docs/services/service/services_manifest/index.md delete mode 100644 website/docs/services/service_instance/index.md delete mode 100644 website/docs/services/service_instance/sites_service_instances/index.md delete mode 100644 website/docs/services/service_instance/sites_services_instances/index.md rename website/docs/services/{submission => services}/index.md (63%) create mode 100644 website/docs/services/services/service_instances/index.md rename website/docs/services/{deploy/sites_deploys_restore => services/service_manifests}/index.md (51%) rename website/docs/services/{service => services}/services/index.md (57%) delete mode 100644 website/docs/services/site/sites_unlink_repo/index.md rename website/docs/services/{deployed_branch/sites_deployed_branches => sites/deployed_branches}/index.md (74%) create mode 100644 website/docs/services/sites/index.md rename website/docs/services/{asset_public_signature/sites_assets_public_signature => sites/site_asset_public_signatures}/index.md (69%) rename website/docs/services/{asset/sites_assets => sites/site_assets}/index.md (62%) rename website/docs/services/{dns_zone/sites_dns => sites/site_dns}/index.md (81%) rename website/docs/services/{file/sites_files => sites/site_files}/index.md (78%) create mode 100644 website/docs/services/sites/site_metadata/index.md rename website/docs/services/{site => sites}/sites/index.md (51%) rename website/docs/services/{snippet/sites_snippets => sites/snippets}/index.md (67%) create mode 100644 website/docs/services/sites/ssl_certificates/index.md delete mode 100644 website/docs/services/sni_certificate/index.md delete mode 100644 website/docs/services/sni_certificate/sites_ssl/index.md delete mode 100644 website/docs/services/snippet/index.md delete mode 100644 website/docs/services/split_test/sites_traffic_splits_publish/index.md delete mode 100644 website/docs/services/split_test/sites_traffic_splits_unpublish/index.md rename website/docs/services/{audit_log => split_tests}/index.md (78%) rename website/docs/services/{split_test/sites_traffic_splits => split_tests/split_tests}/index.md (65%) delete mode 100644 website/docs/services/submission/forms_submissions/index.md delete mode 100644 website/docs/services/submission/sites_submissions/index.md delete mode 100644 website/docs/services/submission/submissions/index.md delete mode 100644 website/docs/services/ticket/index.md rename website/docs/services/{user => users}/index.md (83%) rename website/docs/services/{user/user => users/users}/index.md (82%) create mode 100644 website/provider.js create mode 100644 website/scripts/sanitize-docs.mjs create mode 100644 website/src/components/SchemaTable/SchemaTable.js create mode 100644 website/src/components/SchemaTable/SchemaTable.module.css create mode 100644 website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.js create mode 100644 website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.module.css rename website/src/css/{custom.css => global.css} (89%) delete mode 100644 website/src/pages/blog.js delete mode 100644 website/src/pages/contact-us.js delete mode 100644 website/src/pages/install.js delete mode 100644 website/src/pages/providers/aws.js delete mode 100644 website/src/pages/providers/azure.js delete mode 100644 website/src/pages/providers/confluent.js delete mode 100644 website/src/pages/providers/databricks.js delete mode 100644 website/src/pages/providers/github.js delete mode 100644 website/src/pages/providers/google.js delete mode 100644 website/src/pages/providers/index.js delete mode 100644 website/src/pages/providers/okta.js delete mode 100644 website/src/pages/providers/openai.js delete mode 100644 website/src/pages/providers/snowflake.js delete mode 100644 website/src/pages/stackql-deploy.js delete mode 100644 website/src/pages/stackqldocs.js delete mode 100644 website/src/pages/tutorials.js create mode 100644 website/src/theme/DocBreadcrumbs/index.js create mode 100644 website/static/apple-touch-icon.png create mode 100644 website/static/favicon-16x16.png create mode 100644 website/static/favicon-32x32.png create mode 100644 website/static/favicon.ico create mode 100644 website/static/img/docusaurus-social-card.jpg create mode 100644 website/static/img/docusaurus.png create mode 100644 website/static/img/logo.svg delete mode 100644 website/static/img/stackql-digitalocean-provider-featured-image.png create mode 100644 website/static/img/stackql-featured-image.png create mode 100644 website/static/img/undraw_docusaurus_mountain.svg create mode 100644 website/static/img/undraw_docusaurus_react.svg create mode 100644 website/static/img/undraw_docusaurus_tree.svg create mode 100644 website/static/safari-pinned-tab.svg create mode 100644 website/static/site.webmanifest diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1403798 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +# Normalize line endings: everything text is LF in the repo and on checkout +# (the shell scripts and node scripts run under WSL/Linux CI). +* text=auto eol=lf +*.png binary +*.ico binary +*.jpg binary +*.gif binary +*.woff binary +*.woff2 binary diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 0000000..50eb66d --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,148 @@ +name: build-and-test + +# Build the netlify provider from the committed spec snapshot and run the +# credential-free test layers on each push / PR; the live smoke suite runs +# only where the Netlify token secret is configured; a scheduled spec-drift +# job re-downloads the upstream Swagger document and opens an issue when it +# has moved (Netlify serves a single unversioned document - drift is +# expected and must be reviewed, never silently regenerated). + +on: + push: + branches: [main, 'feature/**'] + paths-ignore: ['website/**'] + pull_request: + branches: [main] + paths-ignore: ['website/**'] + schedule: + - cron: '23 3 * * 1' # weekly spec-drift check (Monday 03:23 UTC) + workflow_dispatch: + +jobs: + build-and-test: + if: github.event_name != 'schedule' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + + - uses: actions/setup-node@v7 + with: + node-version: 20 + cache: npm + + - name: Install dependencies + run: npm ci + + # puts the latest stackql on PATH; bin/start-server.sh resolves it from + # there (no wrapper - the real binary is needed) + - name: Install stackql + uses: stackql/setup-stackql@v2 + + - name: stackql version + run: stackql --version + + - name: Build provider from the committed spec snapshot + run: make build SPEC_REFRESH=0 + + - name: Fail on uncommitted generation drift + run: | + git add -N . + if ! git diff --quiet -- provider-dev/openapi provider-dev/config provider-dev/source; then + echo "Generated output differs from the committed artifacts - run 'make build' and commit." + git diff --stat -- provider-dev/openapi provider-dev/config provider-dev/source + exit 1 + fi + + - name: Meta-route tests + run: make meta-test + + - name: Generate docs (sanity - the site build runs on the web workflows) + run: make docs + + smoke: + # secret-gated live smoke suite against the test account; skipped with a + # notice when the secret is not configured (forks, PRs from outside). + # The suite is read-mostly plus a disposable environment variable + # lifecycle - nothing billable is created. + runs-on: ubuntu-latest + needs: build-and-test + if: github.event_name != 'pull_request' && github.event_name != 'schedule' + env: + NETLIFY_API_TOKEN: ${{ secrets.NETLIFY_API_TOKEN }} + TEST_SITE_NAME: ${{ vars.NETLIFY_TEST_SITE_NAME }} + steps: + - uses: actions/checkout@v7 + + - uses: actions/setup-node@v7 + with: + node-version: 20 + cache: npm + + - uses: actions/setup-python@v7 + with: + python-version: '3.12' + + - name: Install dependencies + run: npm ci + + - name: Live smoke suite (local build, exec + pgwire) + if: env.NETLIFY_API_TOKEN != '' + run: | + echo "NETLIFY_API_TOKEN=${NETLIFY_API_TOKEN}" > .env + make smoke-test MODE=both + + - name: Live smoke skipped (no credentials) + if: env.NETLIFY_API_TOKEN == '' + run: | + echo "::notice title=Live smoke suite skipped::NETLIFY_API_TOKEN secret is not configured - the live smoke suite did not run. Credential-free coverage still ran via the meta-route gate." + + spec-drift: + # Re-download the upstream document on a schedule and on demand, and open + # an issue when the preprocessed OpenAPI output differs from the committed + # snapshot. + runs-on: ubuntu-latest + if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' + permissions: + contents: read + issues: write + steps: + - uses: actions/checkout@v7 + + - uses: actions/setup-node@v7 + with: + node-version: 20 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Fetch and compare against the committed snapshot + id: drift + run: | + make spec preprocess + if git diff --quiet -- provider-dev/downloaded/openapi.json; then + echo "drift=false" >> "$GITHUB_OUTPUT" + else + echo "drift=true" >> "$GITHUB_OUTPUT" + git diff --stat -- provider-dev/downloaded > drift.txt || true + node -e "const s=require('./provider-dev/downloaded/swagger.json');console.log('upstream spec version', s.info.version)" >> drift.txt + cat drift.txt + fi + + - name: Report drift + if: steps.drift.outputs.drift == 'true' + uses: actions/github-script@v9 + with: + script: | + const fs = require('fs'); + const stat = fs.existsSync('drift.txt') ? fs.readFileSync('drift.txt', 'utf8') : '(diff unavailable)'; + const title = 'Netlify API spec drift detected'; + const body = 'The document served at https://open-api.netlify.com/swagger.json no longer matches the committed snapshot in provider-dev/downloaded/.\n\n```\n' + stat + '\n```\nRun `make all`, review the generated diff (new operations reported by `make split` / `make mappings`, changed schemas), update NOTES.md, and commit.'; + await core.summary.addHeading(title).addCodeBlock(stat).write(); + const { data: issues } = await github.rest.issues.listForRepo({ + owner: context.repo.owner, repo: context.repo.repo, state: 'open', labels: 'spec-drift' + }); + if (issues.some(i => i.title === title)) return; + await github.rest.issues.create({ + owner: context.repo.owner, repo: context.repo.repo, title, body, labels: ['spec-drift'] + }); diff --git a/.github/workflows/prod-web-deploy.yml b/.github/workflows/prod-web-deploy.yml index ab53507..7b950ed 100644 --- a/.github/workflows/prod-web-deploy.yml +++ b/.github/workflows/prod-web-deploy.yml @@ -1,58 +1,58 @@ -name: Deploy to GitHub Pages - -on: - push: - branches: - - main - paths: - - 'website/**' - -jobs: - build: - name: Build Docusaurus - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: yarn - cache-dependency-path: website/yarn.lock - - - name: Install dependencies - run: yarn install --frozen-lockfile - working-directory: website - - - name: Build website - run: yarn build - working-directory: website - - - name: Upload Build Artifact - uses: actions/upload-pages-artifact@v3 - with: - path: website/build # Ensure the path is correctly set to the Docusaurus build output - - deploy: - name: Deploy to GitHub Pages - needs: build - - # Grant GITHUB_TOKEN the permissions required to make a Pages deployment - permissions: - pages: write # to deploy to Pages - id-token: write # to verify the deployment originates from an appropriate source - - # Deploy to the github-pages environment - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - - runs-on: ubuntu-latest - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 - with: - working-directory: website/build # Ensures the correct directory is used for deployment +name: Deploy to GitHub Pages + +on: + push: + branches: + - main + paths: + - 'website/**' + +jobs: + build: + name: Build Docusaurus + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 0 + + - uses: actions/setup-node@v7 + with: + node-version: 20 + cache: yarn + cache-dependency-path: website/yarn.lock + + - name: Install dependencies + run: yarn install --frozen-lockfile + working-directory: website + + - name: Build website + run: yarn build + working-directory: website + + - name: Upload Build Artifact + uses: actions/upload-pages-artifact@v5 + with: + path: website/build # Ensure the path is correctly set to the Docusaurus build output + + deploy: + name: Deploy to GitHub Pages + needs: build + + # Grant GITHUB_TOKEN the permissions required to make a Pages deployment + permissions: + pages: write # to deploy to Pages + id-token: write # to verify the deployment originates from an appropriate source + + # Deploy to the github-pages environment + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v5 + with: + working-directory: website/build # Ensures the correct directory is used for deployment diff --git a/.github/workflows/test-web-deploy.yml b/.github/workflows/test-web-deploy.yml index 1e2ef91..64df0d3 100644 --- a/.github/workflows/test-web-deploy.yml +++ b/.github/workflows/test-web-deploy.yml @@ -1,31 +1,31 @@ -name: Test deployment - -on: - pull_request: - branches: - - main - paths: - - 'website/**' - -jobs: - test-deploy: - name: Test deployment - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: yarn - cache-dependency-path: website/yarn.lock - - - name: Install dependencies - run: yarn install --frozen-lockfile - working-directory: website - - - name: Test build website - run: yarn build +name: Test deployment + +on: + pull_request: + branches: + - main + paths: + - 'website/**' + +jobs: + test-deploy: + name: Test deployment + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + fetch-depth: 0 + + - uses: actions/setup-node@v7 + with: + node-version: 20 + cache: yarn + cache-dependency-path: website/yarn.lock + + - name: Install dependencies + run: yarn install --frozen-lockfile + working-directory: website + + - name: Test build website + run: yarn build working-directory: website \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1844196..ea0d782 100644 --- a/.gitignore +++ b/.gitignore @@ -1,86 +1,94 @@ -main.zip - -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# Virtual environments -.venv/ -venv/ -env/ -ENV/ - -# Hatch/Poetry build artifacts -dist/ -build/ -*.egg-info/ - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test cache and coverage -.coverage -.cache/ -pytest_cache/ -htmlcov/ -**/__pycache__ - -# IDE / editor settings -.vscode/ -.idea/ -*.swp -*.swo - -# Output directory -output/ - -# Misc -.DS_Store -*.log -*.tmp -*.bak - -# stackql -.stackql/ -stackql -stackql-zip -stackql-aws-cloud-shell.sh -stackql-azure-cloud-shell.sh -stackql-google-cloud-shell.sh -.env -nohup.out - -# node -# Ignore node_modules in all directories -**/node_modules/ - -# Ignore build outputs in all directories -**/dist/ -**/build/ -**/.next/ -**/.cache/ -**/.turbo/ - -# Ignore log files -**/npm-debug.log -**/yarn-debug.log -**/yarn-error.log -**/pnpm-debug.log - -# Ignore lock files (optional if you don't want to commit them) -# Uncomment if you want to ignore lock files: -# **/package-lock.json -# **/yarn.lock -# **/pnpm-lock.yaml - -# Ignore dotenv files (if secrets are present) -**/.env -**/.env.*.local - -# Ignore coverage and test output -**/coverage/ -**/test-output/ -# Ignore everything in source directory except .gitkeep -source/* +# stackql +stackql +/.stackql + +main.zip + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# Virtual environments +.venv/ +venv/ +env/ +ENV/ + +# Hatch/Poetry build artifacts +dist/ +build/ +*.egg-info/ + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test cache and coverage +.coverage +.cache/ +pytest_cache/ +htmlcov/ +**/__pycache__ + +# IDE / editor settings +.vscode/ +.idea/ +*.swp +*.swo + +# Output directory +output/ + +# Misc +.DS_Store +*.log +*.tmp +*.bak + +# stackql +.stackql/ +stackql +stackql-zip +stackql-*.sh +.env +nohup.out + +# node +# Ignore node_modules in all directories +**/node_modules/ + +# Ignore build outputs in all directories +**/dist/ +**/build/ +**/.next/ +**/.cache/ +**/.turbo/ + +# Ignore log files +**/npm-debug.log +**/yarn-debug.log +**/yarn-error.log +**/pnpm-debug.log + +# Ignore lock files (optional if you don't want to commit them) +# Uncomment if you want to ignore lock files: +# **/package-lock.json +# **/yarn.lock +# **/pnpm-lock.yaml + +# Ignore dotenv files (if secrets are present) +**/.env +**/.env.*.local + +# Ignore coverage and test output +**/coverage/ +**/test-output/ + +# provider-dev test harness +provider-dev/test/.bin/ +provider-dev/test/.venv/ + +# meta-test output +meta-test.log +stackql-server.log diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..9ed67dc --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,85 @@ +# CLAUDE.md + +## Project + +This repository builds and documents the `netlify` provider for [StackQL](https://github.com/stackql/stackql), enabling SQL-based query and provisioning operations against the Netlify API - sites, deploys and deploy keys, builds and build hooks, environment variables, DNS zones and records, functions, forms and submissions, outgoing hooks, accounts (teams) and members, OAuth tickets, add-on services, split tests, dev servers, agent runners, the AI gateway and Netlify DB. + +The provider is a DIRECT build from Netlify's published Swagger 2.0 document (`https://open-api.netlify.com/swagger.json`, converted to OpenAPI 3.0 in a preprocessing step) using the `@stackql/provider-utils` pipeline. Netlify has no public GraphQL API, so there is no GraphQL merge step. The repository follows the same conventions as the sibling `stackql-provider-github` and `stackql-provider-clickhouse` projects (branch `feature/provider-dev`): Makefile-driven pipeline, deterministic mapping scripts, checked-in `all_services.csv`, meta-route gate, pytest smoke suite in exec and pgwire modes, Docusaurus 3.10 microsite on the shared config. + +## Spec source + +Netlify serves one unversioned Swagger 2.0 document (`info.version` 2.57.0 at the time of the refresh, 180 operations). `make spec` downloads it to `provider-dev/downloaded/swagger.json`; `make preprocess` (`provider-dev/scripts/preprocess.mjs`) converts it to OpenAPI 3.0 with `swagger2openapi`, fixes upstream path bugs (`/api/v1/sites/{site_id}/env` repeats the base path) and drops the three operations tagged `x-internal` (build plugin runs), writing `provider-dev/downloaded/openapi.json`. Both files are committed so a refresh is a reviewed diff; the scheduled `spec-drift` CI job opens an issue when the served document moves. + +## Design principles + +- **Terraform env var parity** - auth is `type: bearer` on `NETLIFY_API_TOKEN`, the same variable the official Terraform provider reads. No convenience env var exists for the team (`account_slug` / `account_id`) path parameters: any-sdk only resolves `x-stackQL-envVar` on OpenAPI server variables, and Netlify's API has a fixed host, so Terraform's `default_team_slug` / `default_team_id` have no StackQL equivalent (recorded in NOTES.md). +- **Services by API area, not by upstream tag** - the spec has 35 tags, several with one operation. `provider-dev/scripts/svc-discriminator.mjs` maps every operationId to one of 17 services (`sites`, `deploys`, `builds`, `env`, `dns`, `functions`, `forms`, `hooks`, `accounts`, `users`, `oauth`, `services`, `split_tests`, `dev_servers`, `agent_runners`, `ai_gateway`, `database`) and fails on an operation it does not know. +- **Every resource is selectable** - lifecycle operations (enable/disable/unlink a site, cancel/lock/unlock/restore/rollback a deploy, purge the cache, publish a split test, transfer a DNS zone, upload deploy files, ...) are `exec` methods on the resource they act on, never resources of their own. The meta-route gate reports zero non-selectable resources. +- **Bare arrays stay bare** - normalize wraps array-returning list responses in an envelope plus a Go-template transform; `post_normalize.mjs` reverts that for all 41 Netlify list endpoints because stackql iterates bare arrays natively (the github project made the same call). +- **Pagination is declared, not special-cased** - every service carries `x-stackQL-config.pagination` with the `Link` header `rel="next"` URL as the response token and `location: request` for the request token (the token is a full URL, so it replaces the request URL). `LIMIT` is not pushed down to `per_page`; pass `per_page` in the `WHERE` clause to control page size. +- **Predicate pushdown through declared parameters** - `WHERE` columns that match a path or query parameter (`site_id`, `account_id`, `state`, `branch`, `context_name`, `scope`, `name`, `filter`, `page`, `per_page`, ...) are sent to the API; anything else is filtered locally. +- **snake_case surface** - the API is already snake_case; the one camelCase path parameter (`addonName`) is renamed with `--update-path-param-names`. `config.snake_case_aliases` is not enabled (only two response fields would change). +- **Naive request body translation** - every POST/PUT/PATCH gets `requestBodyTranslate.algorithm: naive`, so request body fields are plain columns (no `data__` prefix). The bodies that are not flat objects (the env var create array, the opaque site metadata and add-on config objects, the three octet-stream deploy uploads) get a synthetic one-column request schema and a request transform in `post_process.mjs`. The two opaque object responses (`site_metadata`, `service_manifests`) get a one-column response schema and transform the same way. +- **PUT is `replace`, PATCH is `update`** - `updateSite` (PATCH) is `UPDATE`; `updateEnvVar` (PUT, full replacement) is `REPLACE` while `setEnvVarValue` (PATCH, one context value) is `UPDATE`. Method names reflect that (`update` vs `set_value`). +- **Two renamed env var fields** - the API's `values` is exposed as `env_values` (`values` is a SQL keyword the parser rejects even when quoted) and the `REPLACE` body key is `env_key` (Netlify requires the key in the body as well as the path, and a `SET key` is consumed by the path parameter). Everything else keeps its API name; see NOTES.md 7. + +## Toolchain rules + +- Use the **latest** `@stackql/provider-utils` (see [npm](https://www.npmjs.com/package/@stackql/provider-utils)); check for a newer version before starting work. +- Node.js >= 20, `type: module`. The two CLI entry points (`provider-dev-utils.mjs`, `docgen-utils.mjs`) are wrapped as npm scripts invoked through `node`, flags passed after npm's `--`. +- A local `stackql` binary is required for testing (`$STACKQL_BIN`, `./stackql`, or on `PATH`; `bin/start-server.sh` downloads one otherwise). Under WSL point `STACKQL_BIN` at the Linux binary. +- Run the pipeline from Linux, macOS or WSL - the server scripts need `pgrep`/`ps` and the smoke harness downloads a Linux binary. + +## Repository layout + +``` +Makefile build / test / docs targets (make help) +bin/ start-server.sh (registry-mode local|prod|dev), stop-server.sh, server-status.sh, test-meta-routes.cjs +provider-dev/ + downloaded/ swagger.json (upstream) + openapi.json (preprocessed), both committed + source/ split + normalized per-service specs (generated, committed) + config/ all_services.csv (durable operation -> resource map), servers.json, provider_config.json, service_config.json + scripts/ preprocess.mjs, svc-discriminator.mjs, post_normalize.mjs, map_operations.mjs, post_process.mjs + openapi/src/netlify/ generated provider (publish this) + docgen/provider-data/ headerContent1.txt / headerContent2.txt for the docs index page + test/ pytest smoke suite (conftest.py, test_tier1.py, tier1.yaml, provider.yaml) +website/ Docusaurus 3.10 microsite on the shared stackql/docusaurus-config +CLAUDE.md, NOTES.md, README.md +``` + +## Build pipeline + +Every step is deterministic and re-runnable. Manual decisions are rules in scripts, never hand edits to generated files. `make all` runs steps 0-7; `make help` lists the targets. + +0. `make spec` / `make preprocess` - download and convert the spec (see Spec source). +1. `make split` - `npm run split` with `--svc-discriminator function --svc-discriminator-fn provider-dev/scripts/svc-discriminator.mjs`. +2. `make normalize` - `npm run normalize` then `post_normalize.mjs` (bare-array revert). +3. `make mappings` - `npm run generate-mappings` (analyze keeps existing CSV rows) then `map_operations.mjs`: fills new operations from its table, prunes retired ones, resyncs moved paths, reports rows that disagree with the table, fails on unmapped operations. The CSV is the durable record of the wiring - do not rename resources or move operations between resources without a documented reason (that is a breaking change for users). +4. `make provider` - `npm run generate-provider` with `--naive-req-body-translate --update-path-param-names` and the three config JSON files, then `post_process.mjs`. +5. `make meta-test` - starts a local server, walks every `SHOW` / `DESCRIBE EXTENDED` route, stops the server; a failure stops `make all`. +6. `make docs` - docgen into `website/docs/` then `website/scripts/sanitize-docs.mjs` (MDX escaping). +7. `make docs-build` - `yarn build` in `website/` (vendors the shared config on `prebuild`). + +## Testing + +- **Meta-route gate** (no credentials): `make meta-test`. +- **Smoke tests** (live, `.env` with `NETLIFY_API_TOKEN`): `make smoke-test` runs `provider-dev/test/tier1.yaml` through `stackql exec` (`MODE=pgwire` or `MODE=both` for the Postgres-wire transport). `LIVE=1` runs the same suite against the published provider from the public registry (post-publish verification). The suite is reads plus one disposable environment variable lifecycle on the test site; Netlify's API is free to call and nothing billable is created. Target site and team are overridable with `TEST_SITE_NAME` / `TEST_ACCOUNT_SLUG` (defaults in `provider-dev/test/provider.yaml`). +- Never point the smoke suite at a production site you are not prepared to see a `STACKQL_SMOKE_*` environment variable appear on briefly. + +## Publishing + +Push `provider-dev/openapi/src/netlify` to `providers/src` in a feature branch of [`stackql-provider-registry`](https://github.com/stackql/stackql-provider-registry) and follow the registry release flow. Verify with `REGISTRY PULL netlify` against the dev registry, then `make smoke-test LIVE=1` once it reaches the public registry. + +## Writing conventions + +- README and docs copy: measured, precise, no hyperbole. No em dashes; use `-`. No characters not on a QWERTY keyboard; use `->` for arrows. No stacked headings. +- Sample queries are realistic and runnable against the test site; nested JSON fields use `json_extract`. +- Column names that are SQL keywords (`values` on env vars) are double-quoted in examples. + +## Non-negotiables + +1. Latest `@stackql/provider-utils`, always. +2. Deterministic scripts, never hand edits to `provider-dev/source`, `provider-dev/openapi` or `all_services.csv`. +3. `all_services.csv` is checked in; an operation moving to a different resource or a resource being renamed is a breaking change and needs a documented reason in NOTES.md. +4. Every regeneration is followed by `make meta-test` before commit; a live `make smoke-test` before publishing. +5. Smoke tests clean up everything they create. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8b6ec21 --- /dev/null +++ b/Makefile @@ -0,0 +1,192 @@ +# StackQL netlify provider - build, test and docs pipeline. +# +# `make all` runs the full chain (no live credentials needed): +# +# install npm install (@stackql/provider-utils, pgwire-lite, swagger2openapi) +# spec download the latest Netlify Swagger 2.0 document into +# provider-dev/downloaded/swagger.json (skipped if SPEC_REFRESH=0) +# preprocess Step 0: provider-dev/scripts/preprocess.mjs converts the +# Swagger 2.0 document to OpenAPI 3.0 (provider-utils expects +# OAS3), fixes upstream path bugs and drops x-internal +# operations -> provider-dev/downloaded/openapi.json +# split Step 1: split the spec into per-service yamls under +# provider-dev/source/ using the service map in +# provider-dev/scripts/svc-discriminator.mjs (FAILS on an +# operation the map does not know about) +# normalize Step 2: provider-utils normalize (allOf flatten, path-item +# parameter lift, opaque object lowering) followed by +# post_normalize.mjs, which reverts the bare-array envelope the +# normalizer wraps around Netlify's 41 array-returning list +# endpoints (stackql iterates bare arrays natively) +# mappings Step 3: refresh provider-dev/config/all_services.csv +# (analyze keeps existing rows) then map_operations.mjs fills in +# new operations from its mapping table, prunes retired +# operations and resyncs moved paths. FAILS if an operation has +# no mapping - add it to the script and re-run. +# provider Step 4: generate the provider tree (servers, bearer auth and +# the Link-header pagination service config from +# provider-dev/config/*.json) then post_process.mjs applies the +# request/response transforms the generator cannot express +# meta-test Step 5 gate: start a local server, walk every SHOW/DESCRIBE +# meta route, stop the server. Non-zero exit stops the build. +# docs Step 6: generate the Docusaurus markdown and sanitize it for +# MDX +# docs-build Step 7: yarn build of website/ (catches broken MDX) +# +# Live smoke tests hit api.netlify.com and need credentials, so they are NOT +# part of `all`. Populate .env (NETLIFY_API_TOKEN) then: +# +# make smoke-test # local provider, exec mode +# make smoke-test MODE=both # exec + pgwire +# make smoke-test LIVE=1 # the published provider from the public registry +# +# The smoke suite is read-mostly plus one disposable write lifecycle (an +# environment variable on the test site); it costs nothing - Netlify's API is +# free to call and nothing billable is created. +# +# Run from Linux, macOS or WSL (the server lifecycle scripts need a POSIX +# shell with pgrep/ps; the smoke-test harness downloads a Linux stackql). + +SHELL := /bin/bash + +PROVIDER := netlify +VERSION := v00.00.00000 +SPEC_URL := https://open-api.netlify.com/swagger.json +SPEC_FILE := provider-dev/downloaded/swagger.json +OAS_FILE := provider-dev/downloaded/openapi.json +SOURCE_DIR := provider-dev/source +CONFIG_DIR := provider-dev/config +OPENAPI_DIR := provider-dev/openapi +PROVIDER_DIR := $(OPENAPI_DIR)/src/$(PROVIDER)/$(VERSION) +WEBSITE_DIR := website +PORT ?= 5444 +MODE ?= exec +LIVE ?= 0 +VENV ?= provider-dev/test/.venv +SPEC_REFRESH ?= 1 +PYTHON ?= $(shell command -v python3 >/dev/null 2>&1 && echo python3 || echo python) + +.PHONY: all help install spec preprocess split normalize mappings provider build \ + meta-test smoke-test smoke-test-bootstrap docs docs-build docs-serve \ + start-server stop-server server-status clean + +all: install spec build meta-test docs docs-build + @echo "" + @echo "make all complete: provider + docs generated, meta-route gate passed." + @echo "Live smoke tests are run separately - see 'make help'." + +help: + @echo "Targets:" + @echo " all install + spec + build + meta-test + docs + docs-build" + @echo " install npm install" + @echo " spec download the latest Netlify Swagger document (SPEC_REFRESH=0 to skip)" + @echo " preprocess Swagger 2.0 -> OpenAPI 3.0, path fixes, drop x-internal ops" + @echo " split split the spec into per-service yamls (provider-dev/source)" + @echo " normalize provider-utils normalize + post_normalize.mjs" + @echo " mappings refresh all_services.csv + map_operations.mjs (fails on unmapped ops)" + @echo " provider generate the provider + post_process.mjs" + @echo " build preprocess + split + normalize + mappings + provider" + @echo " meta-test SHOW/DESCRIBE gate over every resource (no credentials needed)" + @echo " smoke-test live smoke queries via pytest (needs .env; MODE=exec|pgwire|both; LIVE=1 for the published provider)" + @echo " docs generate website/docs + sanitize for MDX" + @echo " docs-build yarn build in website/" + @echo " docs-serve yarn start in website/" + @echo " start-server / stop-server / server-status local stackql server on PORT=$(PORT)" + @echo " clean remove generated provider, split source and website build" + +install: + npm install + +spec: +ifeq ($(SPEC_REFRESH),1) + @mkdir -p $(dir $(SPEC_FILE)) + curl -sSL "$(SPEC_URL)" -o $(SPEC_FILE) + @node -e "const s=require('./$(SPEC_FILE)');console.log('spec version',s.info.version,'paths',Object.keys(s.paths).length)" +else + @echo "SPEC_REFRESH=0 - using cached $(SPEC_FILE)" +endif + +preprocess: + node provider-dev/scripts/preprocess.mjs $(SPEC_FILE) $(OAS_FILE) + +split: + rm -rf $(SOURCE_DIR)/* + npm run split -- \ + --provider-name $(PROVIDER) \ + --api-doc $(OAS_FILE) \ + --svc-discriminator function \ + --svc-discriminator-fn provider-dev/scripts/svc-discriminator.mjs \ + --output-dir $(SOURCE_DIR) \ + --overwrite + +normalize: + npm run normalize -- --api-dir $(SOURCE_DIR) + node provider-dev/scripts/post_normalize.mjs --api-dir $(SOURCE_DIR) + +mappings: + npm run generate-mappings -- --input-dir $(SOURCE_DIR) --output-dir $(CONFIG_DIR) + node provider-dev/scripts/map_operations.mjs --csv $(CONFIG_DIR)/all_services.csv --source-dir $(SOURCE_DIR) + +provider: + rm -rf $(OPENAPI_DIR)/* + npm run generate-provider -- \ + --provider-name $(PROVIDER) \ + --input-dir $(SOURCE_DIR) \ + --output-dir $(OPENAPI_DIR)/src/$(PROVIDER) \ + --config-path $(CONFIG_DIR)/all_services.csv \ + --servers $(CONFIG_DIR)/servers.json \ + --provider-config $(CONFIG_DIR)/provider_config.json \ + --service-config $(CONFIG_DIR)/service_config.json \ + --naive-req-body-translate \ + --update-path-param-names \ + --overwrite + node provider-dev/scripts/post_process.mjs --provider-dir $(PROVIDER_DIR) + +build: preprocess split normalize mappings provider + +# Go/no-go gate: the server is always torn down and the meta-test's exit +# status is preserved so a failure stops `make all`. +meta-test: + bash bin/start-server.sh --provider $(PROVIDER) --registry "$(CURDIR)/$(OPENAPI_DIR)" --port $(PORT) + node bin/test-meta-routes.cjs $(PROVIDER) --port $(PORT); status=$$?; bash bin/stop-server.sh --port $(PORT); exit $$status + +# The venv is recreated when it is missing or unusable (for example after the +# repo directory moved - venv shebangs embed the absolute path). +smoke-test-bootstrap: + bash provider-dev/test/bootstrap.sh + @if ! "$(VENV)/bin/pytest" --version >/dev/null 2>&1 || ! "$(VENV)/bin/python" -c "import yaml, psycopg" >/dev/null 2>&1; then \ + echo "creating venv at $(VENV)"; rm -rf "$(VENV)"; $(PYTHON) -m venv "$(VENV)"; \ + "$(VENV)/bin/pip" install -q -r provider-dev/test/requirements.txt; \ + fi + +# .env is sourced with CRLF stripped so a Windows-edited file works under WSL. +smoke-test: smoke-test-bootstrap + @test -f .env || (echo ".env not found - it must export NETLIFY_API_TOKEN"; exit 1) + set -a; source <(tr -d '\r' < .env); set +a; "$(VENV)/bin/pytest" provider-dev/test/ -v --mode=$(MODE) $(if $(filter 1,$(LIVE)),--live,) + +docs: + rm -rf $(WEBSITE_DIR)/docs/* + npm run generate-docs -- \ + --provider-name $(PROVIDER) \ + --provider-dir ./$(PROVIDER_DIR) \ + --output-dir ./$(WEBSITE_DIR) \ + --provider-data-dir ./provider-dev/docgen/provider-data + node $(WEBSITE_DIR)/scripts/sanitize-docs.mjs + +docs-build: + cd $(WEBSITE_DIR) && yarn install --silent && yarn build + +docs-serve: + cd $(WEBSITE_DIR) && yarn start + +start-server: + bash bin/start-server.sh --provider $(PROVIDER) --registry "$(CURDIR)/$(OPENAPI_DIR)" --port $(PORT) + +stop-server: + bash bin/stop-server.sh --port $(PORT) + +server-status: + bash bin/server-status.sh --port $(PORT) + +clean: + rm -rf $(OPENAPI_DIR)/* $(SOURCE_DIR)/* $(WEBSITE_DIR)/build provider-dev/test/.bin diff --git a/NOTES.md b/NOTES.md new file mode 100644 index 0000000..e2d6e48 --- /dev/null +++ b/NOTES.md @@ -0,0 +1,109 @@ +# Engineering Notes + +Findings from the 2026-08 refresh of the `netlify` provider (the previous build dated from April 2023 and predated every current convention: `@stackql/provider-utils` 0.4.x, tag-per-service split, no pagination config, no `replace` verb, 18 non-selectable resources, `NETLIFY_AUTH_TOKEN` auth). Sources: the upstream Swagger document (`info.version` 2.57.0, fetched 2026-08-28), the any-sdk and stackql source trees (`any-sdk` HEAD `f5d5ba6`, `stackql` HEAD `ee0dd87` pinning `any-sdk v0.5.4-alpha01`, verified identical for every behaviour below), live calls against `api.netlify.com`, and the github / clickhouse sibling builds. + +## 1. Spec source and preprocessing + +Netlify publishes a Swagger 2.0 document, not OpenAPI 3. `@stackql/provider-utils` `split` does not convert (it copies `openapi: apiDoc.openapi || "3.0.0"` and expects `components`), so `provider-dev/scripts/preprocess.mjs` runs `swagger2openapi` first. Two upstream defects are corrected there: + +- `GET /api/v1/sites/{site_id}/env` repeats the base path (`basePath` is already `/api/v1`); the key is rewritten to `/sites/{site_id}/env`. +- Three operations are tagged `x-internal` (`updatePlugin`, `getLatestPluginRuns`, `createPluginRun` - build plugin runs, used by Netlify's own build system). They are dropped rather than exposed. + +Result: 113 paths, 177 operations, 103 schemas. Both `swagger.json` and the preprocessed `openapi.json` are committed so a refresh is a reviewed diff. + +## 2. Service split + +The 35 upstream tags are too fine (`assetPublicSignature`, `buildLogMsg`, `hookType` each carry one operation) so the split uses a function discriminator keyed by operationId (`provider-dev/scripts/svc-discriminator.mjs`) producing 17 services. An operationId the map does not know fails the split - a spec refresh that adds endpoints is a deliberate decision. + +## 3. Pagination (Link header) + +Netlify paginates with `page` / `per_page` query parameters and an RFC 5988 `Link` header (`rel="next"`, `rel="last"`), 100 items per page by default. Verified against the any-sdk source: + +- `internal/anysdk/pagination.go:137-147` - the header transformer returns the **full next-page URL** from the `Link` header. +- `internal/anysdk/http_armoury_params.go:114-153` - only `requestToken.location: request` replaces the request URL; `location: query` would stuff the URL into a query parameter. + +So `provider-dev/config/service_config.json` declares, at the root of every service document (the only place `x-stackQL-config` is read - `internal/anysdk/service.go:203-206`): + +```yaml +x-stackQL-config: + pagination: + requestToken: {key: '', location: request} + responseToken: {key: Link, location: header} +``` + +The docs example in `any-sdk/docs/provider_spec.md:685-696` (`requestToken: {key: page, location: query}` + `algorithm: link_header_next`) is wrong on both counts; `link_header_next` is not a registered algorithm. Provider-level `config.pagination.requestToken/responseToken` never resolve (copy-paste bug at `internal/anysdk/operation_store.go:622-626` and `652-656`), which is why the config is injected per service. Live proof: `SELECT count(*) FROM netlify.sites.sites WHERE per_page = 1` returns the same count as the unpaged listing (the smoke case `pagination_follows_link_header`). + +`LIMIT` is not pushed to `per_page` (no `queryParamPushdown.top`): the page loop does not stop early once a LIMIT is satisfied, so a smaller page size only multiplies requests (same decision as the github build). Pass `per_page` in the `WHERE` clause to control page size. + +## 4. Bare-array list responses + +41 list endpoints return a top-level JSON array. `normalize` (provider-utils 0.7.x) wraps those in `{: [...]}` plus a Go-template transform; `post_normalize.mjs` (copied from the github build) reverts that because stackql iterates bare arrays natively and the transform is runtime cost for no gain. Verified live on every list resource. + +## 5. Request bodies the naive translator cannot route + +`--naive-req-body-translate` puts `requestBodyTranslate.algorithm: naive` on every POST/PUT/PATCH, so body fields are plain columns (no `data__` prefix). The translator builds its matchers only from the **top-level properties of the operation's request body schema** (`internal/anysdk/operation_store.go:1092-1116`); with none, nothing reaches the body. Five operations are affected and handled in `post_process.mjs`: + +| Operation | Body shape | Surface | +|---|---|---| +| `createEnvVars` | bare array of env vars | column `env_vars` (JSON array), transform `{{ toJson .env_vars }}` | +| `updateSiteMetadata` | opaque object | column `metadata`, transform `{{ toJson .metadata }}` | +| `createServiceInstance` / `updateServiceInstance` | opaque object | column `config` | +| `uploadDeployFile` / `uploadDeployFunction` / `uploadDeployEdgeFunction` | `application/octet-stream` | column `file_body`, transform `{{ .file_body }}` (`golang_template_json_v0.1.0`), `x-stackQL-stringOnly` | + +Wire-verified finding: setting only `request.schema_override` is **not** enough - the matchers come from the operation's own `requestBody`, so with the override alone the column was routed as a server parameter and stackql sent `null` (`http request body = 'null'`). `post_process.mjs` therefore rewrites the operation's `requestBody` to the synthetic schema as well; after that the wire body was the JSON array and the create succeeded. + +Template facts (`pkg/stream_transform/template_stream_transform.go`): for `golang_template_json_*` types `.` is the parsed body map; `toJson` / `kindOf` exist only from `v0.2.0` upward (`v0.1.0` has neither). A declared request transform always runs, even on an empty body, and it also fires for `EXEC ... @@json` where `.` is the parsed `@@json` literal (`internal/anysdk/request.go:182-188`). + +## 6. Opaque object responses + +`normalize` lowers propertyless `type: object` schemas to `type: string`, which is right for nested fields but leaves `getSiteMetadata` and `showServiceManifest` with no columns (`DESCRIBE` fails with `schema unsuitable for select query`). `post_process.mjs` wraps each under a single JSON column (`metadata`, `manifest`) with a response transform and `schema_override`; `SELECT metadata FROM netlify.sites.site_metadata WHERE site_id = ...` returns the object. + +## 7. `values` is a SQL keyword + +The env var object's context values live in a field named `values`. The stackql parser rejects it in a select list and in `REPLACE ... SET`, with or without quoting (`"values"`, backticks and `[values]` all fail). The read methods therefore rename it to `env_values` in the response (transform + renamed schema, so `DESCRIBE` agrees) and the PUT method accepts `env_values` and emits `values` on the wire. `SELECT *` on the resource shows `env_values`. + +The PUT has a second wrinkle: Netlify requires `key` in the body as well as in the path (`400 Invalid request structure` without it, verified with curl), but stackql merges SET and WHERE columns into one parameter map, so a `SET key = ...` is consumed by the `{key}` path parameter and never reaches the body (wire-verified: `"key": null`). The body key is therefore a distinct `env_key` column: `REPLACE netlify.env.env_vars SET env_key = 'X', env_values = '[...]' WHERE account_id = ... AND key = 'X'`. These are the two places the SQL surface differs from the API field names. + +## 8. Type-blind JSON coercion of string body values + +`internal/anysdk/shims.go:160-209`: every string body value is tried as JSON first (object, then array) regardless of the property's declared type; only `x-stackQL-stringOnly: true` opts out. A raw file body or an env var value that happens to be valid JSON would be sent as an object. `post_process.mjs` marks `file_body` on the three uploads and `value` on `setEnvVarValue` (and the nested `values[].value` in the synthetic env var schemas) as string-only. + +## 9. Lifecycle operations are `exec` methods, not resources + +Method dispatch for `EXEC` is by method key (`stackql/internal/stackql/taxonomy/hierarchy.go:334-341`); the `exec` verb only affects `SHOW METHODS`. A method listed under `methods:` but not referenced from any `sqlVerbs` array is EXEC-able, and the generator writes exactly that for `stackql_verb = exec`. So `sites.enable/disable/unlink_repo/purge_cache`, `deploys.cancel/restore/rollback/lock/unlock/upload_*`, `builds.notify_start/update_log`, `hooks.enable`, `split_tests.publish/unpublish`, `dns_zones.transfer`, `tickets.exchange`, `branches.reset`, `migrations.run`, `snapshots.restore`, the agent runner actions and the dev server actions all sit on their parent resource. Zero resources are non-selectable (the 2023 build had 18). An explicit `exec:` key in `sqlVerbs` would fail `anysdk aot` schema validation, so none is written. + +## 10. Verb mapping + +PATCH -> `update`, PUT -> `replace`, POST -> `insert`, DELETE -> `delete`. Netlify uses PUT for most edits (build hooks, hooks, snippets, deploys, members, accounts), so those are `REPLACE` statements; `updateSite` (PATCH) is `UPDATE`. Within a resource, methods on one verb have distinct required-parameter signatures (`deploys.get` = site_id + deploy_id, `deploys.get_by_id` = deploy_id; `env_vars.delete` = account_id + key, `env_vars.delete_value` = + id). The generator orders each verb's methods most-specific first. + +## 11. No env var default for the team path parameters + +Terraform's `default_team_slug` / `default_team_id` have no StackQL equivalent: `x-stackQL-envVar` is consumed only for OpenAPI server variables (`internal/anysdk/server.go:29-59`), and Netlify's API is served from a single fixed host, so `account_slug` / `account_id` cannot be defaulted from the environment. Terraform's `NETLIFY_API_ENDPOINT` override was also not modelled as a server variable: it exists for Netlify's internal testing, and a templated host would surface as a parameter on every method in the generated docs. + +## 12. Casing + +The API is already snake_case in every response field and query parameter (the two exceptions, `scannedFilesCount` / `secretsScanMatches`, are inside the deploy validations report). The single camelCase path parameter, `addonName`, is renamed to `addon_name` by `--update-path-param-names`. `config.snake_case_aliases` is deliberately not enabled - a runtime column-renaming pass for two nested fields is not worth the surface change. Query parameters keep their wire names (`deploy-previews`, `latest-published`). + +## 13. Auth + +`type: bearer` on `NETLIFY_API_TOKEN` (Terraform parity; the 2023 build used `NETLIFY_AUTH_TOKEN`, the Netlify CLI's name). Verified in `pkg/auth_util/auth_util.go:370-387` that `bearer` hardcodes the `Authorization: Bearer ` header. The env var rename is a breaking change for existing users of the old provider; `--auth='{"netlify":{"type":"bearer","credentialsenvvar":"NETLIFY_AUTH_TOKEN"}}'` restores the old name. + +## 14. Breaking changes from the 2023 provider + +Resource and service names changed wholesale (the old build had one service per upstream tag with resources such as `site.sites_unlink_repo`, `dns_zone.dns_zones_dns_records`, `deploy.sites_deploys`). Method names are now `list`/`get`/`create`/`update`/`delete` style instead of raw operationIds. New surfaces since 2023: environment variables, cache purge, dev servers and dev server hooks, agent runners, the AI gateway, Netlify DB. `all_services.csv` is now committed as the durable record of the wiring; future refreshes must not move an operation to a different resource or rename a resource without a note here. + +## 15. Live verification (2026-08-28) + +Against the `jeffreyaven` team (Personal plan) and the `sqlpedia` site, through both `stackql exec` and the pgwire server: + +- reads across sites, deploys (list, get, get_by_id, `state` pushdown), builds, build hooks, SSL certificates, site metadata (transform), env vars (`env_values` rename), DNS zones and records, accounts, members, hook types, add-on services, current user +- pagination via `per_page = 1` +- env var lifecycle: `INSERT` (array body via transform) -> `SELECT` -> `UPDATE` (PATCH) -> `REPLACE` (PUT, `env_values`) -> `json_each` -> `DELETE` -> gone +- `EXEC netlify.sites.sites.purge_cache` + +Netlify returns `403 Upgrade your Netlify account to set specific scopes` when `scopes` is supplied on a Personal plan, so the smoke suite omits it. `service_manifests.get` for some add-ons returns an upstream 500 (`no address for ...execute-api...`), unrelated to the provider. + +## Open + +- `builds.create` (`POST /sites/{site_id}/builds`) declares `multipart/form-data` with an optional `zip` file. It is mapped as `insert` but has not been exercised live (it would trigger a real build); confirm the no-body form (`INSERT ... (site_id, clear_cache)`) once a throwaway site with a linked repo is available. +- `deploys.create` with a `files` digest map and the three `upload_*` methods form the manual deploy flow; the octet-stream upload path is wired the same way as the cloudflare KV write but has not been round-tripped live. diff --git a/README.md b/README.md index d7831c5..f4029fd 100644 --- a/README.md +++ b/README.md @@ -1,264 +1,164 @@ -I'll create a README for a Netlify provider for StackQL, following the same structure as the previous examples. - -# `netlify` provider for [`stackql`](https://github.com/stackql/stackql) - -This repository is used to generate and document the `netlify` provider for StackQL, allowing you to query and manipulate Netlify resources using SQL-like syntax. The provider is built using the `@stackql/provider-utils` package, which provides tools for converting OpenAPI specifications into StackQL-compatible provider schemas. - -## Prerequisites - -To use the Netlify provider with StackQL, you'll need: - -1. A Netlify account with appropriate API credentials -2. Netlify personal access token with sufficient permissions for the resources you want to access -3. StackQL CLI installed on your system (see [StackQL](https://github.com/stackql/stackql)) - -## 1. Download the Open API Specification - -First, download the Netlify API OpenAPI specification: - -```bash -rm -rf provider-dev/downloaded/* -curl -L https://open-api.netlify.com/swagger.json \ --o provider-dev/downloaded/openapi.json -``` - -## 2. Split into Service Specs - -Next, split the monolithic OpenAPI specification into service-specific files: - -```bash -rm -rf provider-dev/source/* -npm run split -- \ - --provider-name netlify \ - --api-doc provider-dev/downloaded/openapi.json \ - --svc-discriminator path \ - --output-dir provider-dev/source \ - --overwrite \ - --svc-name-overrides "$(cat < preprocess -> split -> normalize -> mappings -> provider -> meta-test -> docs -> docs-build +make smoke-test # live queries against api.netlify.com (needs .env, see below) +``` + +`make help` lists every target. The stages are described below and can be run individually. + +## Build pipeline + +| Target | What it does | +|--------|--------------| +| `make spec` | Downloads the latest Swagger document to `provider-dev/downloaded/swagger.json`. Set `SPEC_REFRESH=0` to build from the committed copy. | +| `make preprocess` | `provider-dev/scripts/preprocess.mjs` converts Swagger 2.0 to OpenAPI 3.0 (`swagger2openapi`), fixes the upstream path that repeats the `/api/v1` base path and drops the three `x-internal` build-plugin operations, writing `provider-dev/downloaded/openapi.json`. | +| `make split` | Splits the spec into 17 per-service yamls under `provider-dev/source/` using the operationId -> service map in `provider-dev/scripts/svc-discriminator.mjs` (fails on an unknown operation). | +| `make normalize` | Runs the provider-utils normalizer (allOf flattening, path-item parameter lifting, opaque object lowering) and then `post_normalize.mjs`, which reverts the bare-array envelope the normalizer wraps around Netlify's 41 array-returning list endpoints - stackql iterates bare arrays natively. | +| `make mappings` | Regenerates `provider-dev/config/all_services.csv`. `analyze` preserves existing rows; `provider-dev/scripts/map_operations.mjs` fills in operations added upstream from its mapping table, prunes retired operations, resyncs moved paths and reports rows that disagree with the table. The target fails if any operation is unmapped. | +| `make provider` | Generates the provider under `provider-dev/openapi/src/netlify/v00.00.00000/` from the CSV with `servers.json`, `provider_config.json` (bearer auth) and `service_config.json` (Link-header pagination), then runs `post_process.mjs` for the request/response transforms the generator cannot express (see below). | +| `make build` | `preprocess` + `split` + `normalize` + `mappings` + `provider`. | +| `make meta-test` | Starts a local `stackql srv` against the generated provider, walks every `SHOW SERVICES` / `SHOW RESOURCES` / `SHOW METHODS` / `DESCRIBE EXTENDED` route and stops the server. No credentials needed; a non-zero exit stops `make all`. | +| `make docs` | Generates the Docusaurus markdown into `website/docs/` from the provider plus `provider-dev/docgen/provider-data/headerContent{1,2}.txt`, then runs `website/scripts/sanitize-docs.mjs` (MDX escaping). | +| `make docs-build` / `make docs-serve` | `yarn build` / `yarn start` in `website/` (the shared `stackql/docusaurus-config` is vendored on `prebuild`). | +| `make smoke-test` | Live smoke suite (see [Testing](#testing)). `MODE=exec` (default), `pgwire` or `both`; `LIVE=1` targets the published provider. | +| `make clean` | Removes the generated provider, split source, website build and the downloaded test binary. | + +Manual decisions live in scripts, not in hand edits of generated files, so a refresh is a reviewed diff: rerun `make build`, review the changes to `all_services.csv` and `provider-dev/openapi/`, and add mappings for anything `make split` or `make mappings` reports as unmapped. `all_services.csv` is checked in as the durable record of which operation backs which resource and method; renaming a resource or moving an operation between resources is a breaking change for users and needs a note in `NOTES.md`. + +## Authentication + +The provider uses a bearer token read from `NETLIFY_API_TOKEN`, the same variable the official Netlify Terraform provider uses: + +```bash +export NETLIFY_API_TOKEN= +``` + +Create a token under **User settings > Applications > Personal access tokens** in the Netlify app. To use a different variable name (for example the Netlify CLI's `NETLIFY_AUTH_TOKEN`): + +```bash +stackql shell --auth='{"netlify":{"type":"bearer","credentialsenvvar":"NETLIFY_AUTH_TOKEN"}}' +``` + +## Pagination and pushdown + +- **Pagination** is declared on every service via `x-stackQL-config.pagination` (from `provider-dev/config/service_config.json`): the response token is the `Link` header's `rel="next"` URL and the request token replaces the whole request URL, so multi-page listings are traversed automatically up to stackql's `--http.response.pageLimit` (default 20 pages). +- **Predicate pushdown** works through operation parameters: any `WHERE` column that matches a declared path or query parameter (`site_id`, `account_id`, `state`, `branch`, `name`, `filter`, `context_name`, `scope`, `page`, `per_page`, ...) is sent to the API rather than filtered locally. Other columns are filtered by the SQL engine after the rows are fetched. +- `LIMIT` is not pushed to `per_page`; use `per_page` in the `WHERE` clause to control page size. + +## Design notes + +- **Services by API area.** Netlify's 35 tags are regrouped into `sites`, `deploys`, `builds`, `env`, `dns`, `functions`, `forms`, `hooks`, `accounts`, `users`, `oauth`, `services`, `split_tests`, `dev_servers`, `agent_runners`, `ai_gateway` and `database`. +- **Every resource is selectable.** Lifecycle operations are `EXEC` methods on the resource they act on (`sites.enable`, `deploys.lock`, `deploys.rollback`, `sites.purge_cache`, `split_tests.publish`, `dns_zones.transfer`, ...). `SHOW METHODS IN netlify.deploys.deploys` lists them with their parameters. +- **Verbs.** PATCH is `UPDATE`, PUT is `REPLACE`, POST is `INSERT`. Request body fields are plain columns (no `data__` prefix). +- **Transforms** (`provider-dev/scripts/post_process.mjs`): the env var create endpoint takes a JSON array (column `env_vars`); site metadata and add-on instance config take opaque objects (`metadata`, `config`); the three deploy upload methods take a raw body (`file_body`); the opaque `site_metadata` and `service_manifests` responses are wrapped under one JSON column; and the env var `values` field is exposed as `env_values` because `values` is a SQL keyword the parser rejects even when quoted. +- **No team default from the environment.** Terraform's `default_team_slug` has no equivalent - any-sdk resolves `x-stackQL-envVar` only on server variables and Netlify's host is fixed - so `account_slug` / `account_id` are supplied per query. + +`NOTES.md` records the evidence behind each of these. + +## Testing + +### Meta-route gate (no credentials) + +```bash +make meta-test +``` + +### Live smoke tests + +`provider-dev/test/` holds a pytest suite driven by `tier1.yaml`: reads across the main resources, a pagination check, an environment variable lifecycle (`INSERT` -> `SELECT` -> `UPDATE` -> `REPLACE` -> `DELETE`) on the test site and one `EXEC` (cache purge). Nothing billable is created; Netlify's API is free to call. The same suite runs through `stackql exec` and through a `stackql srv` Postgres-wire session. + +```bash +cat > .env <<'EOF' +NETLIFY_API_TOKEN= +EOF + +make smoke-test # local build, exec mode +make smoke-test MODE=both # exec + pgwire +make smoke-test LIVE=1 # the published provider from the public registry +``` + +The target downloads a Linux `stackql` into `provider-dev/test/.bin/` and creates a venv on first run. The test team and site are overridable with `TEST_ACCOUNT_SLUG` and `TEST_SITE_NAME` (defaults in `provider-dev/test/provider.yaml`); ids are resolved by query at session start. See `provider-dev/test/README.md` for the YAML shape and how to add cases. + +### Ad hoc queries + +```bash +PROVIDER_REGISTRY_ROOT_DIR="$(pwd)/provider-dev/openapi" +REG_STR='{"url": "file://'${PROVIDER_REGISTRY_ROOT_DIR}'", "localDocRoot": "'${PROVIDER_REGISTRY_ROOT_DIR}'", "verifyConfig": {"nopVerify": true}}' +stackql shell --registry="${REG_STR}" +``` + +```sql +SELECT id, name, url, account_slug, state +FROM netlify.sites.sites; + +SELECT id, state, branch, context, published_at +FROM netlify.deploys.deploys +WHERE site_id = '' AND state = 'ready'; + +SELECT key, scopes, env_values +FROM netlify.env.env_vars +WHERE account_id = '' AND site_id = ''; +``` + +More examples, including DNS across every zone, deploy success rates and the mutation grammar, are in the [provider docs](https://netlify-provider.stackql.io) (source: `provider-dev/docgen/provider-data/headerContent2.txt`). + +## Publishing the provider + +Push the `provider-dev/openapi/src/netlify` directory to `providers/src` in a feature branch of [`stackql-provider-registry`](https://github.com/stackql/stackql-provider-registry) and follow the [registry release flow](https://github.com/stackql/stackql-provider-registry/blob/dev/docs/build-and-deployment.md). To verify the dev registry build: + +```bash +export DEV_REG="{ \"url\": \"https://registry-dev.stackql.app/providers\" }" +stackql --registry="${DEV_REG}" shell +``` + +```sql +registry pull netlify; +``` + +Once the provider reaches the public registry, `make smoke-test LIVE=1` runs the same smoke suite against it. + +## Publishing the docs + +`make docs` regenerates `website/docs/`; commit the regenerated tree. Doc pages show a "Last updated" date taken from git history (`showLastUpdateTime` in `website/docusaurus.config.js`), so pages carry the date of the commit that last regenerated them. Pushes to `main` that touch `website/**` deploy to GitHub Pages via `.github/workflows/prod-web-deploy.yml`; the custom domain is `netlify-provider.stackql.io` (CNAME to `stackql.github.io`). + +## Repository layout + +``` +Makefile build / test / docs targets +bin/ server lifecycle scripts, meta-route test +provider-dev/ + downloaded/ swagger.json (upstream) + openapi.json (preprocessed) + source/ split + normalized per-service specs (generated) + config/ all_services.csv mappings, servers / auth / pagination json + scripts/ preprocess, svc-discriminator, post_normalize, map_operations, post_process + openapi/src/netlify/ generated provider (publish this) + docgen/provider-data/ headerContent1.txt / headerContent2.txt for the docs index page + test/ pytest smoke tests +website/ Docusaurus microsite +CLAUDE.md working conventions for the build +NOTES.md engineering notes and evidence +``` + +## License + +MIT + +## Contributing + +Contributions are welcome. Please open a pull request. diff --git a/bin/generate-docs.mjs b/bin/generate-docs.mjs deleted file mode 100644 index 4be9b84..0000000 --- a/bin/generate-docs.mjs +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env node - -import { docgen } from '@stackql/provider-utils'; - -async function generateDocs() { - // Get command line arguments - const args = process.argv.slice(2); - const getArg = (flag) => { - const index = args.indexOf(flag); - return index !== -1 ? args[index + 1] : null; - }; - - const providerName = getArg('--provider-name'); - const providerDir = getArg('--provider-dir'); - const outputDir = getArg('--output-dir'); - const providerDataDir = getArg('--provider-data-dir'); - - if (!providerName || !providerDir || !outputDir || !providerDataDir) { - console.error('Error: Missing required arguments'); - console.error('Usage: node generate-docs.mjs --provider-name NAME --provider-dir DIR --output-dir DIR --provider-data-dir DIR'); - process.exit(1); - } - - try { - console.log(`Generating docs for provider: ${providerName}`); - console.log(`Provider directory: ${providerDir}`); - console.log(`Output directory: ${outputDir}`); - console.log(`Provider data directory: ${providerDataDir}`); - - const result = await docgen.generateDocs({ - providerName, - providerDir, - outputDir, - providerDataDir - }); - - console.log('Documentation generated successfully:', result); - } catch (error) { - console.error('Error generating documentation:', error); - process.exit(1); - } -} - -generateDocs(); \ No newline at end of file diff --git a/bin/generate-docs.sh b/bin/generate-docs.sh deleted file mode 100644 index 0602e15..0000000 --- a/bin/generate-docs.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env bash - -# Exit on error -set -e - -# Get the script directory for relative paths -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" - -# Parse command line arguments -while [[ $# -gt 0 ]]; do - case $1 in - --provider-name) - PROVIDER_NAME="$2" - shift 2 - ;; - --provider-dir) - PROVIDER_DIR="$2" - shift 2 - ;; - --output-dir) - OUTPUT_DIR="$2" - shift 2 - ;; - --provider-data-dir) - PROVIDER_DATA_DIR="$2" - shift 2 - ;; - --help) - echo "Usage: generate-docs.sh [OPTIONS]" - echo "" - echo "Options:" - echo " --provider-name NAME Provider name (default: snowflake)" - echo " --provider-dir DIR Provider directory path (default: $PROVIDER_DIR)" - echo " --output-dir DIR Output directory for docs (default: $OUTPUT_DIR)" - echo " --provider-data-dir DIR Provider data directory (default: $PROVIDER_DATA_DIR)" - echo " --help Show this help message" - exit 0 - ;; - *) - echo "Unknown option: $1" - echo "Use --help for usage information" - exit 1 - ;; - esac -done - -echo "📚 Generating documentation using @stackql/provider-utils..." - -# Run the Node.js script with arguments -node --experimental-modules "$SCRIPT_DIR/generate-docs.mjs" \ - --provider-name "$PROVIDER_NAME" \ - --provider-dir "$PROVIDER_DIR" \ - --output-dir "$OUTPUT_DIR" \ - --provider-data-dir "$PROVIDER_DATA_DIR" - -# Check if command succeeded -if [ $? -ne 0 ]; then - echo "❌ Documentation generation failed" - exit 1 -fi - -echo "✅ Documentation generated successfully" \ No newline at end of file diff --git a/bin/generate-mappings.mjs b/bin/generate-mappings.mjs deleted file mode 100644 index f711fbc..0000000 --- a/bin/generate-mappings.mjs +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env node - -import { providerdev } from '@stackql/provider-utils'; - -async function generateMappings() { - // Get command line arguments - const args = process.argv.slice(2); - const getArg = (flag) => { - const index = args.indexOf(flag); - return index !== -1 ? args[index + 1] : null; - }; - - const providerName = getArg('--provider-name'); - const inputDir = getArg('--input-dir'); - const outputDir = getArg('--output-dir'); - const verbose = args.includes('--verbose'); - - if (!providerName || !inputDir || !outputDir) { - console.error('Error: Missing required arguments'); - console.error('Usage: node generate-mappings.mjs --provider-name NAME --input-dir DIR --output-dir DIR [--verbose]'); - process.exit(1); - } - - try { - console.log(`Analyzing OpenAPI specs for provider: ${providerName}`); - console.log(`Input directory: ${inputDir}`); - console.log(`Output directory: ${outputDir}`); - - const result = await providerdev.analyze({ - inputDir, - outputDir, - verbose - }); - - console.log('Analysis completed successfully:', result); - } catch (error) { - console.error('Error analyzing OpenAPI specs:', error); - process.exit(1); - } -} - -generateMappings(); \ No newline at end of file diff --git a/bin/generate-mappings.sh b/bin/generate-mappings.sh deleted file mode 100644 index a4921c1..0000000 --- a/bin/generate-mappings.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env bash - -# Exit on error -set -e - -# Get the script directory for relative paths -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" - -# Default values -PROVIDER_NAME="" -INPUT_DIR="" -OUTPUT_DIR="" -VERBOSE=false - -# Parse command line arguments -while [[ $# -gt 0 ]]; do - case $1 in - --provider-name) - PROVIDER_NAME="$2" - shift 2 - ;; - --input-dir) - INPUT_DIR="$2" - shift 2 - ;; - --output-dir) - OUTPUT_DIR="$2" - shift 2 - ;; - --verbose) - VERBOSE=true - shift - ;; - --help) - echo "Usage: generate-mappings.sh [OPTIONS]" - echo "" - echo "Options:" - echo " --provider-name NAME Provider name (required)" - echo " --input-dir DIR Input directory containing split OpenAPI files (required)" - echo " --output-dir DIR Output directory for mapping file (required)" - echo " --verbose Enable verbose output" - echo " --help Show this help message" - exit 0 - ;; - *) - echo "Unknown option: $1" - echo "Use --help for usage information" - exit 1 - ;; - esac -done - -# Check required arguments -if [ -z "$PROVIDER_NAME" ] || [ -z "$INPUT_DIR" ] || [ -z "$OUTPUT_DIR" ]; then - echo "Error: Missing required arguments" - echo "Use --help for usage information" - exit 1 -fi - -echo "🔍 Analyzing OpenAPI specs to generate mappings..." -echo "Provider: $PROVIDER_NAME" -echo "Input Directory: $INPUT_DIR" -echo "Output Directory: $OUTPUT_DIR" - -# Build command arguments -ARGS=("--provider-name" "$PROVIDER_NAME" "--input-dir" "$INPUT_DIR" "--output-dir" "$OUTPUT_DIR") - -if [ "$VERBOSE" = true ]; then - ARGS+=("--verbose") - echo "Verbose: Yes" -fi - -# Run the Node.js script with arguments -node --experimental-modules "$SCRIPT_DIR/generate-mappings.mjs" "${ARGS[@]}" - -# Check if command succeeded -if [ $? -ne 0 ]; then - echo "❌ Mapping generation failed" - exit 1 -fi - -echo "✅ Mapping file generated successfully at: $OUTPUT_DIR/all_services.csv" \ No newline at end of file diff --git a/bin/generate-provider.mjs b/bin/generate-provider.mjs deleted file mode 100644 index 501eead..0000000 --- a/bin/generate-provider.mjs +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env node - -import { providerdev } from '@stackql/provider-utils'; - -async function generateProvider() { - // Get command line arguments - const args = process.argv.slice(2); - const getArg = (flag) => { - const index = args.indexOf(flag); - return index !== -1 ? args[index + 1] : null; - }; - - const providerName = getArg('--provider-name'); - const inputDir = getArg('--input-dir'); - const outputDir = getArg('--output-dir'); - const configPath = getArg('--config-path'); - const servers = getArg('--servers'); - const providerConfig = getArg('--provider-config'); - const skipFiles = getArg('--skip-files')?.split(',') || []; - const overwrite = args.includes('--overwrite'); - const verbose = args.includes('--verbose'); - - if (!providerName || !inputDir || !outputDir || !configPath) { - console.error('Error: Missing required arguments'); - console.error('Usage: node generate-provider.mjs --provider-name NAME --input-dir DIR --output-dir DIR --config-path PATH [--servers JSON] [--provider-config JSON] [--skip-files LIST] [--overwrite] [--verbose]'); - process.exit(1); - } - - try { - console.log(`Generating StackQL provider extensions for: ${providerName}`); - console.log(`Input directory: ${inputDir}`); - console.log(`Output directory: ${outputDir}`); - console.log(`Config path: ${configPath}`); - - if (servers) { - console.log(`Custom servers configuration provided`); - } - - if (providerConfig) { - console.log(`Custom provider configuration provided`); - } - - if (skipFiles.length > 0) { - console.log(`Skipping files: ${skipFiles.join(', ')}`); - } - - const result = await providerdev.generate({ - inputDir, - outputDir, - configPath, - providerId: providerName, - servers, - providerConfig, - skipFiles, - overwrite, - verbose - }); - - console.log('Provider generation completed successfully:', result); - } catch (error) { - console.error('Error generating provider extensions:', error); - process.exit(1); - } -} - -generateProvider(); \ No newline at end of file diff --git a/bin/generate-provider.sh b/bin/generate-provider.sh deleted file mode 100644 index 429933a..0000000 --- a/bin/generate-provider.sh +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env bash - -# Exit on error -set -e - -# Get the script directory for relative paths -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" - -# Default values -PROVIDER_NAME="" -INPUT_DIR="" -OUTPUT_DIR="" -CONFIG_PATH="" -SERVERS="" -PROVIDER_CONFIG="" -SKIP_FILES="" -OVERWRITE=false -VERBOSE=false - -# Parse command line arguments -while [[ $# -gt 0 ]]; do - case $1 in - --provider-name) - PROVIDER_NAME="$2" - shift 2 - ;; - --input-dir) - INPUT_DIR="$2" - shift 2 - ;; - --output-dir) - OUTPUT_DIR="$2" - shift 2 - ;; - --config-path) - CONFIG_PATH="$2" - shift 2 - ;; - --servers) - SERVERS="$2" - shift 2 - ;; - --provider-config) - PROVIDER_CONFIG="$2" - shift 2 - ;; - --skip-files) - SKIP_FILES="$2" - shift 2 - ;; - --overwrite) - OVERWRITE=true - shift - ;; - --verbose) - VERBOSE=true - shift - ;; - --help) - echo "Usage: generate-provider.sh [OPTIONS]" - echo "" - echo "Options:" - echo " --provider-name NAME Provider name/ID (required)" - echo " --input-dir DIR Input directory containing split OpenAPI files (required)" - echo " --output-dir DIR Output directory for provider (required)" - echo " --config-path PATH Path to CSV mapping file (required)" - echo " --servers JSON JSON string with servers configuration" - echo " --provider-config JSON JSON string with provider configuration" - echo " --skip-files LIST Comma-separated list of files to skip" - echo " --overwrite Overwrite existing files" - echo " --verbose Enable verbose output" - echo " --help Show this help message" - exit 0 - ;; - *) - echo "Unknown option: $1" - echo "Use --help for usage information" - exit 1 - ;; - esac -done - -# Check required arguments -if [ -z "$PROVIDER_NAME" ] || [ -z "$INPUT_DIR" ] || [ -z "$OUTPUT_DIR" ] || [ -z "$CONFIG_PATH" ]; then - echo "Error: Missing required arguments" - echo "Use --help for usage information" - exit 1 -fi - -echo "🔧 Generating StackQL provider extensions..." -echo "Provider: $PROVIDER_NAME" -echo "Input Directory: $INPUT_DIR" -echo "Output Directory: $OUTPUT_DIR" -echo "Config Path: $CONFIG_PATH" - -# Build command arguments -ARGS=("--provider-name" "$PROVIDER_NAME" "--input-dir" "$INPUT_DIR" "--output-dir" "$OUTPUT_DIR" "--config-path" "$CONFIG_PATH") - -if [ -n "$SERVERS" ]; then - ARGS+=("--servers" "$SERVERS") - echo "Custom servers configuration provided" -fi - -if [ -n "$PROVIDER_CONFIG" ]; then - ARGS+=("--provider-config" "$PROVIDER_CONFIG") - echo "Custom provider configuration provided" -fi - -if [ -n "$SKIP_FILES" ]; then - ARGS+=("--skip-files" "$SKIP_FILES") - echo "Skipping files: $SKIP_FILES" -fi - -if [ "$OVERWRITE" = true ]; then - ARGS+=("--overwrite") - echo "Overwrite: Yes" -fi - -if [ "$VERBOSE" = true ]; then - ARGS+=("--verbose") - echo "Verbose: Yes" -fi - -# Run the Node.js script with arguments -node --experimental-modules "$SCRIPT_DIR/generate-provider.mjs" "${ARGS[@]}" - -# Check if command succeeded -if [ $? -ne 0 ]; then - echo "❌ Provider generation failed" - exit 1 -fi - -echo "✅ Provider generated successfully at: $OUTPUT_DIR" \ No newline at end of file diff --git a/bin/split.mjs b/bin/split.mjs deleted file mode 100644 index 02a344c..0000000 --- a/bin/split.mjs +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env node - -import { providerdev } from '@stackql/provider-utils'; - -async function splitOpenApi() { - // Get command line arguments - const args = process.argv.slice(2); - const getArg = (flag) => { - const index = args.indexOf(flag); - return index !== -1 ? args[index + 1] : null; - }; - - const providerName = getArg('--provider-name'); - const apiDoc = getArg('--api-doc'); - const outputDir = getArg('--output-dir'); - const svcDiscriminator = getArg('--svc-discriminator') || 'tag'; - const exclude = getArg('--exclude') || ''; - const overwrite = args.includes('--overwrite'); - const verbose = args.includes('--verbose'); - const svcNameOverridesStr = getArg('--svc-name-overrides') || '{}'; - - let svcNameOverrides = {}; - try { - svcNameOverrides = JSON.parse(svcNameOverridesStr); - } catch (err) { - console.error('Error parsing service name overrides JSON:', err.message); - console.error('Please ensure the JSON format is correct'); - process.exit(1); - } - - if (!providerName || !apiDoc || !outputDir) { - console.error('Error: Missing required arguments'); - console.error('Usage: node split.mjs --provider-name NAME --api-doc PATH --output-dir DIR [--svc-discriminator tag|path] [--exclude LIST] [--svc-name-overrides JSON] [--overwrite] [--verbose]'); - process.exit(1); - } - - try { - console.log(`Splitting OpenAPI doc for provider: ${providerName}`); - console.log(`API Doc: ${apiDoc}`); - console.log(`Output directory: ${outputDir}`); - console.log(`Service Discriminator: ${svcDiscriminator}`); - - if (exclude) { - console.log(`Excluding: ${exclude}`); - } - - const numOverrides = Object.keys(svcNameOverrides).length; - if (numOverrides > 0) { - console.log(`Service name overrides: ${numOverrides} mappings`); - if (verbose) { - console.log('Override mappings:'); - for (const [original, newName] of Object.entries(svcNameOverrides)) { - console.log(` ${original} -> ${newName}`); - } - } - } - - const result = await providerdev.split({ - apiDoc, - providerName, - outputDir, - svcDiscriminator, - exclude, - overwrite, - verbose, - svcNameOverrides - }); - - console.log('Split operation completed successfully:', result); - } catch (error) { - console.error('Error splitting OpenAPI doc:', error); - process.exit(1); - } -} - -splitOpenApi(); \ No newline at end of file diff --git a/bin/split.sh b/bin/split.sh deleted file mode 100644 index 6f961f7..0000000 --- a/bin/split.sh +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/env bash - -# Exit on error -set -e - -# Get the script directory for relative paths -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" - -# Default values -PROVIDER_NAME="" -API_DOC="" -OUTPUT_DIR="" -SVC_DISCRIMINATOR="tag" -EXCLUDE="" -OVERWRITE=false -VERBOSE=false -SVC_NAME_OVERRIDES="{}" - -# Parse command line arguments -while [[ $# -gt 0 ]]; do - case $1 in - --provider-name) - PROVIDER_NAME="$2" - shift 2 - ;; - --api-doc) - API_DOC="$2" - shift 2 - ;; - --output-dir) - OUTPUT_DIR="$2" - shift 2 - ;; - --svc-discriminator) - SVC_DISCRIMINATOR="$2" - shift 2 - ;; - --exclude) - EXCLUDE="$2" - shift 2 - ;; - --svc-name-overrides) - SVC_NAME_OVERRIDES="$2" - shift 2 - ;; - --overwrite) - OVERWRITE=true - shift - ;; - --verbose) - VERBOSE=true - shift - ;; - --help) - echo "Usage: split.sh [OPTIONS]" - echo "" - echo "Options:" - echo " --provider-name NAME Provider name (required)" - echo " --api-doc PATH Path to OpenAPI document (required)" - echo " --output-dir DIR Output directory for split files (required)" - echo " --svc-discriminator TYPE Service discriminator type: 'tag' or 'path' (default: tag)" - echo " --exclude LIST Comma-separated list of tags or paths to exclude" - echo " --svc-name-overrides JSON JSON object mapping original service names to new names" - echo " --overwrite Overwrite existing files" - echo " --verbose Enable verbose output" - echo " --help Show this help message" - exit 0 - ;; - *) - echo "Unknown option: $1" - echo "Use --help for usage information" - exit 1 - ;; - esac -done - -# Check required arguments -if [ -z "$PROVIDER_NAME" ] || [ -z "$API_DOC" ] || [ -z "$OUTPUT_DIR" ]; then - echo "Error: Missing required arguments" - echo "Use --help for usage information" - exit 1 -fi - -echo "🔪 Splitting OpenAPI document..." -echo "Provider: $PROVIDER_NAME" -echo "API Doc: $API_DOC" -echo "Output Directory: $OUTPUT_DIR" -echo "Service Discriminator: $SVC_DISCRIMINATOR" - -# Build command arguments -ARGS=("--provider-name" "$PROVIDER_NAME" "--api-doc" "$API_DOC" "--output-dir" "$OUTPUT_DIR" "--svc-discriminator" "$SVC_DISCRIMINATOR") - -if [ -n "$EXCLUDE" ]; then - ARGS+=("--exclude" "$EXCLUDE") - echo "Excluding: $EXCLUDE" -fi - -if [ "$SVC_NAME_OVERRIDES" != "{}" ]; then - ARGS+=("--svc-name-overrides" "$SVC_NAME_OVERRIDES") - echo "Service Name Overrides: $SVC_NAME_OVERRIDES" -fi - -if [ "$OVERWRITE" = true ]; then - ARGS+=("--overwrite") - echo "Overwrite: Yes" -fi - -if [ "$VERBOSE" = true ]; then - ARGS+=("--verbose") - echo "Verbose: Yes" -fi - -# Run the Node.js script with arguments -node --experimental-modules "$SCRIPT_DIR/split.mjs" "${ARGS[@]}" - -# Check if command succeeded -if [ $? -ne 0 ]; then - echo "❌ Split operation failed" - exit 1 -fi - -echo "✅ Split operation completed successfully" \ No newline at end of file diff --git a/bin/start-server.sh b/bin/start-server.sh index e050450..d726284 100644 --- a/bin/start-server.sh +++ b/bin/start-server.sh @@ -4,20 +4,34 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" BASE_DIR="$( cd "$DIR/.." && pwd )" +# Pick up credentials from the project .env if not already exported +# (explicitly exported env always wins - only source when the token is +# absent). The server process needs NETLIFY_API_TOKEN at query time. +if [ -z "$NETLIFY_API_TOKEN" ] && [ -f "$BASE_DIR/.env" ]; then + set -a + . "$BASE_DIR/.env" + set +a + echo "Sourced credentials from $BASE_DIR/.env" +fi + # Parse command line arguments PROVIDER="" REG_PATH="" PORT="5444" VERIFY="false" +REGISTRY_MODE="local" function display_help() { echo "Usage: start-server.sh [OPTIONS]" echo "Options:" - echo " --provider NAME Provider name (default: use provider from package.json)" - echo " --registry PATH Path to local registry (default: current directory)" - echo " --port PORT Port to run server on (default: 5444)" - echo " --verify Enable signature verification (default: false)" - echo " --help Display this help message" + echo " --provider NAME Provider name (default: use provider from package.json)" + echo " --registry PATH Path to local registry (default: current directory)" + echo " --registry-mode MODE local (default) = this repo's provider-dev/openapi;" + echo " prod = the official stackql registry (signed, verified);" + echo " dev = https://registry-dev.stackql.app/providers" + echo " --port PORT Port to run server on (default: 5444)" + echo " --verify Enable signature verification (default: false, local mode only)" + echo " --help Display this help message" } while [[ $# -gt 0 ]]; do @@ -30,6 +44,10 @@ while [[ $# -gt 0 ]]; do REG_PATH="$2" shift 2 ;; + --registry-mode) + REGISTRY_MODE="$2" + shift 2 + ;; --port) PORT="$2" shift 2 @@ -57,9 +75,11 @@ if [ -z "$PROVIDER" ]; then fi fi -# If registry path not specified, use current directory +# If registry path not specified, default to provider-dev/openapi - stackql +# expects the registry root to be the directory CONTAINING `src/`, then +# auto-resolves src///provider.yaml underneath it. if [ -z "$REG_PATH" ]; then - REG_PATH="$BASE_DIR/provider-dev/openapi/src" + REG_PATH="$BASE_DIR/provider-dev/openapi" fi echo "Using provider: $PROVIDER" @@ -67,21 +87,38 @@ echo "Registry path: $REG_PATH" echo "Port: $PORT" echo "Verify signatures: $VERIFY" -# Check if stackql binary exists -if [ ! -f "$BASE_DIR/stackql" ]; then +# Resolve a stackql binary. Search order: +# 1. $STACKQL_BIN env var (explicit override) +# 2. local ./stackql in this provider directory +# 3. a stackql / stackql.exe found on PATH +# 4. download the right release into $BASE_DIR/stackql +STACKQL_CMD="" +if [ -n "$STACKQL_BIN" ] && [ -x "$STACKQL_BIN" ]; then + STACKQL_CMD="$STACKQL_BIN" + echo "Using StackQL from STACKQL_BIN: $STACKQL_CMD" +elif [ -x "$BASE_DIR/stackql" ]; then + STACKQL_CMD="$BASE_DIR/stackql" + echo "Using local StackQL: $STACKQL_CMD" +elif command -v stackql >/dev/null 2>&1; then + STACKQL_CMD="$(command -v stackql)" + echo "Using StackQL from PATH: $STACKQL_CMD" +elif command -v stackql.exe >/dev/null 2>&1; then + STACKQL_CMD="$(command -v stackql.exe)" + echo "Using StackQL from PATH: $STACKQL_CMD" +else echo "StackQL binary not found. Downloading..." - + # Determine OS and architecture OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) - + # Map architecture to stackql naming if [ "$ARCH" = "x86_64" ]; then ARCH="amd64" elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then ARCH="arm64" fi - + # Set download URL based on OS if [ "$OS" = "darwin" ]; then DOWNLOAD_URL="https://releases.stackql.io/stackql/latest/stackql_darwin_${ARCH}.zip" @@ -89,25 +126,43 @@ if [ ! -f "$BASE_DIR/stackql" ]; then DOWNLOAD_URL="https://releases.stackql.io/stackql/latest/stackql_linux_${ARCH}.zip" else echo "Unsupported OS: $OS" - echo "Please download stackql manually from https://github.com/stackql/stackql/releases" + echo "Please install stackql manually from https://github.com/stackql/stackql/releases" + echo "Or set STACKQL_BIN=/path/to/stackql before running this script." exit 1 fi - + # Download and extract cd "$BASE_DIR" curl -L -o stackql.zip "$DOWNLOAD_URL" unzip -o stackql.zip rm stackql.zip chmod +x stackql + STACKQL_CMD="$BASE_DIR/stackql" echo "StackQL binary downloaded successfully" fi # Set registry configuration -if [ "$VERIFY" = "true" ]; then - REG='{"url": "file://'${REG_PATH}'", "localDocRoot": "'${REG_PATH}'", "verifyConfig": {"nopVerify": false}}' -else - REG='{"url": "file://'${REG_PATH}'", "localDocRoot": "'${REG_PATH}'", "verifyConfig": {"nopVerify": true}}' -fi +case "$REGISTRY_MODE" in + local) + if [ "$VERIFY" = "true" ]; then + REG='{"url": "file://'${REG_PATH}'", "localDocRoot": "'${REG_PATH}'", "verifyConfig": {"nopVerify": false}}' + else + REG='{"url": "file://'${REG_PATH}'", "localDocRoot": "'${REG_PATH}'", "verifyConfig": {"nopVerify": true}}' + fi + ;; + prod) + # Empty REG = let stackql use its default official registry + # (signed provider docs, signature verification on). + REG="" + ;; + dev) + REG='{"url": "https://registry-dev.stackql.app/providers", "verifyConfig": {"nopVerify": true}}' + ;; + *) + echo "Unknown --registry-mode: $REGISTRY_MODE (expected local, prod, or dev)" + exit 1 + ;; +esac # Check if server is already running if pgrep -f "stackql.*--pgsrv.port=${PORT}" > /dev/null; then @@ -116,9 +171,14 @@ if pgrep -f "stackql.*--pgsrv.port=${PORT}" > /dev/null; then fi # Start the server -echo "Starting StackQL server with registry: $REG" cd "$BASE_DIR" -nohup ./stackql --registry="${REG}" --pgsrv.port="${PORT}" srv > stackql-server.log 2>&1 & +if [ -n "$REG" ]; then + echo "Starting StackQL server with registry: $REG" + nohup "$STACKQL_CMD" --registry="${REG}" --pgsrv.port="${PORT}" srv > stackql-server.log 2>&1 & +else + echo "Starting StackQL server with the default official registry (mode: $REGISTRY_MODE)" + nohup "$STACKQL_CMD" --pgsrv.port="${PORT}" srv > stackql-server.log 2>&1 & +fi SERVER_PID=$! # Check if server started successfully diff --git a/package-lock.json b/package-lock.json index 780b38c..2622dd9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,527 +1,976 @@ -{ - "name": "stackql-provider-digitalocean", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "stackql-provider-digitalocean", - "version": "0.1.0", - "dependencies": { - "@stackql/pgwire-lite": "^1.0.1", - "@stackql/provider-utils": "^0.4.6" - }, - "engines": { - "node": ">=14.16.0" - } - }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "11.7.2", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.2.tgz", - "integrity": "sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==", - "license": "MIT", - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.15", - "js-yaml": "^4.1.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/philsturgeon" - } - }, - "node_modules/@apidevtools/openapi-schemas": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", - "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@apidevtools/swagger-methods": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", - "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", - "license": "MIT" - }, - "node_modules/@apidevtools/swagger-parser": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.1.tgz", - "integrity": "sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA==", - "license": "MIT", - "dependencies": { - "@apidevtools/json-schema-ref-parser": "11.7.2", - "@apidevtools/openapi-schemas": "^2.1.0", - "@apidevtools/swagger-methods": "^3.0.2", - "@jsdevtools/ono": "^7.1.3", - "ajv": "^8.17.1", - "ajv-draft-04": "^1.0.0", - "call-me-maybe": "^1.0.2" - }, - "peerDependencies": { - "openapi-types": ">=7" - } - }, - "node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "license": "MIT", - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@jsdevtools/ono": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", - "license": "MIT" - }, - "node_modules/@stackql/deno-openapi-dereferencer": { - "name": "@jsr/stackql__deno-openapi-dereferencer", - "version": "0.3.1", - "resolved": "https://npm.jsr.io/~/11/@jsr/stackql__deno-openapi-dereferencer/0.3.1.tgz", - "integrity": "sha512-7Ucdom3SYxvzp7VwzulQMe66E+1LeCZIprFQ70PwRPIUfL90bYNQDrLfe5L1WaB+X7StWdHmoFSFxoa9RDlN7w==", - "dependencies": { - "jsonpath-plus": "7.0.0" - } - }, - "node_modules/@stackql/pgwire-lite": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stackql/pgwire-lite/-/pgwire-lite-1.0.1.tgz", - "integrity": "sha512-jgA6ogzlXySZ1xiJzBxuvgRNu9V38Gs3qUZ4AjinlT7hj+8RH3UhYaDvyBd33QWiK3tVNkglYcnXPQ7q0+rmNA==", - "license": "MIT", - "dependencies": { - "winston": "^3.14.2" - } - }, - "node_modules/@stackql/provider-utils": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@stackql/provider-utils/-/provider-utils-0.4.9.tgz", - "integrity": "sha512-htO+VhdD6GbfP0fqHyuqbnSqNA/F+aBUTGXeepMDEzsaRLVkxxa/xUPBR65iaVgNF6icxlsM+dH5XpNWSJtHog==", - "license": "MIT", - "dependencies": { - "@apidevtools/swagger-parser": "^10.1.1", - "@stackql/deno-openapi-dereferencer": "npm:@jsr/stackql__deno-openapi-dereferencer@^0.3.1", - "csv-parser": "^3.2.0", - "js-yaml": "^4.1.0", - "pluralize": "^8.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" - }, - "node_modules/@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", - "license": "MIT" - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" - }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "license": "MIT" - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "license": "MIT", - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, - "node_modules/csv-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.2.0.tgz", - "integrity": "sha512-fgKbp+AJbn1h2dcAHKIdKNSSjfp43BZZykXsCjzALjKy80VXQNHPFJ6T9Afwdzoj24aMkq8GwDS7KGcDPpejrA==", - "license": "MIT", - "bin": { - "csv-parser": "bin/csv-parser" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "license": "MIT" - }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "license": "MIT" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/is-arrayish": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", - "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", - "license": "MIT" - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/jsonpath-plus": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.0.0.tgz", - "integrity": "sha512-MH4UnrWrU1hJGVEyEyjvYgONkzNTO6Yol0nq18EMnUQ/ZC5cTuJheirXXIwu1b9mZ6t3XL0P79gPsu+zlTnDIQ==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "license": "MIT" - }, - "node_modules/logform": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", - "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", - "license": "MIT", - "dependencies": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "license": "MIT", - "dependencies": { - "fn.name": "1.x.x" - } - }, - "node_modules/openapi-types": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", - "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", - "license": "MIT", - "peer": true - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", - "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "license": "MIT" - }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", - "license": "MIT", - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/winston": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz", - "integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==", - "license": "MIT", - "dependencies": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.7.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.9.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", - "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", - "license": "MIT", - "dependencies": { - "logform": "^2.7.0", - "readable-stream": "^3.6.2", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - } - } -} +{ + "name": "stackql-provider-netlify", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "stackql-provider-netlify", + "version": "0.1.0", + "dependencies": { + "@stackql/pgwire-lite": "^1.0.2", + "@stackql/provider-utils": "^0.7.8", + "js-yaml": "^4.1.0", + "swagger2openapi": "^7.0.8" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.2.tgz", + "integrity": "sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==", + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/philsturgeon" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", + "license": "MIT" + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.1.tgz", + "integrity": "sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA==", + "license": "MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "11.7.2", + "@apidevtools/openapi-schemas": "^2.1.0", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "call-me-maybe": "^1.0.2" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "license": "MIT", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@exodus/schemasafe": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz", + "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==", + "license": "MIT" + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "license": "MIT" + }, + "node_modules/@stackql/deno-openapi-dereferencer": { + "name": "@jsr/stackql__deno-openapi-dereferencer", + "version": "0.3.1", + "resolved": "https://npm.jsr.io/~/11/@jsr/stackql__deno-openapi-dereferencer/0.3.1.tgz", + "integrity": "sha512-7Ucdom3SYxvzp7VwzulQMe66E+1LeCZIprFQ70PwRPIUfL90bYNQDrLfe5L1WaB+X7StWdHmoFSFxoa9RDlN7w==", + "dependencies": { + "jsonpath-plus": "7.0.0" + } + }, + "node_modules/@stackql/pgwire-lite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stackql/pgwire-lite/-/pgwire-lite-1.0.2.tgz", + "integrity": "sha512-uHZA0yzVyow8TtWYyGPFI7/If8Ci/5EjjKdoaZ4YEk1XcSoCKaGQmH9KCUlR/R1FvQk4Ic3DV9It8XhePsoTqQ==", + "license": "MIT", + "dependencies": { + "winston": "^3.14.2" + } + }, + "node_modules/@stackql/provider-utils": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/@stackql/provider-utils/-/provider-utils-0.7.8.tgz", + "integrity": "sha512-eJJ27ceMo+eTT4OTuJ7e0Cvft21u+SSGh+2s3THeoDxImndiNlg4W0wd4Sv7k+5ZbhDDbcIKcka6RJFZybkVCw==", + "license": "MIT", + "dependencies": { + "@apidevtools/swagger-parser": "^10.1.1", + "@stackql/deno-openapi-dereferencer": "npm:@jsr/stackql__deno-openapi-dereferencer@^0.3.1", + "csv-parser": "^3.2.0", + "js-yaml": "^4.1.0", + "pluralize": "^8.0.0" + }, + "bin": { + "docgen-utils": "bin/docgen-utils.mjs", + "provider-dev-utils": "bin/provider-dev-utils.mjs" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "license": "MIT" + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "license": "MIT", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/csv-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.2.0.tgz", + "integrity": "sha512-fgKbp+AJbn1h2dcAHKIdKNSSjfp43BZZykXsCjzALjKy80VXQNHPFJ6T9Afwdzoj24aMkq8GwDS7KGcDPpejrA==", + "license": "MIT", + "bin": { + "csv-parser": "bin/csv-parser" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "license": "MIT" + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "license": "MIT" + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "license": "MIT" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/http2-client": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", + "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==", + "license": "MIT" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-yaml": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/jsonpath-plus": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.0.0.tgz", + "integrity": "sha512-MH4UnrWrU1hJGVEyEyjvYgONkzNTO6Yol0nq18EMnUQ/ZC5cTuJheirXXIwu1b9mZ6t3XL0P79gPsu+zlTnDIQ==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "license": "MIT" + }, + "node_modules/logform": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", + "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", + "license": "MIT", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-h2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", + "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", + "license": "MIT", + "dependencies": { + "http2-client": "^1.2.5" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-readfiles": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz", + "integrity": "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==", + "license": "MIT", + "dependencies": { + "es6-promise": "^3.2.1" + } + }, + "node_modules/oas-kit-common": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", + "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", + "license": "BSD-3-Clause", + "dependencies": { + "fast-safe-stringify": "^2.0.7" + } + }, + "node_modules/oas-linter": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz", + "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@exodus/schemasafe": "^1.0.0-rc.2", + "should": "^13.2.1", + "yaml": "^1.10.0" + }, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/oas-resolver": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.6.tgz", + "integrity": "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==", + "license": "BSD-3-Clause", + "dependencies": { + "node-fetch-h2": "^2.3.0", + "oas-kit-common": "^1.0.8", + "reftools": "^1.1.9", + "yaml": "^1.10.0", + "yargs": "^17.0.1" + }, + "bin": { + "resolve": "resolve.js" + }, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/oas-schema-walker": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", + "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==", + "license": "BSD-3-Clause", + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/oas-validator": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.8.tgz", + "integrity": "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==", + "license": "BSD-3-Clause", + "dependencies": { + "call-me-maybe": "^1.0.1", + "oas-kit-common": "^1.0.8", + "oas-linter": "^3.2.2", + "oas-resolver": "^2.5.6", + "oas-schema-walker": "^1.1.5", + "reftools": "^1.1.9", + "should": "^13.2.1", + "yaml": "^1.10.0" + }, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "license": "MIT", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "license": "MIT", + "peer": true + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/reftools": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz", + "integrity": "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==", + "license": "BSD-3-Clause", + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/should": { + "version": "13.2.3", + "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", + "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", + "license": "MIT", + "dependencies": { + "should-equal": "^2.0.0", + "should-format": "^3.0.3", + "should-type": "^1.4.0", + "should-type-adaptors": "^1.0.1", + "should-util": "^1.0.0" + } + }, + "node_modules/should-equal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", + "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", + "license": "MIT", + "dependencies": { + "should-type": "^1.4.0" + } + }, + "node_modules/should-format": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", + "integrity": "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==", + "license": "MIT", + "dependencies": { + "should-type": "^1.3.0", + "should-type-adaptors": "^1.0.1" + } + }, + "node_modules/should-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", + "integrity": "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==", + "license": "MIT" + }, + "node_modules/should-type-adaptors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", + "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", + "license": "MIT", + "dependencies": { + "should-type": "^1.3.0", + "should-util": "^1.0.0" + } + }, + "node_modules/should-util": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", + "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", + "license": "MIT" + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/swagger2openapi": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.8.tgz", + "integrity": "sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==", + "license": "BSD-3-Clause", + "dependencies": { + "call-me-maybe": "^1.0.1", + "node-fetch": "^2.6.1", + "node-fetch-h2": "^2.3.0", + "node-readfiles": "^0.2.0", + "oas-kit-common": "^1.0.8", + "oas-resolver": "^2.5.6", + "oas-schema-walker": "^1.1.5", + "oas-validator": "^5.0.8", + "reftools": "^1.1.9", + "yaml": "^1.10.0", + "yargs": "^17.0.1" + }, + "bin": { + "boast": "boast.js", + "oas-validate": "oas-validate.js", + "swagger2openapi": "swagger2openapi.js" + }, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "license": "MIT" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/winston": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz", + "integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==", + "license": "MIT", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.7.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.9.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", + "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", + "license": "MIT", + "dependencies": { + "logform": "^2.7.0", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yaml": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json index b63f7a4..40f4bdc 100644 --- a/package.json +++ b/package.json @@ -1,28 +1,35 @@ -{ - "name": "stackql-provider-digitalocean", - "version": "0.1.0", - "description": "StackQL Provider for Digital Ocean", - "type": "module", - "scripts": { - "generate-docs": "./bin/generate-docs.sh", - "split": "./bin/split.sh", - "generate-mappings": "./bin/generate-mappings.sh", - "generate-provider": "./bin/generate-provider.sh", - "start-server": "bash ./bin/start-server.sh", - "stop-server": "bash ./bin/stop-server.sh", - "server-status": "bash ./bin/server-status.sh", - "test-meta-routes": "node ./bin/test-meta-routes.cjs" - }, - "dependencies": { - "@stackql/pgwire-lite": "^1.0.1", - "@stackql/provider-utils": "^0.4.6" - }, - "keywords": [ - "stackql", - "digitalocean", - "provider" - ], - "engines": { - "node": ">=14.16.0" - } -} \ No newline at end of file +{ + "name": "stackql-provider-netlify", + "version": "0.1.0", + "description": "StackQL Provider for Netlify", + "type": "module", + "scripts": { + "preprocess": "node provider-dev/scripts/preprocess.mjs", + "split": "node node_modules/@stackql/provider-utils/bin/provider-dev-utils.mjs split", + "normalize": "node node_modules/@stackql/provider-utils/bin/provider-dev-utils.mjs normalize", + "post-normalize": "node provider-dev/scripts/post_normalize.mjs", + "generate-mappings": "node node_modules/@stackql/provider-utils/bin/provider-dev-utils.mjs analyze", + "map-operations": "node provider-dev/scripts/map_operations.mjs", + "generate-provider": "node node_modules/@stackql/provider-utils/bin/provider-dev-utils.mjs generate", + "post-process": "node provider-dev/scripts/post_process.mjs", + "generate-docs": "node node_modules/@stackql/provider-utils/bin/docgen-utils.mjs generate-docs", + "start-server": "bash ./bin/start-server.sh", + "stop-server": "bash ./bin/stop-server.sh", + "server-status": "bash ./bin/server-status.sh", + "test-meta-routes": "node ./bin/test-meta-routes.cjs" + }, + "dependencies": { + "@stackql/pgwire-lite": "^1.0.2", + "@stackql/provider-utils": "^0.7.8", + "js-yaml": "^4.1.0", + "swagger2openapi": "^7.0.8" + }, + "keywords": [ + "stackql", + "netlify", + "provider" + ], + "engines": { + "node": ">=20" + } +} diff --git a/provider-dev/config/all_services.csv b/provider-dev/config/all_services.csv new file mode 100644 index 0000000..a1ff21b --- /dev/null +++ b/provider-dev/config/all_services.csv @@ -0,0 +1,196 @@ +filename,path,operationId,formatted_op_id,verb,response_object,tags,formatted_tags,stackql_resource_name,stackql_method_name,stackql_verb,stackql_object_key,op_description +accounts.yaml,/{account_slug}/members,listMembersForAccount,list_members_for_account,get,,member,member,members,list,select,, +accounts.yaml,/{account_slug}/members,addMemberToAccount,add_member_to_account,post,,member,member,members,add,insert,, +accounts.yaml,/{account_slug}/members/{member_id},getAccountMember,get_account_member,get,,member,member,members,get,select,, +accounts.yaml,/{account_slug}/members/{member_id},updateAccountMember,update_account_member,put,,member,member,members,update,replace,, +accounts.yaml,/{account_slug}/members/{member_id},removeAccountMember,remove_account_member,delete,,member,member,members,remove,delete,, +accounts.yaml,/billing/payment_methods,listPaymentMethodsForUser,list_payment_methods_for_user,get,,paymentMethod,payment_method,payment_methods,list,select,, +accounts.yaml,/accounts/types,listAccountTypesForUser,list_account_types_for_user,get,,accountType,account_type,account_types,list,select,, +accounts.yaml,/accounts,listAccountsForUser,list_accounts_for_user,get,,accountMembership,account_membership,accounts,list,select,, +accounts.yaml,/accounts,createAccount,create_account,post,,accountMembership,account_membership,accounts,create,insert,, +accounts.yaml,/accounts/{account_id},getAccount,get_account,get,,accountMembership,account_membership,accounts,get,select,, +accounts.yaml,/accounts/{account_id},updateAccount,update_account,put,,accountMembership,account_membership,accounts,update,replace,, +accounts.yaml,/accounts/{account_id},cancelAccount,cancel_account,delete,,accountMembership,account_membership,accounts,cancel,delete,, +accounts.yaml,/accounts/{account_id}/audit,listAccountAuditEvents,list_account_audit_events,get,,auditLog,audit_log,audit_events,list,select,, +agent_runners.yaml,/agent_runners,listAgentRunners,list_agent_runners,get,,agentRunner,agent_runner,agent_runners,list,select,, +agent_runners.yaml,/agent_runners,createAgentRunner,create_agent_runner,post,,agentRunner,agent_runner,agent_runners,create,insert,, +agent_runners.yaml,/agent_runners/upload_url,createAgentRunnerUploadUrl,create_agent_runner_upload_url,post,,agentRunner,agent_runner,agent_runners,create_upload_url,exec,, +agent_runners.yaml,/agent_runners/{agent_runner_id},getAgentRunner,get_agent_runner,get,,agentRunner,agent_runner,agent_runners,get,select,, +agent_runners.yaml,/agent_runners/{agent_runner_id},updateAgentRunner,update_agent_runner,patch,,agentRunner,agent_runner,agent_runners,update,update,, +agent_runners.yaml,/agent_runners/{agent_runner_id},deleteAgentRunner,delete_agent_runner,delete,,agentRunner,agent_runner,agent_runners,delete,delete,, +agent_runners.yaml,/agent_runners/{agent_runner_id}/archive,archiveAgentRunner,archive_agent_runner,post,,agentRunner,agent_runner,agent_runners,archive,exec,, +agent_runners.yaml,/agent_runners/{agent_runner_id}/pull_request,agentRunnerPullRequest,agent_runner_pull_request,post,,agentRunner,agent_runner,agent_runners,create_pull_request,exec,, +agent_runners.yaml,/agent_runners/{agent_runner_id}/commit,agentRunnerCommitToBranch,agent_runner_commit_to_branch,post,,agentRunner,agent_runner,agent_runners,commit_to_branch,exec,, +agent_runners.yaml,/agent_runners/{agent_runner_id}/sessions,listAgentRunnerSessions,list_agent_runner_sessions,get,,agentRunnerSession,agent_runner_session,agent_runner_sessions,list,select,, +agent_runners.yaml,/agent_runners/{agent_runner_id}/sessions,createAgentRunnerSession,create_agent_runner_session,post,,agentRunnerSession,agent_runner_session,agent_runner_sessions,create,insert,, +agent_runners.yaml,/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id},getAgentRunnerSession,get_agent_runner_session,get,,agentRunnerSession,agent_runner_session,agent_runner_sessions,get,select,, +agent_runners.yaml,/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id},updateAgentRunnerSession,update_agent_runner_session,patch,,agentRunnerSession,agent_runner_session,agent_runner_sessions,update,update,, +agent_runners.yaml,/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id},deleteAgentRunnerSession,delete_agent_runner_session,delete,,agentRunnerSession,agent_runner_session,agent_runner_sessions,delete,delete,, +agent_runners.yaml,/sites/{site_id}/agent_runner_hooks,listSiteAgentRunnerHooks,list_site_agent_runner_hooks,get,,agentRunnerHook,agent_runner_hook,agent_runner_hooks,list,select,, +agent_runners.yaml,/sites/{site_id}/agent_runner_hooks,createSiteAgentRunnerHook,create_site_agent_runner_hook,post,,agentRunnerHook,agent_runner_hook,agent_runner_hooks,create,insert,, +agent_runners.yaml,/sites/{site_id}/agent_runner_hooks/{id},getSiteAgentRunnerHook,get_site_agent_runner_hook,get,,agentRunnerHook,agent_runner_hook,agent_runner_hooks,get,select,, +agent_runners.yaml,/sites/{site_id}/agent_runner_hooks/{id},updateSiteAgentRunnerHook,update_site_agent_runner_hook,put,,agentRunnerHook,agent_runner_hook,agent_runner_hooks,update,replace,, +agent_runners.yaml,/sites/{site_id}/agent_runner_hooks/{id},deleteSiteAgentRunnerHook,delete_site_agent_runner_hook,delete,,agentRunnerHook,agent_runner_hook,agent_runner_hooks,delete,delete,, +ai_gateway.yaml,/ai-gateway/providers,getAIGatewayProviders,get_aigateway_providers,get,,aiGateway,ai_gateway,providers,get,select,, +ai_gateway.yaml,/sites/{site_id}/ai-gateway/token,getAIGatewayToken,get_aigateway_token,get,,aiGateway,ai_gateway,tokens,get_for_site,select,,Returns an AI Gateway token for a specific site +ai_gateway.yaml,/accounts/{account_id}/ai-gateway/token,getAccountAIGatewayToken,get_account_aigateway_token,get,,aiGateway,ai_gateway,tokens,get_for_account,select,,Returns an AI Gateway token scoped to an account +builds.yaml,/sites/{site_id}/build_hooks,listSiteBuildHooks,list_site_build_hooks,get,,buildHook,build_hook,build_hooks,list,select,, +builds.yaml,/sites/{site_id}/build_hooks,createSiteBuildHook,create_site_build_hook,post,,buildHook,build_hook,build_hooks,create,insert,, +builds.yaml,/sites/{site_id}/build_hooks/{id},getSiteBuildHook,get_site_build_hook,get,,buildHook,build_hook,build_hooks,get,select,, +builds.yaml,/sites/{site_id}/build_hooks/{id},updateSiteBuildHook,update_site_build_hook,put,,buildHook,build_hook,build_hooks,update,replace,, +builds.yaml,/sites/{site_id}/build_hooks/{id},deleteSiteBuildHook,delete_site_build_hook,delete,,buildHook,build_hook,build_hooks,delete,delete,, +builds.yaml,/sites/{site_id}/builds,listSiteBuilds,list_site_builds,get,,build,build,builds,list,select,, +builds.yaml,/sites/{site_id}/builds,createSiteBuild,create_site_build,post,,build,build,builds,create,insert,,"Runs a build for a site. The build will be scheduled to run at the first opportunity, but it might not start immediately if insufficient account build capacity is available. + +Files for build can be uploaded as a zipped site using one of these methods: +1. Set Content-Type to 'application/zip' and send the zip file as the raw request body +2. Set Content-Type to 'multipart/form-data' and include the zip file in the 'zip' field +" +builds.yaml,/builds/{build_id},getSiteBuild,get_site_build,get,,build,build,builds,get,select,, +builds.yaml,/builds/{build_id}/log,updateSiteBuildLog,update_site_build_log,post,,buildLogMsg,build_log_msg,builds,update_log,exec,, +builds.yaml,/builds/{build_id}/start,notifyBuildStart,notify_build_start,post,,build,build,builds,notify_start,exec,, +builds.yaml,/{account_id}/builds/status,getAccountBuildStatus,get_account_build_status,get,,build,build,build_status,get,select,, +database.yaml,/sites/{site_id}/database,createSiteDatabase,create_site_database,post,,database,database,databases,create,insert,,"Creates a new database for the specified site. If a database already exists, returns the existing connection string. The database region defaults to the site's functions region if not specified." +database.yaml,/sites/{site_id}/database,getSiteDatabase,get_site_database,get,,database,database,databases,get,select,,Returns the database connection string for the specified site. +database.yaml,/sites/{site_id}/database,deleteSiteDatabase,delete_site_database,delete,,database,database,databases,delete,delete,,Deletes the database and all associated branches and snapshots for the specified site. +database.yaml,/sites/{site_id}/database/branch,createSiteDatabaseBranch,create_site_database_branch,post,,database,database,branches,create,insert,,"Creates a new database branch. If a branch already exists for the specified branch ID, returns the existing connection string." +database.yaml,/sites/{site_id}/database/branches,listSiteDatabaseBranches,list_site_database_branches,get,,database,database,branches,list,select,$.branches,Returns all branches for the site's database with compute status and metadata. +database.yaml,/sites/{site_id}/database/branch/{branch_id},getSiteDatabaseBranch,get_site_database_branch,get,,database,database,branches,get,select,,Returns the database branch connection string for a specific branch. +database.yaml,/sites/{site_id}/database/branch/{branch_id},deleteSiteDatabaseBranch,delete_site_database_branch,delete,,database,database,branches,delete,delete,,Deletes a database branch. +database.yaml,/sites/{site_id}/database/branch/{branch_id}/reset,resetSiteDatabaseBranch,reset_site_database_branch,post,,database,database,branches,reset,exec,,"Resets a non-production database branch by re-forking it from a source branch (defaults to the production branch). If the target branch is already in sync with the source, returns the existing connection string without performing a reset, unless `force=true` is passed. The production branch cannot be reset." +database.yaml,/sites/{site_id}/database/branch/{branch_id}/compute/settings,setSiteDatabaseBranchComputeSettings,set_site_database_branch_compute_settings,put,,database,database,compute_settings,set_for_branch,replace,,"Sets compute settings for a specific database branch, overriding project-level settings. Requires a Pro or higher plan." +database.yaml,/sites/{site_id}/database/compute/settings,setSiteDatabaseComputeSettings,set_site_database_compute_settings,put,,database,database,compute_settings,set,replace,,Sets project-level compute settings for the database. Applied to new branches. Can be overridden per-branch. Requires a Pro or higher plan. +database.yaml,/sites/{site_id}/database/compute/settings,getSiteDatabaseComputeSettings,get_site_database_compute_settings,get,,database,database,compute_settings,get,select,,Returns the project-level compute settings for the database. Returns effective settings (custom or tier defaults). Requires a Pro or higher plan. +database.yaml,/sites/{site_id}/database/compute/settings,clearSiteDatabaseComputeSettings,clear_site_database_compute_settings,delete,,database,database,compute_settings,clear,delete,,Resets project-level compute settings to tier defaults. Requires a Pro or higher plan. +database.yaml,/sites/{site_id}/database/migrations,listSiteDatabaseMigrations,list_site_database_migrations,get,,database,database,migrations,list,select,$.migrations,"Returns the list of migrations available for the specified branch, indicating which ones have been applied to the database." +database.yaml,/sites/{site_id}/database/migrations/{name},getSiteDatabaseMigration,get_site_database_migration,get,,database,database,migrations,get,select,,Returns the contents of a named migration for the specified branch. +database.yaml,/sites/{site_id}/database/migrations/{deploy_id},runSiteDatabaseMigrations,run_site_database_migrations,post,,database,database,migrations,run,exec,,Runs database migrations for the specified deploy. Finds the deploy and determines the appropriate branch. +database.yaml,/sites/{site_id}/database/snapshot,createSiteDatabaseSnapshot,create_site_database_snapshot,post,,database,database,snapshots,create,insert,,Creates a point-in-time snapshot of a database branch. Defaults to the production branch if no branch name is specified. +database.yaml,/sites/{site_id}/database/snapshots,listSiteDatabaseSnapshots,list_site_database_snapshots,get,,database,database,snapshots,list,select,$.snapshots,Returns all snapshots for the site's database. +database.yaml,/sites/{site_id}/database/snapshot/{snapshot_id},deleteSiteDatabaseSnapshot,delete_site_database_snapshot,delete,,database,database,snapshots,delete,delete,,Deletes a database snapshot. +database.yaml,/sites/{site_id}/database/snapshot/{snapshot_id}/restore,restoreSiteDatabaseSnapshot,restore_site_database_snapshot,post,,database,database,snapshots,restore,exec,,Restores a snapshot to a database branch. Defaults to the production branch if no branch_name is specified. +deploys.yaml,/sites/{site_id}/deploys,listSiteDeploys,list_site_deploys,get,,deploy,deploy,deploys,list,select,, +deploys.yaml,/sites/{site_id}/deploys,createSiteDeploy,create_site_deploy,post,,deploy,deploy,deploys,create,insert,, +deploys.yaml,/sites/{site_id}/deploys/{deploy_id},getSiteDeploy,get_site_deploy,get,,deploy,deploy,deploys,get,select,, +deploys.yaml,/sites/{site_id}/deploys/{deploy_id},updateSiteDeploy,update_site_deploy,put,,deploy,deploy,deploys,update,replace,, +deploys.yaml,/sites/{site_id}/deploys/{deploy_id},deleteSiteDeploy,delete_site_deploy,delete,,deploy,deploy,deploys,delete,delete,, +deploys.yaml,/deploys/{deploy_id}/cancel,cancelSiteDeploy,cancel_site_deploy,post,,deploy,deploy,deploys,cancel,exec,, +deploys.yaml,/sites/{site_id}/deploys/{deploy_id}/restore,restoreSiteDeploy,restore_site_deploy,post,,deploy,deploy,deploys,restore,exec,, +deploys.yaml,/sites/{site_id}/rollback,rollbackSiteDeploy,rollback_site_deploy,put,,deploy,deploy,deploys,rollback,exec,, +deploys.yaml,/deploys/{deploy_id},getDeploy,get_deploy,get,,deploy,deploy,deploys,get_by_id,select,, +deploys.yaml,/deploys/{deploy_id},deleteDeploy,delete_deploy,delete,,deploy,deploy,deploys,delete_by_id,delete,, +deploys.yaml,/deploys/{deploy_id}/validations_report,updateDeployValidations,update_deploy_validations,patch,,deploy,deploy,deploys,update_validations_report,exec,,Updates the deploy validations report for a deploy. +deploys.yaml,/deploys/{deploy_id}/lock,lockDeploy,lock_deploy,post,,deploy,deploy,deploys,lock,exec,, +deploys.yaml,/deploys/{deploy_id}/unlock,unlockDeploy,unlock_deploy,post,,deploy,deploy,deploys,unlock,exec,, +deploys.yaml,/deploys/{deploy_id}/files/{path},uploadDeployFile,upload_deploy_file,put,,file,file,deploys,upload_file,exec,, +deploys.yaml,/deploys/{deploy_id}/functions/{name},uploadDeployFunction,upload_deploy_function,put,,function,function,deploys,upload_function,exec,, +deploys.yaml,/deploys/{deploy_id}/edge_functions/{code_sha},uploadDeployEdgeFunction,upload_deploy_edge_function,put,,edgeFunction,edge_function,deploys,upload_edge_function,exec,, +deploys.yaml,/deploy_keys,listDeployKeys,list_deploy_keys,get,,deployKey,deploy_key,deploy_keys,list,select,, +deploys.yaml,/deploy_keys,createDeployKey,create_deploy_key,post,,deployKey,deploy_key,deploy_keys,create,insert,, +deploys.yaml,/deploy_keys/{key_id},getDeployKey,get_deploy_key,get,,deployKey,deploy_key,deploy_keys,get,select,, +deploys.yaml,/deploy_keys/{key_id},deleteDeployKey,delete_deploy_key,delete,,deployKey,deploy_key,deploy_keys,delete,delete,, +dev_servers.yaml,/sites/{site_id}/dev_servers,listSiteDevServers,list_site_dev_servers,get,,devServer,dev_server,dev_servers,list,select,, +dev_servers.yaml,/sites/{site_id}/dev_servers,createSiteDevServer,create_site_dev_server,post,,devServer,dev_server,dev_servers,create,insert,, +dev_servers.yaml,/sites/{site_id}/dev_servers,deleteSiteDevServers,delete_site_dev_servers,delete,,devServer,dev_server,dev_servers,delete,delete,, +dev_servers.yaml,/sites/{site_id}/dev_servers/{dev_server_id},getSiteDevServer,get_site_dev_server,get,,devServer,dev_server,dev_servers,get,select,, +dev_servers.yaml,/sites/{site_id}/dev_servers/{dev_server_id}/activity,markDevServerActivity,mark_dev_server_activity,post,,devServer,dev_server,dev_servers,mark_activity,exec,, +dev_servers.yaml,/sites/{site_id}/dev_servers/{dev_server_id}/state,updateDevServerState,update_dev_server_state,post,,devServer,dev_server,dev_servers,update_state,exec,, +dev_servers.yaml,/sites/{site_id}/dev_server_hooks,listSiteDevServerHooks,list_site_dev_server_hooks,get,,devServerHook,dev_server_hook,dev_server_hooks,list,select,, +dev_servers.yaml,/sites/{site_id}/dev_server_hooks,createSiteDevServerHook,create_site_dev_server_hook,post,,devServerHook,dev_server_hook,dev_server_hooks,create,insert,, +dev_servers.yaml,/sites/{site_id}/dev_server_hooks/{id},getSiteDevServerHook,get_site_dev_server_hook,get,,devServerHook,dev_server_hook,dev_server_hooks,get,select,, +dev_servers.yaml,/sites/{site_id}/dev_server_hooks/{id},updateSiteDevServerHook,update_site_dev_server_hook,put,,devServerHook,dev_server_hook,dev_server_hooks,update,replace,, +dev_servers.yaml,/sites/{site_id}/dev_server_hooks/{id},deleteSiteDevServerHook,delete_site_dev_server_hook,delete,,devServerHook,dev_server_hook,dev_server_hooks,delete,delete,, +dns.yaml,/dns_zones,createDnsZone,create_dns_zone,post,,dnsZone,dns_zone,dns_zones,create,insert,, +dns.yaml,/dns_zones,getDnsZones,get_dns_zones,get,,dnsZone,dns_zone,dns_zones,list,select,, +dns.yaml,/dns_zones/{zone_id},getDnsZone,get_dns_zone,get,,dnsZone,dns_zone,dns_zones,get,select,, +dns.yaml,/dns_zones/{zone_id},deleteDnsZone,delete_dns_zone,delete,,dnsZone,dns_zone,dns_zones,delete,delete,, +dns.yaml,/dns_zones/{zone_id}/transfer,transferDnsZone,transfer_dns_zone,put,,dnsZone,dns_zone,dns_zones,transfer,exec,, +dns.yaml,/dns_zones/{zone_id}/dns_records,getDnsRecords,get_dns_records,get,,dnsZone,dns_zone,dns_records,list,select,, +dns.yaml,/dns_zones/{zone_id}/dns_records,createDnsRecord,create_dns_record,post,,dnsZone,dns_zone,dns_records,create,insert,, +dns.yaml,/dns_zones/{zone_id}/dns_records/{dns_record_id},getIndividualDnsRecord,get_individual_dns_record,get,,dnsZone,dns_zone,dns_records,get,select,, +dns.yaml,/dns_zones/{zone_id}/dns_records/{dns_record_id},deleteDnsRecord,delete_dns_record,delete,,dnsZone,dns_zone,dns_records,delete,delete,, +env.yaml,/accounts/{account_id}/env,getEnvVars,get_env_vars,get,,environmentVariables,environment_variables,env_vars,list,select,,Returns all environment variables for an account or site. An account corresponds to a team in the Netlify UI. +env.yaml,/accounts/{account_id}/env,createEnvVars,create_env_vars,post,,environmentVariables,environment_variables,env_vars,create,insert,,Creates new environment variables. Granular scopes are available on Pro plans and above. +env.yaml,/accounts/{account_id}/env/{key},getEnvVar,get_env_var,get,,environmentVariables,environment_variables,env_vars,get,select,,Returns an individual environment variable. +env.yaml,/accounts/{account_id}/env/{key},updateEnvVar,update_env_var,put,,environmentVariables,environment_variables,env_vars,update,replace,,Updates an existing environment variable and all of its values. Existing values will be replaced by values provided. +env.yaml,/accounts/{account_id}/env/{key},setEnvVarValue,set_env_var_value,patch,,environmentVariables,environment_variables,env_vars,set_value,update,,Updates or creates a new value for an existing environment variable. +env.yaml,/accounts/{account_id}/env/{key},deleteEnvVar,delete_env_var,delete,,environmentVariables,environment_variables,env_vars,delete,delete,,Deletes an environment variable +env.yaml,/accounts/{account_id}/env/{key}/value/{id},deleteEnvVarValue,delete_env_var_value,delete,,environmentVariables,environment_variables,env_vars,delete_value,delete,,Deletes a specific environment variable value. +env.yaml,/sites/{site_id}/env,getSiteEnvVars,get_site_env_vars,get,,environmentVariables,environment_variables,env_vars,list_for_site,select,,Returns all environment variables for a site. This convenience method behaves the same as `getEnvVars` but doesn't require an `account_id` as input. +forms.yaml,/sites/{site_id}/forms,listSiteForms,list_site_forms,get,,form,form,forms,list,select,, +forms.yaml,/sites/{site_id}/forms/{form_id},deleteSiteForm,delete_site_form,delete,,form,form,forms,delete,delete,, +forms.yaml,/sites/{site_id}/submissions,listSiteSubmissions,list_site_submissions,get,,submission,submission,submissions,list_for_site,select,, +forms.yaml,/forms/{form_id}/submissions,listFormSubmissions,list_form_submissions,get,,submission,submission,submissions,list,select,, +forms.yaml,/submissions/{submission_id},listFormSubmission,list_form_submission,get,,submission,submission,submissions,get,select,, +forms.yaml,/submissions/{submission_id},deleteSubmission,delete_submission,delete,,submission,submission,submissions,delete,delete,, +functions.yaml,/sites/{site_id}/functions,searchSiteFunctions,search_site_functions,get,,function,function,functions,list,select,, +hooks.yaml,/hooks,listHooksBySiteId,list_hooks_by_site_id,get,,hook,hook,hooks,list,select,, +hooks.yaml,/hooks,createHookBySiteId,create_hook_by_site_id,post,,hook,hook,hooks,create,insert,, +hooks.yaml,/hooks/{hook_id},getHook,get_hook,get,,hook,hook,hooks,get,select,, +hooks.yaml,/hooks/{hook_id},updateHook,update_hook,put,,hook,hook,hooks,update,replace,, +hooks.yaml,/hooks/{hook_id},deleteHook,delete_hook,delete,,hook,hook,hooks,delete,delete,, +hooks.yaml,/hooks/{hook_id}/enable,enableHook,enable_hook,post,,hook,hook,hooks,enable,exec,, +hooks.yaml,/hooks/types,listHookTypes,list_hook_types,get,,hookType,hook_type,hook_types,list,select,, +oauth.yaml,/oauth/tickets,createTicket,create_ticket,post,,ticket,ticket,tickets,create,insert,, +oauth.yaml,/oauth/tickets/{ticket_id},showTicket,show_ticket,get,,ticket,ticket,tickets,get,select,, +oauth.yaml,/oauth/tickets/{ticket_id}/exchange,exchangeTicket,exchange_ticket,post,,accessToken,access_token,tickets,exchange,exec,, +services.yaml,/sites/{site_id}/service-instances,listServiceInstancesForSite,list_service_instances_for_site,get,,serviceInstance,service_instance,service_instances,list,select,, +services.yaml,/sites/{site_id}/services/{addon}/instances,createServiceInstance,create_service_instance,post,,serviceInstance,service_instance,service_instances,create,insert,, +services.yaml,/sites/{site_id}/services/{addon}/instances/{instance_id},showServiceInstance,show_service_instance,get,,serviceInstance,service_instance,service_instances,get,select,, +services.yaml,/sites/{site_id}/services/{addon}/instances/{instance_id},updateServiceInstance,update_service_instance,put,,serviceInstance,service_instance,service_instances,update,replace,, +services.yaml,/sites/{site_id}/services/{addon}/instances/{instance_id},deleteServiceInstance,delete_service_instance,delete,,serviceInstance,service_instance,service_instances,delete,delete,, +services.yaml,/services/,getServices,get_services,get,,service,service,services,list,select,, +services.yaml,/services/{addonName},showService,show_service,get,,service,service,services,get,select,, +services.yaml,/services/{addonName}/manifest,showServiceManifest,show_service_manifest,get,,service,service,service_manifests,get,select,, +sites.yaml,/sites,listSites,list_sites,get,,site,site,sites,list,select,,**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables. +sites.yaml,/sites,createSite,create_site,post,,site,site,sites,create,insert,,**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site. +sites.yaml,/sites/{site_id},getSite,get_site,get,,site,site,sites,get,select,,**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables. +sites.yaml,/sites/{site_id},updateSite,update_site,patch,,site,site,sites,update,update,,**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [updateEnvVar](#tag/environmentVariables/operation/updateEnvVar) to update a site's environment variables. +sites.yaml,/sites/{site_id},deleteSite,delete_site,delete,,site,site,sites,delete,delete,, +sites.yaml,/sites/{site_id}/ssl,provisionSiteTLSCertificate,provision_site_tlscertificate,post,,sniCertificate,sni_certificate,ssl_certificates,provision,insert,,"Provisions or updates a TLS certificate for the site. + +**Creating a certificate (site has no certificate):** +- Omit certificate params to initiate Let's Encrypt provisioning +- Provide certificate, key, and ca_certificates to upload a custom certificate + +**Updating a certificate (site already has a certificate):** +- REQUIRES certificate, key, and ca_certificates to replace with a new custom certificate +- Use POST /api/v1/sites/{site_id}/ssl/renew to renew an existing Let's Encrypt certificate" +sites.yaml,/sites/{site_id}/ssl,showSiteTLSCertificate,show_site_tlscertificate,get,,sniCertificate,sni_certificate,ssl_certificates,get,select,, +sites.yaml,/sites/{site_id}/ssl/certificates,getAllCertificates,get_all_certificates,get,,sniCertificate,sni_certificate,ssl_certificates,list,select,, +sites.yaml,/sites/{site_id}/files,listSiteFiles,list_site_files,get,,file,file,site_files,list,select,, +sites.yaml,/sites/{site_id}/assets,listSiteAssets,list_site_assets,get,,asset,asset,site_assets,list,select,, +sites.yaml,/sites/{site_id}/assets,createSiteAsset,create_site_asset,post,,asset,asset,site_assets,create,insert,, +sites.yaml,/sites/{site_id}/assets/{asset_id},getSiteAssetInfo,get_site_asset_info,get,,asset,asset,site_assets,get,select,, +sites.yaml,/sites/{site_id}/assets/{asset_id},updateSiteAsset,update_site_asset,put,,asset,asset,site_assets,update,replace,, +sites.yaml,/sites/{site_id}/assets/{asset_id},deleteSiteAsset,delete_site_asset,delete,,asset,asset,site_assets,delete,delete,, +sites.yaml,/sites/{site_id}/assets/{asset_id}/public_signature,getSiteAssetPublicSignature,get_site_asset_public_signature,get,,assetPublicSignature,asset_public_signature,site_asset_public_signatures,get,select,, +sites.yaml,/sites/{site_id}/files/{file_path},getSiteFileByPathName,get_site_file_by_path_name,get,,file,file,site_files,get,select,, +sites.yaml,/purge,purgeCache,purge_cache,post,,purge,purge,sites,purge_cache,exec,,Purges cached content from Netlify's CDN. Supports purging by Cache-Tag. +sites.yaml,/sites/{site_id}/snippets,listSiteSnippets,list_site_snippets,get,,snippet,snippet,snippets,list,select,, +sites.yaml,/sites/{site_id}/snippets,createSiteSnippet,create_site_snippet,post,,snippet,snippet,snippets,create,insert,, +sites.yaml,/sites/{site_id}/snippets/{snippet_id},getSiteSnippet,get_site_snippet,get,,snippet,snippet,snippets,get,select,, +sites.yaml,/sites/{site_id}/snippets/{snippet_id},updateSiteSnippet,update_site_snippet,put,,snippet,snippet,snippets,update,replace,, +sites.yaml,/sites/{site_id}/snippets/{snippet_id},deleteSiteSnippet,delete_site_snippet,delete,,snippet,snippet,snippets,delete,delete,, +sites.yaml,/sites/{site_id}/metadata,getSiteMetadata,get_site_metadata,get,,metadata,metadata,site_metadata,get,select,, +sites.yaml,/sites/{site_id}/metadata,updateSiteMetadata,update_site_metadata,put,,metadata,metadata,site_metadata,update,replace,, +sites.yaml,/sites/{site_id}/deployed-branches,listSiteDeployedBranches,list_site_deployed_branches,get,,deployedBranch,deployed_branch,deployed_branches,list,select,, +sites.yaml,/sites/{site_id}/unlink_repo,unlinkSiteRepo,unlink_site_repo,put,,site,site,sites,unlink_repo,exec,,"[Beta] Unlinks the repo from the site. + +This action will also: +- Delete associated deploy keys +- Delete outgoing webhooks for the repo +- Delete the site's build hooks" +sites.yaml,/sites/{site_id}/enable,enableSite,enable_site,put,,site,site,sites,enable,exec,,Re-enables a site that was previously disabled by the user. Sites that were disabled for usage exceeded or marked as spam cannot be re-enabled via this endpoint. +sites.yaml,/sites/{site_id}/disable,disableSite,disable_site,put,,site,site,sites,disable,exec,,"Disables a site, preventing it from serving content. The site can be re-enabled later using the enable endpoint." +sites.yaml,/sites/{site_id}/dns,getDNSForSite,get_dnsfor_site,get,,dnsZone,dns_zone,site_dns,get,select,, +sites.yaml,/sites/{site_id}/dns,configureDNSForSite,configure_dnsfor_site,put,,dnsZone,dns_zone,site_dns,configure,exec,, +sites.yaml,/{account_slug}/sites,createSiteInTeam,create_site_in_team,post,,site,site,sites,create_in_team,insert,,**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site. +sites.yaml,/{account_slug}/sites,listSitesForAccount,list_sites_for_account,get,,site,site,sites,list_for_account,select,,**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables. +split_tests.yaml,/sites/{site_id}/traffic_splits,createSplitTest,create_split_test,post,,splitTest,split_test,split_tests,create,insert,, +split_tests.yaml,/sites/{site_id}/traffic_splits,getSplitTests,get_split_tests,get,,splitTest,split_test,split_tests,list,select,, +split_tests.yaml,/sites/{site_id}/traffic_splits/{split_test_id},updateSplitTest,update_split_test,put,,splitTest,split_test,split_tests,update,replace,, +split_tests.yaml,/sites/{site_id}/traffic_splits/{split_test_id},getSplitTest,get_split_test,get,,splitTest,split_test,split_tests,get,select,, +split_tests.yaml,/sites/{site_id}/traffic_splits/{split_test_id}/publish,enableSplitTest,enable_split_test,post,,splitTest,split_test,split_tests,publish,exec,, +split_tests.yaml,/sites/{site_id}/traffic_splits/{split_test_id}/unpublish,disableSplitTest,disable_split_test,post,,splitTest,split_test,split_tests,unpublish,exec,, +users.yaml,/user,getCurrentUser,get_current_user,get,,user,user,users,get_current,select,, diff --git a/provider-dev/config/provider_config.json b/provider-dev/config/provider_config.json new file mode 100644 index 0000000..9cbf4a9 --- /dev/null +++ b/provider-dev/config/provider_config.json @@ -0,0 +1 @@ +{"auth": {"type": "bearer", "credentialsenvvar": "NETLIFY_API_TOKEN"}} diff --git a/provider-dev/config/servers.json b/provider-dev/config/servers.json new file mode 100644 index 0000000..72091f9 --- /dev/null +++ b/provider-dev/config/servers.json @@ -0,0 +1 @@ +[{"url": "https://api.netlify.com/api/v1"}] diff --git a/provider-dev/config/service_config.json b/provider-dev/config/service_config.json new file mode 100644 index 0000000..b0c068e --- /dev/null +++ b/provider-dev/config/service_config.json @@ -0,0 +1,6 @@ +{ + "pagination": { + "requestToken": {"key": "", "location": "request"}, + "responseToken": {"key": "Link", "location": "header"} + } +} diff --git a/provider-dev/docgen/provider-data/headerContent1.txt b/provider-dev/docgen/provider-data/headerContent1.txt index 853afdf..33a8f14 100644 --- a/provider-dev/docgen/provider-data/headerContent1.txt +++ b/provider-dev/docgen/provider-data/headerContent1.txt @@ -1,19 +1,22 @@ ---- -title: netlify -hide_title: false -hide_table_of_contents: false -keywords: - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage Netlify resources using SQL -custom_edit_url: null -image: /img/providers/netlify/stackql-netlify-provider-featured-image.png -id: 'provider-intro' ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; - -Web development and content distribution platform. \ No newline at end of file +--- +title: netlify +hide_title: false +hide_table_of_contents: false +keywords: + - netlify + - stackql + - infrastructure-as-code + - configuration-as-data + - cloud inventory + - jamstack + - deploys + - dns +description: Query, deploy and manage Netlify sites, deploys, builds, environment variables, DNS zones, forms, functions and teams using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +id: 'provider-intro' +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; + +Query, provision and operate Netlify using SQL - sites and their build, domain and SSL settings, deploys and deploy keys, builds and build hooks, environment variables, DNS zones and records, serverless functions, forms and submissions, outgoing webhooks, teams and members, add-on services, split tests, dev servers, agent runners, the AI gateway and Netlify DB. diff --git a/provider-dev/docgen/provider-data/headerContent2.txt b/provider-dev/docgen/provider-data/headerContent2.txt index b94be16..2aaedfe 100644 --- a/provider-dev/docgen/provider-data/headerContent2.txt +++ b/provider-dev/docgen/provider-data/headerContent2.txt @@ -1,42 +1,323 @@ -See also: -[[` SHOW `]](https://stackql.io/docs/language-spec/show) [[` DESCRIBE `]](https://stackql.io/docs/language-spec/describe) [[` REGISTRY `]](https://stackql.io/docs/language-spec/registry) -* * * - -## Installation - -To pull the latest version of the `netlify` provider, run the following command: - -```bash -REGISTRY PULL netlify; -``` -> To view previous provider versions or to pull a specific provider version, see [here](https://stackql.io/docs/language-spec/registry). - -## Authentication - -The following system environment variables are used for authentication by default: - -- - Netlify API token (see How to Create a Netlify API Token) - -These variables are sourced at runtime (from the local machine or as CI variables/secrets). - -
- -Using different environment variables - -To use different environment variables (instead of the defaults), use the `--auth` flag of the `stackql` program. For example: - -```bash - -AUTH='{ "netlify": { "type": "bearer", "credentialsenvvar": "YOUR_NETLIFY_AUTH_TOKEN_VAR" }}' -stackql shell --auth="${AUTH}" - -``` -or using PowerShell: - -```powershell - -$Auth = "{ 'netlify': { 'type': 'bearer', 'credentialsenvvar': 'YOUR_NETLIFY_AUTH_TOKEN_VAR' }}" -stackql.exe shell --auth=$Auth - -``` -
\ No newline at end of file +See also: +[[` SHOW `]](https://stackql.io/docs/language-spec/show) [[` DESCRIBE `]](https://stackql.io/docs/language-spec/describe) [[` REGISTRY `]](https://stackql.io/docs/language-spec/registry) +* * * + +## Installation + +To pull the latest version of the `netlify` provider, run the following command: + +```bash +REGISTRY PULL netlify; +``` +> To view previous provider versions or to pull a specific provider version, see [here](https://stackql.io/docs/language-spec/registry). + +## Authentication + +The following system environment variables are used for authentication by default: + +- - Netlify personal access token (see Netlify API authentication; create one under User settings > Applications > Personal access tokens) + +This is the same variable the official Netlify Terraform provider reads. It is sourced at runtime (from the local machine or as a CI variable/secret). + +
+ +Using different environment variables + +To use different environment variables (instead of the defaults), use the `--auth` flag of the `stackql` program. For example: + +```bash + +AUTH='{ "netlify": { "type": "bearer", "credentialsenvvar": "YOUR_NETLIFY_TOKEN_VAR" }}' +stackql shell --auth="${AUTH}" + +``` +or using PowerShell: + +```powershell + +$Auth = "{ 'netlify': { 'type': 'bearer', 'credentialsenvvar': 'YOUR_NETLIFY_TOKEN_VAR' }}" +stackql.exe shell --auth=$Auth + +``` +
+ +### Using the netlify provider with agent assistants (MCP) + +StackQL ships an MCP server (`stackql mcp`), so agent assistants such as Claude Code, Claude Desktop, Codex and other MCP clients can query and manage Netlify with SQL. + +Store the token in a dotenv file that the server sources at startup: + +```bash +mkdir -p ~/.stackql +echo "NETLIFY_API_TOKEN=" > ~/.stackql/netlify.env +``` + +Then register the server with your MCP client. For Claude Code: + +```bash +claude mcp add stackql -- stackql mcp --env.file="$HOME/.stackql/netlify.env" +``` + +For Claude Desktop (`claude_desktop_config.json`) or any client configured with JSON: + +```json +{ + "mcpServers": { + "stackql": { + "command": "stackql", + "args": ["mcp", "--env.file=/path/to/.stackql/netlify.env"] + } + } +} +``` + +The agent can then discover and query Netlify using the server's tools (`list_resources`, `describe_resource`, `run_select_query` and so on). Credential values are resolved inside the server process and are never visible to the agent. + +## Sites + +Every site the token can see, with the team it belongs to: + +```sql +SELECT + id, + name, + url, + account_slug, + state, + custom_domain, + created_at +FROM netlify.sites.sites +ORDER BY created_at DESC; +``` + +Sites in one team, filtered by name (both are sent to the API as request parameters): + +```sql +SELECT id, name, url +FROM netlify.sites.sites +WHERE account_slug = 'my-team' AND name = 'blog'; +``` + +A single site with its build settings expanded from the nested JSON: + +```sql +SELECT + name, + custom_domain, + json_extract(build_settings, '$.repo_url') AS repo_url, + json_extract(build_settings, '$.repo_branch') AS repo_branch, + json_extract(build_settings, '$.cmd') AS build_command, + json_extract(build_settings, '$.dir') AS publish_directory +FROM netlify.sites.sites +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +The SSL certificate provisioned for a site: + +```sql +SELECT domains, state, expires_at +FROM netlify.sites.ssl_certificates +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +## Deploys and builds + +Deploys are listed per site. Netlify paginates with a `Link` header and the provider follows it automatically, so a listing returns every page; `state`, `branch`, `production` and `per_page` are sent to the API when supplied: + +```sql +SELECT id, state, branch, context, published_at +FROM netlify.deploys.deploys +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +AND state = 'ready' +ORDER BY published_at DESC; +``` + +Deploy duration and success rate by branch, computed locally over the results: + +```sql +SELECT + branch, + COUNT(*) AS deploys, + SUM(state = 'ready') AS succeeded, + ROUND(100.0 * SUM(state = 'ready') / COUNT(*), 1) AS success_pct +FROM netlify.deploys.deploys +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +GROUP BY branch; +``` + +A deploy by id (no site required), and the builds for a site: + +```sql +SELECT id, state, site_id, deploy_url, commit_ref +FROM netlify.deploys.deploys +WHERE deploy_id = '6a3b1220ef9804c0f88b7bb6'; + +SELECT id, deploy_id, done, error, created_at +FROM netlify.builds.builds +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +Build hooks (the URLs that trigger a build when POSTed to): + +```sql +SELECT id, title, branch, url +FROM netlify.builds.build_hooks +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +## Environment variables + +Environment variables are scoped to a team (`account_id`) and optionally a site. The context values come back in the `env_values` column (the API field is `values`, renamed because it is a SQL keyword): + +```sql +SELECT key, scopes, is_secret, env_values +FROM netlify.env.env_vars +WHERE account_id = '60612a0f5d5dcb19a6e9a8ab' +AND site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +One row per variable and deploy context, expanding `env_values` with `json_each`: + +```sql +SELECT + e.key, + json_extract(v.value, '$.context') AS context, + json_extract(v.value, '$.value') AS value +FROM netlify.env.env_vars e, json_each(e.env_values) v +WHERE e.account_id = '60612a0f5d5dcb19a6e9a8ab' +AND e.site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +ORDER BY e.key, context; +``` + +## DNS + +Zones managed by Netlify DNS and the records in one of them: + +```sql +SELECT id, name, account_slug, dns_servers +FROM netlify.dns.dns_zones; + +SELECT hostname, type, value, ttl, priority +FROM netlify.dns.dns_records +WHERE zone_id = '6a3b13ddc32b40c74188b36e'; +``` + +All records across every zone, resolved from each zone row (one request per zone): + +```sql +SELECT z.name AS zone, r.hostname, r.type, r.value, r.ttl +FROM netlify.dns.dns_zones z +JOIN netlify.dns.dns_records r ON r.zone_id = z.id +ORDER BY zone, r.hostname; +``` + +## Teams, members and audit + +```sql +SELECT id, name, slug, type_name +FROM netlify.accounts.accounts; + +SELECT id, full_name, email, role +FROM netlify.accounts.members +WHERE account_slug = 'my-team'; + +SELECT id, json_extract(payload, '$.action') AS action, json_extract(payload, '$.actor_name') AS actor +FROM netlify.accounts.audit_events +WHERE account_id = '60612a0f5d5dcb19a6e9a8ab'; +``` + +## Forms, functions and hooks + +```sql +SELECT id, name, submission_count +FROM netlify.forms.forms +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; + +SELECT id, form_name, email, created_at +FROM netlify.forms.submissions +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; + +SELECT id, branch, provider, functions +FROM netlify.functions.functions +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; + +SELECT id, type, event, disabled +FROM netlify.hooks.hooks +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +## Provision, mutate and tear down + +Mutations use the same SQL grammar: `INSERT` creates, `UPDATE` sends a PATCH, `REPLACE` sends a PUT, `EXEC` invokes lifecycle methods and `DELETE` removes. Request body fields are supplied as columns using their API names. + +Create a site in a team, change its build settings, then delete it: + +```sql +INSERT INTO netlify.sites.sites (account_slug, name) +SELECT 'my-team', 'stackql-example'; + +UPDATE netlify.sites.sites +SET build_settings = '{"cmd": "npm run build", "dir": "dist"}' +WHERE site_id = ''; + +DELETE FROM netlify.sites.sites +WHERE site_id = ''; +``` + +Environment variables end to end. The create endpoint takes an array, supplied in the `env_vars` column; `UPDATE` sets one context value (PATCH); `REPLACE` rewrites the whole variable (PUT) - the API needs the key in the body as well as the path, so it is given as `env_key`, with the values in `env_values`: + +```sql +-- create +INSERT INTO netlify.env.env_vars (account_id, site_id, env_vars) +SELECT '60612a0f5d5dcb19a6e9a8ab', '1798369c-fb66-438b-b80d-a19ce1698772', + '[{"key": "API_URL", "values": [{"value": "https://api.example.com", "context": "all"}]}]'; + +-- set a single context value +UPDATE netlify.env.env_vars +SET context = 'deploy-preview', value = 'https://staging.example.com' +WHERE account_id = '60612a0f5d5dcb19a6e9a8ab' +AND site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +AND key = 'API_URL'; + +-- replace the whole variable +REPLACE netlify.env.env_vars +SET env_key = 'API_URL', env_values = '[{"value": "https://api.example.com", "context": "production"}]' +WHERE account_id = '60612a0f5d5dcb19a6e9a8ab' +AND site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +AND key = 'API_URL'; + +-- delete +DELETE FROM netlify.env.env_vars +WHERE account_id = '60612a0f5d5dcb19a6e9a8ab' +AND site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +AND key = 'API_URL'; +``` + +DNS records and build hooks: + +```sql +INSERT INTO netlify.dns.dns_records (zone_id, type, hostname, value, ttl) +SELECT '6a3b13ddc32b40c74188b36e', 'TXT', 'example.sqlpedia.org', 'stackql', 3600; + +INSERT INTO netlify.builds.build_hooks (site_id, title, branch) +SELECT '1798369c-fb66-438b-b80d-a19ce1698772', 'Nightly rebuild', 'main'; +``` + +Lifecycle operations are `EXEC` methods on the resource they act on: + +```sql +-- purge the CDN cache for a site +EXEC netlify.sites.sites.purge_cache @@json = '{"site_id": "1798369c-fb66-438b-b80d-a19ce1698772"}'; + +-- lock the published deploy (and unlock it again) +EXEC netlify.deploys.deploys.lock @deploy_id = '6a3b1220ef9804c0f88b7bb6'; +EXEC netlify.deploys.deploys.unlock @deploy_id = '6a3b1220ef9804c0f88b7bb6'; + +-- roll a site back to its previous deploy +EXEC netlify.deploys.deploys.rollback @site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; + +-- trigger a build hook +EXEC netlify.builds.builds.notify_start @build_id = ''; +``` + +`SHOW METHODS IN netlify.deploys.deploys` lists every method a resource exposes, including the `EXEC`-only ones, with their required parameters. diff --git a/provider-dev/downloaded/openapi.json b/provider-dev/downloaded/openapi.json new file mode 100644 index 0000000..214ce70 --- /dev/null +++ b/provider-dev/downloaded/openapi.json @@ -0,0 +1,25026 @@ +{ + "openapi": "3.0.0", + "info": { + "version": "2.57.0", + "title": "Netlify's API documentation", + "description": "Netlify is a hosting service for the programmable web. It understands your documents and provides an API to handle atomic deploys of websites, manage form submissions, inject JavaScript snippets, and much more. This is a REST-style API that uses JSON for serialization and OAuth 2 for authentication.\n\nThis document is an OpenAPI reference for the Netlify API that you can explore. For more detailed instructions for common uses, please visit the [online documentation](https://www.netlify.com/docs/api/). Visit our Community forum to join the conversation about [understanding and using Netlify's API](https://community.netlify.com/t/common-issue-understanding-and-using-netlifys-api/160).\n\nAdditionally, we have two API clients for your convenience:\n- [Go Client](https://github.com/netlify/open-api#go-client)\n- [JS Client](https://github.com/netlify/build/tree/main/packages/js-client)", + "termsOfService": "https://www.netlify.com/legal/terms-of-use/", + "x-logo": { + "url": "netlify-logo.png", + "href": "https://www.netlify.com/docs/", + "altText": "Netlify" + } + }, + "externalDocs": { + "url": "https://www.netlify.com/docs/api/", + "description": "Online documentation" + }, + "security": [ + { + "netlifyAuth": [] + } + ], + "paths": { + "/sites": { + "get": { + "operationId": "listSites", + "tags": [ + "site" + ], + "parameters": [ + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "schema": { + "type": "string", + "enum": [ + "all", + "owner", + "guest" + ] + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables." + }, + "post": { + "operationId": "createSite", + "tags": [ + "site" + ], + "parameters": [ + { + "name": "configure_dns", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteSite" + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site." + } + }, + "/sites/{site_id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSite", + "tags": [ + "site" + ], + "parameters": [ + { + "name": "feature_flags", + "x-internal": true, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables." + }, + "patch": { + "operationId": "updateSite", + "tags": [ + "site" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteSite" + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [updateEnvVar](#tag/environmentVariables/operation/updateEnvVar) to update a site's environment variables." + }, + "delete": { + "operationId": "deleteSite", + "tags": [ + "site" + ], + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/ssl": { + "post": { + "operationId": "provisionSiteTLSCertificate", + "tags": [ + "sniCertificate" + ], + "description": "Provisions or updates a TLS certificate for the site.\n\n**Creating a certificate (site has no certificate):**\n- Omit certificate params to initiate Let's Encrypt provisioning\n- Provide certificate, key, and ca_certificates to upload a custom certificate\n\n**Updating a certificate (site already has a certificate):**\n- REQUIRES certificate, key, and ca_certificates to replace with a new custom certificate\n- Use POST /api/v1/sites/{site_id}/ssl/renew to renew an existing Let's Encrypt certificate", + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "certificate", + "in": "query", + "description": "PEM-encoded certificate. Required when updating an existing certificate.", + "schema": { + "type": "string" + } + }, + { + "name": "key", + "in": "query", + "description": "PEM-encoded private key. Required when updating an existing certificate.", + "schema": { + "type": "string" + } + }, + { + "name": "ca_certificates", + "in": "query", + "description": "PEM-encoded CA certificate chain. Required when updating an existing certificate.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "state": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "expires_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "422": { + "description": "Unprocessable Entity. Returns errors such as: \"certificate parameter is required when updating an existing certificate\" (when updating without params), \"No custom domain configured\", or \"bad dns for custom domain\"" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "get": { + "operationId": "showSiteTLSCertificate", + "tags": [ + "sniCertificate" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "state": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "expires_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/ssl/certificates": { + "get": { + "operationId": "getAllCertificates", + "tags": [ + "sniCertificate" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "domain", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Array of SNI Certificates", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "state": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "expires_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Unprocessable Entity" + } + } + } + }, + "/accounts/{account_id}/env": { + "get": { + "tags": [ + "environmentVariables" + ], + "operationId": "getEnvVars", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "context_name", + "description": "Filter by deploy context", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production" + ] + } + }, + { + "name": "scope", + "description": "Filter by scope", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + }, + { + "name": "site_id", + "description": "If specified, only return environment variables set on this site", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "Returns all environment variables for an account or site. An account corresponds to a team in the Netlify UI." + }, + "post": { + "tags": [ + "environmentVariables" + ], + "operationId": "createEnvVars", + "description": "Creates new environment variables. Granular scopes are available on Pro plans and above.", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "site_id", + "description": "If provided, create an environment variable on the site level, not the account level", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The existing or new name of the key, if you wish to rename it (case-sensitive)" + }, + "scopes": { + "description": "The scopes that this environment variable is set to (Pro plans and above)", + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + } + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + } + } + } + } + } + } + }, + "responses": { + "201": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/accounts/{account_id}/env/{key}": { + "get": { + "tags": [ + "environmentVariables" + ], + "operationId": "getEnvVar", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "key", + "description": "The environment variable key (case-sensitive)", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "site_id", + "description": "If provided, return the environment variable for a specific site (no merging is performed)", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "Returns an individual environment variable." + }, + "put": { + "tags": [ + "environmentVariables" + ], + "operationId": "updateEnvVar", + "description": "Updates an existing environment variable and all of its values. Existing values will be replaced by values provided.", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "key", + "description": "The existing environment variable key name (case-sensitive)", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "site_id", + "description": "If provided, update an environment variable set on this site", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The existing or new name of the key, if you wish to rename it (case-sensitive)" + }, + "scopes": { + "description": "The scopes that this environment variable is set to (Pro plans and above)", + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + } + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "patch": { + "tags": [ + "environmentVariables" + ], + "operationId": "setEnvVarValue", + "description": "Updates or creates a new value for an existing environment variable.", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "key", + "description": "The existing environment variable key name (case-sensitive)", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "site_id", + "description": "If provided, update an environment variable set on this site", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "context": { + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. `branch` must be provided with a value in `context_parameter`.", + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ] + }, + "context_parameter": { + "description": "An additional parameter for custom branches. Currently, this is used for providing a branch name when `context=branch`.", + "type": "string" + }, + "value": { + "description": "The environment variable's unencrypted value", + "type": "string" + } + } + } + } + } + }, + "responses": { + "201": { + "description": "Created (success)", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "environmentVariables" + ], + "operationId": "deleteEnvVar", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "key", + "description": "The environment variable key (case-sensitive)", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "site_id", + "description": "If provided, delete the environment variable from this site", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content (success)" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "Deletes an environment variable" + } + }, + "/accounts/{account_id}/env/{key}/value/{id}": { + "delete": { + "tags": [ + "environmentVariables" + ], + "operationId": "deleteEnvVarValue", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "id", + "description": "The environment variable value's ID", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "key", + "description": "The environment variable key name (case-sensitive)", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "site_id", + "description": "If provided, delete the value from an environment variable on this site", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content (success)" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "Deletes a specific environment variable value." + } + }, + "/sites/{site_id}/functions": { + "get": { + "operationId": "searchSiteFunctions", + "tags": [ + "function" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "branch": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "functions": { + "type": "array", + "items": { + "type": "object" + } + }, + "id": { + "type": "string" + }, + "log_type": { + "type": "string" + }, + "provider": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/forms": { + "get": { + "operationId": "listSiteForms", + "tags": [ + "form" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "paths": { + "type": "array", + "items": { + "type": "string" + } + }, + "submission_count": { + "type": "integer", + "format": "int32" + }, + "fields": { + "type": "array", + "items": { + "type": "object" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/forms/{form_id}": { + "delete": { + "operationId": "deleteSiteForm", + "tags": [ + "form" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "form_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/submissions": { + "get": { + "operationId": "listSiteSubmissions", + "tags": [ + "submission" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "number": { + "type": "integer", + "format": "int32" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + }, + "company": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "site_url": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/files": { + "get": { + "operationId": "listSiteFiles", + "tags": [ + "file" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "mime_type": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/assets": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listSiteAssets", + "tags": [ + "asset" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createSiteAsset", + "tags": [ + "asset" + ], + "parameters": [ + { + "name": "name", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "size", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "content_type", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "visibility", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "form": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "fields": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "asset": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/assets/{asset_id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "asset_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSiteAssetInfo", + "tags": [ + "asset" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteAsset", + "tags": [ + "asset" + ], + "parameters": [ + { + "name": "state", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Updated", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteAsset", + "tags": [ + "asset" + ], + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/assets/{asset_id}/public_signature": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "asset_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSiteAssetPublicSignature", + "tags": [ + "assetPublicSignature" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/files/{file_path}": { + "get": { + "operationId": "getSiteFileByPathName", + "tags": [ + "file" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "file_path", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "mime_type": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/purge": { + "post": { + "operationId": "purgeCache", + "description": "Purges cached content from Netlify's CDN. Supports purging by Cache-Tag.", + "tags": [ + "purge" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "site_id": { + "type": "string" + }, + "site_slug": { + "type": "string" + }, + "cache_tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "required": true + }, + "responses": { + "202": { + "description": "OK" + }, + "400": { + "description": "Invalid request parameters" + }, + "404": { + "description": "Site not found" + } + } + } + }, + "/sites/{site_id}/snippets": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listSiteSnippets", + "tags": [ + "snippet" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createSiteSnippet", + "tags": [ + "snippet" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteSnippetSnippet" + }, + "responses": { + "201": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/snippets/{snippet_id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snippet_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSiteSnippet", + "tags": [ + "snippet" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteSnippet", + "tags": [ + "snippet" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteSnippetSnippet" + }, + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteSnippet", + "tags": [ + "snippet" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/metadata": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSiteMetadata", + "tags": [ + "metadata" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteMetadata", + "tags": [ + "metadata" + ], + "requestBody": { + "$ref": "#/components/requestBodies/updateSiteMetadataMetadata" + }, + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/build_hooks": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listSiteBuildHooks", + "tags": [ + "buildHook" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createSiteBuildHook", + "tags": [ + "buildHook" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteBuildHookBuildhook" + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/build_hooks/{id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSiteBuildHook", + "tags": [ + "buildHook" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteBuildHook", + "tags": [ + "buildHook" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteBuildHookBuildhook" + }, + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteBuildHook", + "tags": [ + "buildHook" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/deploys": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deploy-previews", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "production", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "state", + "in": "query", + "schema": { + "type": "string", + "enum": [ + "new", + "pending_review", + "accepted", + "rejected", + "enqueued", + "building", + "uploading", + "uploaded", + "preparing", + "prepared", + "processing", + "processed", + "ready", + "error", + "retrying" + ] + } + }, + { + "name": "branch", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "latest-published", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "get": { + "operationId": "listSiteDeploys", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "title", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteDeployDeploy" + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/deploys/{deploy_id}": { + "get": { + "operationId": "getSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "commit_ref", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteDeployDeploy" + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/cancel": { + "post": { + "operationId": "cancelSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "Cancelled", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/deploys/{deploy_id}/restore": { + "post": { + "operationId": "restoreSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/builds": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listSiteBuilds", + "tags": [ + "build" + ], + "parameters": [ + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "done": { + "type": "boolean" + }, + "error": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createSiteBuild", + "tags": [ + "build" + ], + "description": "Runs a build for a site. The build will be scheduled to run at the first opportunity, but it might not start immediately if insufficient account build capacity is available.\n\nFiles for build can be uploaded as a zipped site using one of these methods:\n1. Set Content-Type to 'application/zip' and send the zip file as the raw request body\n2. Set Content-Type to 'multipart/form-data' and include the zip file in the 'zip' field\n", + "parameters": [ + { + "name": "branch", + "description": "If no branch is specified, it is treated as a production deploy If a branch IS specified and matches the main branch, it is also production If a branch is specified and doesn't match the main branch, it is a branch deploy", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "clear_cache", + "description": "Whether to clear the build cache before building", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "image", + "description": "The build image tag to use for the build", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "template_id", + "description": "The build template to use for the build", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "title", + "description": "The title of the build", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "zip": { + "description": "A zip file containing the site files to build.\nOnly used with Content-Type 'multipart/form-data'.\nAlternatively, set Content-Type to 'application/zip' and send the zip as the raw request body (no 'zip' parameter needed).\n", + "type": "string", + "format": "binary" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "done": { + "type": "boolean" + }, + "error": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/deployed-branches": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listSiteDeployedBranches", + "tags": [ + "deployedBranch" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/unlink_repo": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "put": { + "operationId": "unlinkSiteRepo", + "tags": [ + "site" + ], + "description": "[Beta] Unlinks the repo from the site.\n\nThis action will also:\n- Delete associated deploy keys\n- Delete outgoing webhooks for the repo\n- Delete the site's build hooks", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + } + } + }, + "404": { + "description": "Site not found" + } + } + } + }, + "/sites/{site_id}/enable": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "put": { + "operationId": "enableSite", + "tags": [ + "site" + ], + "description": "Re-enables a site that was previously disabled by the user. Sites that were disabled for usage exceeded or marked as spam cannot be re-enabled via this endpoint.", + "responses": { + "204": { + "description": "No content" + }, + "422": { + "description": "Cannot enable this site", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/disable": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "put": { + "operationId": "disableSite", + "tags": [ + "site" + ], + "description": "Disables a site, preventing it from serving content. The site can be re-enabled later using the enable endpoint.", + "parameters": [ + { + "name": "reason", + "in": "query", + "required": true, + "description": "Reason for disabling the site", + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/builds/{build_id}": { + "parameters": [ + { + "name": "build_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSiteBuild", + "tags": [ + "build" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "done": { + "type": "boolean" + }, + "error": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/builds/{build_id}/log": { + "parameters": [ + { + "name": "build_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "updateSiteBuildLog", + "tags": [ + "buildLogMsg" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/builds/{build_id}/start": { + "parameters": [ + { + "name": "build_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "buildbot_version", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "build_version", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "task_id", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "notifyBuildStart", + "tags": [ + "build" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/{account_id}/builds/status": { + "parameters": [ + { + "name": "account_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getAccountBuildStatus", + "tags": [ + "build" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "active": { + "type": "integer" + }, + "pending_concurrency": { + "type": "integer" + }, + "enqueued": { + "type": "integer" + }, + "build_count": { + "type": "integer" + }, + "minutes": { + "type": "object", + "properties": { + "current": { + "type": "integer" + }, + "current_average_sec": { + "type": "integer" + }, + "previous": { + "type": "integer" + }, + "period_start_date": { + "type": "string", + "format": "dateTime" + }, + "period_end_date": { + "type": "string", + "format": "dateTime" + }, + "last_updated_at": { + "type": "string", + "format": "dateTime" + }, + "included_minutes": { + "type": "string" + }, + "included_minutes_with_packs": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/dns": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getDNSForSite", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "configureDNSForSite", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/rollback": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "put": { + "operationId": "rollbackSiteDeploy", + "tags": [ + "deploy" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/deploys/{deploy_id}": { + "get": { + "operationId": "getDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/validations_report": { + "patch": { + "operationId": "updateDeployValidations", + "tags": [ + "deploy" + ], + "description": "Updates the deploy validations report for a deploy.", + "x-internal": true, + "x-controller": "api/v1/deploys", + "x-action": "validations_report", + "parameters": [ + { + "name": "deploy_id", + "description": "The ID of the deploy", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "secrets_scan": { + "type": "object" + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The id of the deploy validations report" + }, + "deploy_id": { + "type": "string", + "description": "The id of the deploy" + }, + "secret_scan_result": { + "type": "object", + "properties": { + "scannedFilesCount": { + "type": "integer", + "description": "The number of files scanned" + }, + "secretsScanMatches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of secrets scan matches" + } + } + } + } + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/lock": { + "post": { + "operationId": "lockDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/unlock": { + "post": { + "operationId": "unlockDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/files/{path}": { + "put": { + "operationId": "uploadDeployFile", + "tags": [ + "file" + ], + "parameters": [ + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "size", + "in": "query", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/uploadDeployFileFileBody" + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "mime_type": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/functions/{name}": { + "put": { + "operationId": "uploadDeployFunction", + "tags": [ + "function" + ], + "parameters": [ + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "runtime", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "invocation_mode", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "timeout", + "in": "query", + "schema": { + "type": "integer" + } + }, + { + "name": "size", + "in": "query", + "schema": { + "type": "integer" + } + }, + { + "name": "X-Nf-Retry-Count", + "in": "header", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/uploadDeployFileFileBody" + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "region": { + "type": "string" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/edge_functions/{code_sha}": { + "put": { + "operationId": "uploadDeployEdgeFunction", + "tags": [ + "edgeFunction" + ], + "parameters": [ + { + "name": "deploy_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "code_sha", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "X-Nf-Retry-Count", + "in": "header", + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/uploadDeployFileFileBody" + }, + "responses": { + "200": { + "description": "OK" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/forms/{form_id}/submissions": { + "get": { + "operationId": "listFormSubmissions", + "tags": [ + "submission" + ], + "parameters": [ + { + "name": "form_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "number": { + "type": "integer", + "format": "int32" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + }, + "company": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "site_url": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/hooks": { + "get": { + "operationId": "listHooksBySiteId", + "tags": [ + "hook" + ], + "parameters": [ + { + "name": "site_id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createHookBySiteId", + "tags": [ + "hook" + ], + "parameters": [ + { + "name": "site_id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/createHookBySiteIdHook" + }, + "responses": { + "201": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/hooks/{hook_id}": { + "parameters": [ + { + "name": "hook_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getHook", + "tags": [ + "hook" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "updateHook", + "tags": [ + "hook" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createHookBySiteIdHook" + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteHook", + "tags": [ + "hook" + ], + "responses": { + "204": { + "description": "No content" + } + } + } + }, + "/hooks/{hook_id}/enable": { + "parameters": [ + { + "name": "hook_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "enableHook", + "tags": [ + "hook" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/hooks/types": { + "get": { + "operationId": "listHookTypes", + "tags": [ + "hookType" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "string" + } + }, + "fields": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/oauth/tickets": { + "post": { + "operationId": "createTicket", + "tags": [ + "ticket" + ], + "parameters": [ + { + "name": "client_id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "authorized": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "401": { + "description": "OAuth application not found", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + }, + "422": { + "description": "Validation error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/oauth/tickets/{ticket_id}": { + "get": { + "operationId": "showTicket", + "tags": [ + "ticket" + ], + "parameters": [ + { + "name": "ticket_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "ok", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "authorized": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/oauth/tickets/{ticket_id}/exchange": { + "post": { + "operationId": "exchangeTicket", + "tags": [ + "accessToken" + ], + "parameters": [ + { + "name": "ticket_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "ok", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "access_token": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "user_email": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/deploy_keys": { + "get": { + "operationId": "listDeployKeys", + "tags": [ + "deployKey" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createDeployKey", + "tags": [ + "deployKey" + ], + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/deploy_keys/{key_id}": { + "parameters": [ + { + "name": "key_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getDeployKey", + "tags": [ + "deployKey" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteDeployKey", + "tags": [ + "deployKey" + ], + "responses": { + "204": { + "description": "Not Content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/{account_slug}/sites": { + "post": { + "operationId": "createSiteInTeam", + "tags": [ + "site" + ], + "parameters": [ + { + "name": "configure_dns", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "account_slug", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + }, + { + "properties": { + "repo": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + } + } + } + ] + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site." + }, + "get": { + "operationId": "listSitesForAccount", + "tags": [ + "site" + ], + "parameters": [ + { + "name": "name", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "account_slug", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables." + } + }, + "/{account_slug}/members": { + "parameters": [ + { + "name": "account_slug", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listMembersForAccount", + "tags": [ + "member" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "role": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "addMemberToAccount", + "tags": [ + "member" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "role": { + "type": "string", + "enum": [ + "Owner", + "Developer", + "Billing Admin", + "Reviewer" + ] + }, + "email": { + "type": "string" + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "role": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/{account_slug}/members/{member_id}": { + "parameters": [ + { + "name": "account_slug", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "member_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getAccountMember", + "tags": [ + "member" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "role": { + "type": "string" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "updateAccountMember", + "tags": [ + "member" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "role": { + "type": "string", + "enum": [ + "Owner", + "Developer", + "Billing Admin", + "Reviewer" + ] + }, + "site_access": { + "type": "string", + "enum": [ + "all", + "none", + "selected" + ] + }, + "site_ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "role": { + "type": "string" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "removeAccountMember", + "tags": [ + "member" + ], + "responses": { + "204": { + "description": "Not Content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/billing/payment_methods": { + "get": { + "operationId": "listPaymentMethodsForUser", + "tags": [ + "paymentMethod" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "method_name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "state": { + "type": "string" + }, + "data": { + "type": "object", + "properties": { + "card_type": { + "type": "string" + }, + "last4": { + "type": "string" + }, + "email": { + "type": "string" + } + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/accounts/types": { + "get": { + "operationId": "listAccountTypesForUser", + "tags": [ + "accountType" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "capabilities": { + "type": "object" + }, + "monthly_dollar_price": { + "type": "integer" + }, + "yearly_dollar_price": { + "type": "integer" + }, + "monthly_seats_addon_dollar_price": { + "type": "integer" + }, + "yearly_seats_addon_dollar_price": { + "type": "integer" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/accounts": { + "get": { + "operationId": "listAccountsForUser", + "tags": [ + "accountMembership" + ], + "parameters": [ + { + "name": "minimal", + "x-internal": true, + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "sites": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "collaborators": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + } + } + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + }, + "billing_period": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "type_name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "owner_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles_allowed": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createAccount", + "tags": [ + "accountMembership" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "name", + "type_id" + ], + "properties": { + "name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "period": { + "type": "string", + "enum": [ + "monthly", + "yearly" + ] + }, + "extra_seats_block": { + "type": "integer" + } + } + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "sites": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "collaborators": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + } + } + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + }, + "billing_period": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "type_name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "owner_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles_allowed": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/accounts/{account_id}": { + "parameters": [ + { + "name": "account_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getAccount", + "tags": [ + "accountMembership" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "sites": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "collaborators": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + } + } + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + }, + "billing_period": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "type_name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "owner_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles_allowed": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "updateAccount", + "tags": [ + "accountMembership" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "extra_seats_block": { + "type": "integer" + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "sites": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "collaborators": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + } + } + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + }, + "billing_period": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "type_name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "owner_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles_allowed": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "cancelAccount", + "tags": [ + "accountMembership" + ], + "responses": { + "204": { + "description": "Not Content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/accounts/{account_id}/audit": { + "parameters": [ + { + "name": "account_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listAccountAuditEvents", + "tags": [ + "auditLog" + ], + "parameters": [ + { + "name": "query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "log_type", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "account_id": { + "type": "string" + }, + "payload": { + "type": "object", + "properties": { + "actor_id": { + "type": "string" + }, + "actor_name": { + "type": "string" + }, + "actor_email": { + "type": "string" + }, + "action": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "dateTime" + }, + "log_type": { + "type": "string" + } + }, + "additionalProperties": { + "type": "object" + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/agent_runners": { + "get": { + "operationId": "listAgentRunners", + "tags": [ + "agentRunner" + ], + "parameters": [ + { + "name": "account_id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "site_id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "state", + "in": "query", + "schema": { + "type": "string", + "enum": [ + "live", + "error" + ] + } + }, + { + "name": "title", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "branch", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "result_branch", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "from", + "in": "query", + "schema": { + "type": "integer" + } + }, + { + "name": "to", + "in": "query", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "parent_agent_runner_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "result_branch": { + "type": "string" + }, + "pr_url": { + "type": "string" + }, + "pr_branch": { + "type": "string" + }, + "pr_state": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "pr_is_being_created": { + "type": "boolean" + }, + "pr_error": { + "type": "string" + }, + "current_task": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "merge_commit_sha": { + "type": "string" + }, + "merge_commit_error": { + "type": "string" + }, + "merge_commit_is_being_created": { + "type": "boolean" + }, + "base_deploy_id": { + "type": "string" + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "active_session_created_at": { + "type": "string", + "format": "dateTime" + }, + "latest_session_deploy_id": { + "type": "string" + }, + "latest_session_deploy_url": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createAgentRunner", + "tags": [ + "agentRunner" + ], + "parameters": [ + { + "name": "site_id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deploy_id", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "branch", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "prompt", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "agent", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "model", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "parent_agent_runner_id", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "dev_server_image", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "file_keys", + "in": "query", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "parent_agent_runner_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "result_branch": { + "type": "string" + }, + "pr_url": { + "type": "string" + }, + "pr_branch": { + "type": "string" + }, + "pr_state": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "pr_is_being_created": { + "type": "boolean" + }, + "pr_error": { + "type": "string" + }, + "current_task": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "merge_commit_sha": { + "type": "string" + }, + "merge_commit_error": { + "type": "string" + }, + "merge_commit_is_being_created": { + "type": "boolean" + }, + "base_deploy_id": { + "type": "string" + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "active_session_created_at": { + "type": "string", + "format": "dateTime" + }, + "latest_session_deploy_id": { + "type": "string" + }, + "latest_session_deploy_url": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + } + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/agent_runners/upload_url": { + "post": { + "x-internal": true, + "operationId": "createAgentRunnerUploadUrl", + "tags": [ + "agentRunner" + ], + "parameters": [ + { + "name": "account_id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "filename", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "content_type", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}": { + "parameters": [ + { + "name": "agent_runner_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getAgentRunner", + "tags": [ + "agentRunner" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "parent_agent_runner_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "result_branch": { + "type": "string" + }, + "pr_url": { + "type": "string" + }, + "pr_branch": { + "type": "string" + }, + "pr_state": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "pr_is_being_created": { + "type": "boolean" + }, + "pr_error": { + "type": "string" + }, + "current_task": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "merge_commit_sha": { + "type": "string" + }, + "merge_commit_error": { + "type": "string" + }, + "merge_commit_is_being_created": { + "type": "boolean" + }, + "base_deploy_id": { + "type": "string" + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "active_session_created_at": { + "type": "string", + "format": "dateTime" + }, + "latest_session_deploy_id": { + "type": "string" + }, + "latest_session_deploy_url": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "patch": { + "operationId": "updateAgentRunner", + "tags": [ + "agentRunner" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "parent_agent_runner_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "result_branch": { + "type": "string" + }, + "pr_url": { + "type": "string" + }, + "pr_branch": { + "type": "string" + }, + "pr_state": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "pr_is_being_created": { + "type": "boolean" + }, + "pr_error": { + "type": "string" + }, + "current_task": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "merge_commit_sha": { + "type": "string" + }, + "merge_commit_error": { + "type": "string" + }, + "merge_commit_is_being_created": { + "type": "boolean" + }, + "base_deploy_id": { + "type": "string" + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "active_session_created_at": { + "type": "string", + "format": "dateTime" + }, + "latest_session_deploy_id": { + "type": "string" + }, + "latest_session_deploy_url": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteAgentRunner", + "tags": [ + "agentRunner" + ], + "responses": { + "202": { + "description": "Accepted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}/archive": { + "parameters": [ + { + "name": "agent_runner_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "archiveAgentRunner", + "tags": [ + "agentRunner" + ], + "responses": { + "202": { + "description": "Accepted" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}/pull_request": { + "parameters": [ + { + "name": "agent_runner_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "x-internal": true, + "operationId": "agentRunnerPullRequest", + "tags": [ + "agentRunner" + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request" + }, + "409": { + "description": "Conflict" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}/commit": { + "parameters": [ + { + "name": "agent_runner_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "x-internal": true, + "operationId": "agentRunnerCommitToBranch", + "tags": [ + "agentRunner" + ], + "parameters": [ + { + "name": "target_branch", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request" + }, + "409": { + "description": "Conflict" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}/sessions": { + "parameters": [ + { + "name": "agent_runner_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listAgentRunnerSessions", + "tags": [ + "agentRunnerSession" + ], + "parameters": [ + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "state", + "in": "query", + "schema": { + "type": "string", + "enum": [ + "live", + "error" + ] + } + }, + { + "name": "from", + "in": "query", + "schema": { + "type": "integer" + } + }, + { + "name": "to", + "in": "query", + "schema": { + "type": "integer" + } + }, + { + "name": "order_by", + "in": "query", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "agent_runner_id": { + "type": "string" + }, + "dev_server_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent_config": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "result": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "commit_sha": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "result_zip_file_name": { + "type": "string" + }, + "is_published": { + "type": "boolean" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createAgentRunnerSession", + "tags": [ + "agentRunnerSession" + ], + "parameters": [ + { + "name": "prompt", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "agent", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "model", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "file_keys", + "in": "query", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "agent_runner_id": { + "type": "string" + }, + "dev_server_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent_config": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "result": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "commit_sha": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "result_zip_file_name": { + "type": "string" + }, + "is_published": { + "type": "boolean" + } + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id}": { + "parameters": [ + { + "name": "agent_runner_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "agent_runner_session_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getAgentRunnerSession", + "tags": [ + "agentRunnerSession" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "agent_runner_id": { + "type": "string" + }, + "dev_server_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent_config": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "result": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "commit_sha": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "result_zip_file_name": { + "type": "string" + }, + "is_published": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "patch": { + "operationId": "updateAgentRunnerSession", + "tags": [ + "agentRunnerSession" + ], + "parameters": [ + { + "name": "is_published", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "agent_runner_id": { + "type": "string" + }, + "dev_server_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent_config": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "result": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "commit_sha": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "result_zip_file_name": { + "type": "string" + }, + "is_published": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteAgentRunnerSession", + "tags": [ + "agentRunnerSession" + ], + "responses": { + "202": { + "description": "Accepted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/submissions/{submission_id}": { + "parameters": [ + { + "name": "submission_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listFormSubmission", + "tags": [ + "submission" + ], + "parameters": [ + { + "name": "query", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "number": { + "type": "integer", + "format": "int32" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + }, + "company": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "site_url": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSubmission", + "tags": [ + "submission" + ], + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/service-instances": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listServiceInstancesForSite", + "tags": [ + "serviceInstance" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "config": { + "type": "object" + }, + "external_attributes": { + "type": "object" + }, + "service_slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "service_name": { + "type": "string" + }, + "env": { + "type": "object" + }, + "snippets": { + "type": "array", + "items": { + "type": "object" + } + }, + "auth_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/services/{addon}/instances": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "addon", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "createServiceInstance", + "tags": [ + "serviceInstance" + ], + "requestBody": { + "$ref": "#/components/requestBodies/updateSiteMetadataMetadata" + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "config": { + "type": "object" + }, + "external_attributes": { + "type": "object" + }, + "service_slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "service_name": { + "type": "string" + }, + "env": { + "type": "object" + }, + "snippets": { + "type": "array", + "items": { + "type": "object" + } + }, + "auth_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/services/{addon}/instances/{instance_id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "addon", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "instance_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "showServiceInstance", + "tags": [ + "serviceInstance" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "config": { + "type": "object" + }, + "external_attributes": { + "type": "object" + }, + "service_slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "service_name": { + "type": "string" + }, + "env": { + "type": "object" + }, + "snippets": { + "type": "array", + "items": { + "type": "object" + } + }, + "auth_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "updateServiceInstance", + "tags": [ + "serviceInstance" + ], + "requestBody": { + "$ref": "#/components/requestBodies/updateSiteMetadataMetadata" + }, + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteServiceInstance", + "tags": [ + "serviceInstance" + ], + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/services/": { + "parameters": [ + { + "name": "search", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getServices", + "tags": [ + "service" + ], + "responses": { + "200": { + "description": "services", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "long_description": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "object" + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "icon": { + "type": "string" + }, + "manifest_url": { + "type": "string" + }, + "environments": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/services/{addonName}": { + "parameters": [ + { + "name": "addonName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "showService", + "tags": [ + "service" + ], + "responses": { + "200": { + "description": "services", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "long_description": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "object" + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "icon": { + "type": "string" + }, + "manifest_url": { + "type": "string" + }, + "environments": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/services/{addonName}/manifest": { + "parameters": [ + { + "name": "addonName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "showServiceManifest", + "tags": [ + "service" + ], + "responses": { + "201": { + "description": "retrieving from provider", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/user": { + "get": { + "operationId": "getCurrentUser", + "tags": [ + "user" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "avatar_url": { + "type": "string" + }, + "email": { + "type": "string" + }, + "affiliate_id": { + "type": "string" + }, + "site_count": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "last_login": { + "type": "string", + "format": "dateTime" + }, + "login_providers": { + "type": "array", + "items": { + "type": "string" + } + }, + "onboarding_progress": { + "type": "object", + "properties": { + "slides": { + "type": "string" + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/traffic_splits": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "createSplitTest", + "tags": [ + "splitTest" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSplitTestBranchTests" + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "get": { + "operationId": "getSplitTests", + "tags": [ + "splitTest" + ], + "responses": { + "200": { + "description": "split_tests", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/traffic_splits/{split_test_id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "split_test_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "put": { + "operationId": "updateSplitTest", + "tags": [ + "splitTest" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSplitTestBranchTests" + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "get": { + "operationId": "getSplitTest", + "tags": [ + "splitTest" + ], + "responses": { + "200": { + "description": "split_test", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/traffic_splits/{split_test_id}/publish": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "split_test_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "enableSplitTest", + "tags": [ + "splitTest" + ], + "responses": { + "204": { + "description": "enable" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/traffic_splits/{split_test_id}/unpublish": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "split_test_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "disableSplitTest", + "tags": [ + "splitTest" + ], + "responses": { + "204": { + "description": "disabled" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/dns_zones": { + "post": { + "operationId": "createDnsZone", + "tags": [ + "dnsZone" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "account_slug": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "get": { + "operationId": "getDnsZones", + "tags": [ + "dnsZone" + ], + "parameters": [ + { + "name": "account_slug", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "get all DNS zones the user has access to", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/dns_zones/{zone_id}": { + "parameters": [ + { + "name": "zone_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getDnsZone", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "get a single DNS zone", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteDnsZone", + "tags": [ + "dnsZone" + ], + "responses": { + "204": { + "description": "delete a single DNS zone" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/dns_zones/{zone_id}/transfer": { + "parameters": [ + { + "name": "zone_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "account_id", + "in": "query", + "description": "the account of the dns zone", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "transfer_account_id", + "in": "query", + "description": "the account you want to transfer the dns zone to", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "transfer_user_id", + "in": "query", + "description": "the user you want to transfer the dns zone to", + "required": true, + "schema": { + "type": "string" + } + } + ], + "put": { + "operationId": "transferDnsZone", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "transfer a DNS zone to another account", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/dns_zones/{zone_id}/dns_records": { + "parameters": [ + { + "name": "zone_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getDnsRecords", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "get all DNS records for a single DNS zone", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createDnsRecord", + "tags": [ + "dnsZone" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "weight": { + "type": "integer", + "format": "int64" + }, + "port": { + "type": "integer", + "format": "int64" + }, + "flag": { + "type": "integer", + "format": "int64" + }, + "tag": { + "type": "string" + } + } + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/dns_zones/{zone_id}/dns_records/{dns_record_id}": { + "parameters": [ + { + "name": "zone_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dns_record_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getIndividualDnsRecord", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "get a single DNS record", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteDnsRecord", + "tags": [ + "dnsZone" + ], + "responses": { + "204": { + "description": "record deleted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/dev_servers": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listSiteDevServers", + "tags": [ + "devServer" + ], + "parameters": [ + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "starting_at": { + "type": "string", + "format": "dateTime" + }, + "error_at": { + "type": "string", + "format": "dateTime" + }, + "live_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createSiteDevServer", + "tags": [ + "devServer" + ], + "parameters": [ + { + "name": "branch", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "starting_at": { + "type": "string", + "format": "dateTime" + }, + "error_at": { + "type": "string", + "format": "dateTime" + }, + "live_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteDevServers", + "tags": [ + "devServer" + ], + "parameters": [ + { + "name": "branch", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "202": { + "description": "OK" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/dev_servers/{dev_server_id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dev_server_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSiteDevServer", + "tags": [ + "devServer" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "starting_at": { + "type": "string", + "format": "dateTime" + }, + "error_at": { + "type": "string", + "format": "dateTime" + }, + "live_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/dev_servers/{dev_server_id}/activity": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dev_server_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "x-internal": true, + "operationId": "markDevServerActivity", + "tags": [ + "devServer" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/sites/{site_id}/dev_servers/{dev_server_id}/state": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dev_server_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "updateDevServerState", + "tags": [ + "devServer" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "state" + ], + "properties": { + "state": { + "type": "string", + "enum": [ + "starting", + "live", + "error", + "done" + ] + }, + "task_id": { + "type": "string" + }, + "error": { + "type": "string" + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "starting_at": { + "type": "string", + "format": "dateTime" + }, + "error_at": { + "type": "string", + "format": "dateTime" + }, + "live_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + } + } + } + } + } + }, + "409": { + "description": "Conflict" + } + } + } + }, + "/sites/{site_id}/dev_server_hooks": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listSiteDevServerHooks", + "tags": [ + "devServerHook" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "operationId": "createSiteDevServerHook", + "tags": [ + "devServerHook" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteDevServerHookDevserverhook" + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/dev_server_hooks/{id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSiteDevServerHook", + "tags": [ + "devServerHook" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteDevServerHook", + "tags": [ + "devServerHook" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteDevServerHookDevserverhook" + }, + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteDevServerHook", + "tags": [ + "devServerHook" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/agent_runner_hooks": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "x-internal": true, + "operationId": "listSiteAgentRunnerHooks", + "tags": [ + "agentRunnerHook" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "url": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "post": { + "x-internal": true, + "operationId": "createSiteAgentRunnerHook", + "tags": [ + "agentRunnerHook" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteAgentRunnerHookAgentrunnerhook" + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "url": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + { + "properties": { + "secret": { + "type": "string" + } + } + } + ] + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/agent_runner_hooks/{id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "x-internal": true, + "operationId": "getSiteAgentRunnerHook", + "tags": [ + "agentRunnerHook" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "url": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "put": { + "x-internal": true, + "operationId": "updateSiteAgentRunnerHook", + "tags": [ + "agentRunnerHook" + ], + "requestBody": { + "$ref": "#/components/requestBodies/createSiteAgentRunnerHookAgentrunnerhook" + }, + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "x-internal": true, + "operationId": "deleteSiteAgentRunnerHook", + "tags": [ + "agentRunnerHook" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/ai-gateway/providers": { + "get": { + "operationId": "getAIGatewayProviders", + "tags": [ + "aiGateway" + ], + "security": [], + "responses": { + "200": { + "description": "The mapping of providers and supported models", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "providers": { + "additionalProperties": { + "type": "object", + "properties": { + "token_env_var": { + "type": "string" + }, + "url_env_var": { + "type": "string" + }, + "models": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/ai-gateway/token": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "description": "The site ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getAIGatewayToken", + "tags": [ + "aiGateway" + ], + "responses": { + "200": { + "description": "AI Gateway token for the site", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string", + "description": "The AI Gateway authentication token" + }, + "url": { + "type": "string", + "description": "AI gateway base url" + }, + "expires_at": { + "type": "integer", + "format": "int64", + "description": "Unix timestamp when the token expires" + } + } + } + } + } + }, + "404": { + "description": "AI Gateway not available for this site" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "Returns an AI Gateway token for a specific site" + } + }, + "/accounts/{account_id}/ai-gateway/token": { + "parameters": [ + { + "name": "account_id", + "in": "path", + "required": true, + "description": "The account ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getAccountAIGatewayToken", + "tags": [ + "aiGateway" + ], + "responses": { + "200": { + "description": "AI Gateway token for the account", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string", + "description": "The AI Gateway authentication token" + }, + "url": { + "type": "string", + "description": "AI gateway base url" + }, + "expires_at": { + "type": "integer", + "format": "int64", + "description": "Unix timestamp when the token expires" + } + } + } + } + } + }, + "404": { + "description": "AI Gateway not available for this account" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "Returns an AI Gateway token scoped to an account" + } + }, + "/sites/{site_id}/database": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "createSiteDatabase", + "tags": [ + "database" + ], + "description": "Creates a new database for the specified site. If a database already exists, returns the existing connection string. The database region defaults to the site's functions region if not specified.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Request body for creating a database", + "properties": { + "region": { + "type": "string", + "description": "The region where the database should be created. Defaults to the site's functions region if not specified." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Database already exists", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Response containing the database connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database" + } + } + } + } + } + }, + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Response containing the database connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "get": { + "operationId": "getSiteDatabase", + "tags": [ + "database" + ], + "description": "Returns the database connection string for the specified site.", + "parameters": [ + { + "name": "role", + "in": "query", + "description": "The database role to use for the connection string. Defaults to netlifydb_owner if not specified.", + "schema": { + "type": "string", + "enum": [ + "netlifydb_owner", + "netlifydb_readonly" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Response containing the database connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteDatabase", + "tags": [ + "database" + ], + "description": "Deletes the database and all associated branches and snapshots for the specified site.", + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/branch": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "createSiteDatabaseBranch", + "tags": [ + "database" + ], + "description": "Creates a new database branch. If a branch already exists for the specified branch ID, returns the existing connection string.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Request body for creating a database branch", + "required": [ + "branch_id" + ], + "properties": { + "parent_branch_id": { + "type": "string", + "description": "The ID of the parent branch to create the new branch from. Defaults to the production branch if not specified." + }, + "branch_id": { + "type": "string", + "description": "The branch identifier" + }, + "metadata": { + "type": "object", + "description": "Arbitrary metadata to associate with the branch", + "additionalProperties": true + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Branch already exists", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Response containing the database branch connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + } + } + } + }, + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Response containing the database branch connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/branches": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listSiteDatabaseBranches", + "tags": [ + "database" + ], + "description": "Returns all branches for the site's database with compute status and metadata.", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Response containing a list of database branches", + "properties": { + "branches": { + "type": "array", + "items": { + "type": "object", + "description": "Detailed information about a database branch", + "properties": { + "branch_id": { + "type": "string", + "description": "The branch identifier" + }, + "name": { + "type": "string", + "description": "The branch name" + }, + "connection_string": { + "type": "string", + "description": "The connection string for the branch" + }, + "state": { + "type": "string", + "description": "The current state of the branch", + "enum": [ + "init", + "creating", + "resetting", + "ready", + "archived" + ] + }, + "logical_size_bytes": { + "type": "integer", + "format": "int64", + "description": "The logical size of the branch in bytes" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was created" + }, + "updated_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last updated" + }, + "last_active_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last active" + }, + "compute": { + "type": "object", + "description": "Compute endpoint status for a branch", + "properties": { + "current_state": { + "type": "string", + "description": "The current state of the compute endpoint", + "enum": [ + "active", + "idle" + ] + }, + "autoscaling_limit_min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units for autoscaling" + }, + "autoscaling_limit_max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units for autoscaling" + }, + "suspend_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before the compute endpoint is suspended" + }, + "last_active": { + "type": "string", + "format": "dateTime", + "description": "When the compute endpoint was last active" + } + } + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + }, + "description": "List of database branches" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/branch/{branch_id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "branch_id", + "in": "path", + "required": true, + "description": "The branch ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSiteDatabaseBranch", + "tags": [ + "database" + ], + "description": "Returns the database branch connection string for a specific branch.", + "parameters": [ + { + "name": "role", + "in": "query", + "description": "The database role to use for the connection string. Defaults to netlifydb_owner if not specified.", + "schema": { + "type": "string", + "enum": [ + "netlifydb_owner", + "netlifydb_readonly" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Response containing the database branch connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + } + } + } + }, + "404": { + "description": "Branch not found" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteDatabaseBranch", + "tags": [ + "database" + ], + "description": "Deletes a database branch.", + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/branch/{branch_id}/reset": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "branch_id", + "in": "path", + "required": true, + "description": "The branch ID to reset", + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "resetSiteDatabaseBranch", + "tags": [ + "database" + ], + "description": "Resets a non-production database branch by re-forking it from a source branch (defaults to the production branch). If the target branch is already in sync with the source, returns the existing connection string without performing a reset, unless `force=true` is passed. The production branch cannot be reset.", + "parameters": [ + { + "name": "force", + "in": "query", + "description": "If true, resets the branch even when it is already in sync with the source.", + "schema": { + "type": "boolean" + } + }, + { + "name": "role", + "in": "query", + "description": "The database role to use for the returned connection string. Defaults to netlifydb_owner if not specified.", + "schema": { + "type": "string", + "enum": [ + "netlifydb_owner", + "netlifydb_readonly" + ] + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Request body for resetting a database branch", + "properties": { + "source_branch_id": { + "type": "string", + "description": "The ID of the branch to re-fork the target branch from. Defaults to \"production\" if not specified." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Response for a database branch reset", + "properties": { + "reset": { + "type": "boolean", + "description": "Whether the branch was actually re-forked. False when the target was already in sync with the source and `force=true` was not set." + }, + "connection_string": { + "type": "string", + "description": "The connection string for the reset (or unchanged) branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + } + } + } + }, + "400": { + "description": "Invalid request — for example, the target is the production branch or the source branch is the same as the target." + }, + "404": { + "description": "Database or branch not found" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/branch/{branch_id}/compute/settings": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "branch_id", + "in": "path", + "required": true, + "description": "The branch ID", + "schema": { + "type": "string" + } + } + ], + "put": { + "operationId": "setSiteDatabaseBranchComputeSettings", + "tags": [ + "database" + ], + "description": "Sets compute settings for a specific database branch, overriding project-level settings. Requires a Pro or higher plan.", + "requestBody": { + "$ref": "#/components/requestBodies/setSiteDatabaseBranchComputeSettingsComputesettings" + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Compute settings for a database or branch", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units" + }, + "max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units" + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before suspension" + } + } + } + } + } + }, + "403": { + "description": "Compute customization requires a Pro or higher plan" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/compute/settings": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "put": { + "operationId": "setSiteDatabaseComputeSettings", + "tags": [ + "database" + ], + "description": "Sets project-level compute settings for the database. Applied to new branches. Can be overridden per-branch. Requires a Pro or higher plan.", + "requestBody": { + "$ref": "#/components/requestBodies/setSiteDatabaseBranchComputeSettingsComputesettings" + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Compute settings for a database or branch", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units" + }, + "max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units" + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before suspension" + } + } + } + } + } + }, + "403": { + "description": "Compute customization requires a Pro or higher plan" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "get": { + "operationId": "getSiteDatabaseComputeSettings", + "tags": [ + "database" + ], + "description": "Returns the project-level compute settings for the database. Returns effective settings (custom or tier defaults). Requires a Pro or higher plan.", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Compute settings for a database or branch", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units" + }, + "max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units" + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before suspension" + } + } + } + } + } + }, + "403": { + "description": "Compute customization requires a Pro or higher plan" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + }, + "delete": { + "operationId": "clearSiteDatabaseComputeSettings", + "tags": [ + "database" + ], + "description": "Resets project-level compute settings to tier defaults. Requires a Pro or higher plan.", + "responses": { + "204": { + "description": "Cleared" + }, + "403": { + "description": "Compute customization requires a Pro or higher plan" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/migrations": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listSiteDatabaseMigrations", + "tags": [ + "database" + ], + "description": "Returns the list of migrations available for the specified branch, indicating which ones have been applied to the database.", + "parameters": [ + { + "name": "branch", + "in": "query", + "description": "The branch ID to list migrations for. Defaults to \"production\" if not specified.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Response containing the list of migrations for a branch", + "properties": { + "migrations": { + "type": "array", + "items": { + "type": "object", + "description": "A migration available to a database branch", + "properties": { + "version": { + "type": "integer", + "format": "int64", + "description": "The migration version number" + }, + "name": { + "type": "string", + "description": "The migration name" + }, + "path": { + "type": "string", + "description": "The path to the migration file in the deploy bundle" + }, + "applied": { + "type": "boolean", + "description": "Whether this migration has been applied to the branch" + } + } + }, + "description": "List of migrations" + } + } + } + } + } + }, + "404": { + "description": "Database or branch not found" + }, + "423": { + "description": "Database is disabled" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/migrations/{name}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The migration name", + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "getSiteDatabaseMigration", + "tags": [ + "database" + ], + "description": "Returns the contents of a named migration for the specified branch.", + "parameters": [ + { + "name": "branch", + "in": "query", + "description": "The branch ID to look up the migration on. Defaults to the currently published deploy's branch.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "A migration with its file contents", + "properties": { + "version": { + "type": "integer", + "format": "int64", + "description": "The migration version number" + }, + "name": { + "type": "string", + "description": "The migration name" + }, + "path": { + "type": "string", + "description": "The path to the migration file in the deploy bundle" + }, + "content": { + "type": "string", + "description": "The raw contents of the migration file" + } + } + } + } + } + }, + "404": { + "description": "Migration, database, or branch not found" + }, + "423": { + "description": "Database is disabled" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/migrations/{deploy_id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deploy_id", + "in": "path", + "required": true, + "description": "The deploy ID to run migrations for", + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "runSiteDatabaseMigrations", + "tags": [ + "database" + ], + "description": "Runs database migrations for the specified deploy. Finds the deploy and determines the appropriate branch.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Request body for running database migrations", + "properties": { + "dry_run": { + "type": "boolean", + "description": "If true, validates migrations without applying them." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + }, + "409": { + "description": "Migration conflict - migration modified or removed after being applied" + }, + "422": { + "description": "Migration validation failed" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/snapshot": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "createSiteDatabaseSnapshot", + "tags": [ + "database" + ], + "description": "Creates a point-in-time snapshot of a database branch. Defaults to the production branch if no branch name is specified.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Request body for creating a database snapshot", + "properties": { + "branch_id": { + "type": "string", + "description": "The ID of the branch to snapshot. Defaults to \"production\" if not specified." + }, + "name": { + "type": "string", + "description": "A name for the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "A point-in-time snapshot of a database branch", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the snapshot" + }, + "source_branch_id": { + "type": "string", + "description": "The ID of the branch that was snapshotted" + }, + "manual": { + "type": "boolean", + "description": "Whether this snapshot was manually created" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot was created" + }, + "expires_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot expires" + }, + "timestamp": { + "type": "string", + "format": "dateTime", + "description": "The point-in-time timestamp of the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/snapshots": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "get": { + "operationId": "listSiteDatabaseSnapshots", + "tags": [ + "database" + ], + "description": "Returns all snapshots for the site's database.", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Response containing a list of database snapshots", + "properties": { + "snapshots": { + "type": "array", + "items": { + "type": "object", + "description": "A point-in-time snapshot of a database branch", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the snapshot" + }, + "source_branch_id": { + "type": "string", + "description": "The ID of the branch that was snapshotted" + }, + "manual": { + "type": "boolean", + "description": "Whether this snapshot was manually created" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot was created" + }, + "expires_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot expires" + }, + "timestamp": { + "type": "string", + "format": "dateTime", + "description": "The point-in-time timestamp of the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + }, + "description": "List of database snapshots" + } + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/snapshot/{snapshot_id}": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshot_id", + "in": "path", + "required": true, + "description": "The snapshot ID", + "schema": { + "type": "string" + } + } + ], + "delete": { + "operationId": "deleteSiteDatabaseSnapshot", + "tags": [ + "database" + ], + "description": "Deletes a database snapshot.", + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/database/snapshot/{snapshot_id}/restore": { + "parameters": [ + { + "name": "site_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshot_id", + "in": "path", + "required": true, + "description": "The snapshot ID to restore", + "schema": { + "type": "string" + } + } + ], + "post": { + "operationId": "restoreSiteDatabaseSnapshot", + "tags": [ + "database" + ], + "description": "Restores a snapshot to a database branch. Defaults to the production branch if no branch_name is specified.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Request body for restoring a database snapshot", + "properties": { + "branch_id": { + "type": "string", + "description": "The ID of the branch to restore the snapshot to. Defaults to \"production\" if not specified." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + } + } + }, + "/sites/{site_id}/env": { + "get": { + "tags": [ + "environmentVariables" + ], + "operationId": "getSiteEnvVars", + "parameters": [ + { + "name": "context_name", + "description": "Filter by deploy context", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production" + ] + } + }, + { + "name": "scope", + "description": "Filter by scope", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post_processing" + ] + } + }, + { + "name": "site_id", + "description": "Scope response to site_id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + } + } + } + }, + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "description": "Returns all environment variables for a site. This convenience method behaves the same as `getEnvVars` but doesn't require an `account_id` as input." + } + } + }, + "x-tagGroups": [ + { + "name": "OAuth", + "tags": [ + "ticket", + "accessToken" + ] + }, + { + "name": "User accounts", + "tags": [ + "user", + "accountMembership", + "member", + "accountType", + "paymentMethod", + "auditLog" + ] + }, + { + "name": "Site", + "tags": [ + "site", + "environmentVariables", + "file", + "metadata", + "purge", + "snippet" + ] + }, + { + "name": "Domain names", + "tags": [ + "dnsZone", + "sniCertificate" + ] + }, + { + "name": "Deploys", + "tags": [ + "deploy", + "deployedBranch", + "deployKey" + ] + }, + { + "name": "Builds", + "tags": [ + "build", + "buildLogMsg" + ] + }, + { + "name": "Dev servers", + "tags": [ + "devServer" + ] + }, + { + "name": "Webhooks and notifications", + "tags": [ + "hook", + "hookType", + "buildHook", + "devServerHook" + ] + }, + { + "name": "Services", + "tags": [ + "service", + "serviceInstance" + ] + }, + { + "name": "Functions", + "tags": [ + "function" + ] + }, + { + "name": "Database", + "tags": [ + "database" + ] + }, + { + "name": "Forms", + "tags": [ + "form", + "submission" + ] + }, + { + "name": "Split tests", + "tags": [ + "splitTest" + ] + }, + { + "name": "Large media", + "tags": [ + "asset", + "assetPublicSignature" + ] + } + ], + "tags": [ + { + "name": "ticket", + "x-displayName": "Ticket" + }, + { + "name": "accessToken", + "x-displayName": "Access token" + }, + { + "name": "user", + "x-displayName": "User" + }, + { + "name": "accountMembership", + "x-displayName": "Accounts" + }, + { + "name": "member", + "x-displayName": "Member" + }, + { + "name": "accountType", + "x-displayName": "Access type" + }, + { + "name": "paymentMethod", + "x-displayName": "Payment method" + }, + { + "name": "auditLog", + "x-displayName": "Audit log" + }, + { + "name": "site", + "x-displayName": "Site" + }, + { + "name": "environmentVariables", + "x-displayName": "Environment variables" + }, + { + "name": "file", + "x-displayName": "File" + }, + { + "name": "metadata", + "x-displayName": "Metadata" + }, + { + "name": "snippet", + "x-displayName": "Snippet" + }, + { + "name": "purge", + "x-displayName": "Cache purge" + }, + { + "name": "dnsZone", + "x-displayName": "DNS zone" + }, + { + "name": "sniCertificate", + "x-displayName": "SNI certificate" + }, + { + "name": "deploy", + "x-displayName": "Deploy" + }, + { + "name": "deployedBranch", + "x-displayName": "Deployed branch" + }, + { + "name": "deployKey", + "x-displayName": "Deploy key" + }, + { + "name": "build", + "x-displayName": "Build" + }, + { + "name": "buildLogMsg", + "x-displayName": "Build log message" + }, + { + "name": "hook", + "x-displayName": "Hook" + }, + { + "name": "hookType", + "x-displayName": "Hook type" + }, + { + "name": "buildHook", + "x-displayName": "Build hook" + }, + { + "name": "service", + "x-displayName": "Service" + }, + { + "name": "serviceInstance", + "x-displayName": "Service instance" + }, + { + "name": "function", + "x-displayName": "Function" + }, + { + "name": "form", + "x-displayName": "Form" + }, + { + "name": "submission", + "x-displayName": "Form submission" + }, + { + "name": "splitTest", + "x-displayName": "Split test" + }, + { + "name": "asset", + "x-displayName": "Asset" + }, + { + "name": "assetPublicSignature", + "x-displayName": "Asset public signature" + }, + { + "name": "devServer", + "x-displayName": "Dev server" + }, + { + "name": "devServerHook", + "x-displayName": "Dev server hook" + }, + { + "name": "database", + "x-displayName": "Database" + } + ], + "servers": [ + { + "url": "https://api.netlify.com/api/v1" + } + ], + "components": { + "parameters": { + "page": { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + "perPage": { + "name": "per_page", + "required": false, + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + "retryCount": { + "name": "X-Nf-Retry-Count", + "in": "header", + "schema": { + "type": "integer" + } + } + }, + "responses": { + "error": { + "description": "error", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + } + } + } + } + }, + "requestBodies": { + "updateSiteMetadataMetadata": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + }, + "required": true + }, + "createSiteSite": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + }, + { + "properties": { + "repo": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + } + } + } + ] + } + } + }, + "required": true + }, + "createHookBySiteIdHook": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + } + }, + "required": true + }, + "createSiteSnippetSnippet": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + } + } + }, + "required": true + }, + "uploadDeployFileFileBody": { + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + }, + "required": true + }, + "setSiteDatabaseBranchComputeSettingsComputesettings": { + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Request body for setting compute settings. All fields are optional; only provided fields are updated.", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "minimum": 0.25, + "maximum": 16, + "description": "Minimum compute units (0.25 to 16.0). Must be less than or equal to max_cu.", + "nullable": true + }, + "max_cu": { + "type": "number", + "format": "double", + "minimum": 0.25, + "maximum": 16, + "description": "Maximum compute units (0.25 to 16.0). Must be greater than or equal to min_cu. max_cu - min_cu must not exceed 8.0.", + "nullable": true + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "minimum": -1, + "description": "Seconds of inactivity before the compute endpoint is suspended. Use -1 for always on, or a non-negative value.", + "nullable": true + } + } + } + } + }, + "required": true + }, + "createSiteBuildHookBuildhook": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + } + } + } + } + }, + "required": true + }, + "createSiteDeployDeploy": { + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Deploy files can be provided in two ways:\n1. As a JSON object using 'files' (a hash mapping file paths to SHA1 digests), OR\n2. As a zip file using one of these methods:\n - Set Content-Type to 'application/zip' and send the zip file as the raw request body\n - Include the zip file content in the 'zip' field of this JSON object with Content-Type 'application/json'\n", + "properties": { + "files": { + "type": "object", + "description": "A hash mapping file paths to SHA1 digests of the file contents." + }, + "zip": { + "type": "string", + "format": "binary", + "description": "A zip file containing the site files to deploy. Alternative to 'files'.\nTo use this field, set Content-Type to 'application/json' and include the zip content here.\nAlternatively, you can set Content-Type to 'application/zip' and send the zip as the raw request body (not as JSON).\n" + }, + "draft": { + "type": "boolean" + }, + "async": { + "type": "boolean" + }, + "functions": { + "type": "object" + }, + "edge_functions": { + "type": "object", + "description": "A hash mapping edge-function bundle formats to the code_sha of each bundle. The\nresponse's required_edge_functions lists which of these still need to be uploaded.\n" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_config": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "display_name": { + "type": "string" + }, + "generator": { + "type": "string" + }, + "build_data": { + "type": "object" + }, + "memory": { + "type": "integer", + "description": "The function's memory allocation in MB. Mutually exclusive with `vcpu`.\n" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + }, + "methods": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS" + ] + } + }, + "prefer_static": { + "type": "boolean" + } + } + } + }, + "excluded_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + } + } + } + }, + "priority": { + "type": "integer" + }, + "region": { + "type": "string" + }, + "traffic_rules": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "to": { + "type": "string" + }, + "rate_limit_config": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "aggregate": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + } + } + } + } + } + } + }, + "vcpu": { + "type": "number", + "format": "float", + "description": "Number of vCPUs to provision for the function. Allowed range is\n0.5–2.\n" + }, + "event_subscriptions": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "branch": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "framework_version": { + "type": "string" + }, + "environment": { + "description": "A list of deploy-specific environment variable data. Data specified this way applies only\nto this specific deploy and is merged into any existing environment variables set on the\naccount and site.\n\nDeploy-specific environment variable data takes precedence over account and site\nenvironment variable data: For example, a deploy-specific variable with the key `NODE_ENV`\nwill take priority over any existing site- and account-level environment variable data\nwith the key `NODE_ENV`.\n\nEnvironment variable data may be provided at one of two times:\n\n- When creating a new Deploy with deploy files (most common)\n- When finalizing an existing Deploy with deploy files\n\nOnce set, environment variables for a specific deploy cannot be modified. Subsequent\nattempts to modify environment variable data for a deploy will be ignored.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "value", + "scopes", + "is_secret" + ], + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "is_secret": { + "type": "boolean" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + } + } + } + } + } + } + } + }, + "required": true + }, + "createSplitTestBranchTests": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "branch_tests": { + "type": "object" + } + } + } + } + }, + "required": true + }, + "createSiteDevServerHookDevserverhook": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + } + } + }, + "required": true + }, + "createSiteAgentRunnerHookAgentrunnerhook": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + } + } + } + } + }, + "required": true + } + }, + "securitySchemes": { + "netlifyAuth": { + "type": "oauth2", + "flows": { + "implicit": { + "authorizationUrl": "https://app.netlify.com/authorize", + "scopes": {} + } + } + } + }, + "schemas": { + "createDatabaseRequest": { + "type": "object", + "description": "Request body for creating a database", + "properties": { + "region": { + "type": "string", + "description": "The region where the database should be created. Defaults to the site's functions region if not specified." + } + } + }, + "databaseResponse": { + "type": "object", + "description": "Response containing the database connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database" + } + } + }, + "createDatabaseBranchRequest": { + "type": "object", + "description": "Request body for creating a database branch", + "required": [ + "branch_id" + ], + "properties": { + "parent_branch_id": { + "type": "string", + "description": "The ID of the parent branch to create the new branch from. Defaults to the production branch if not specified." + }, + "branch_id": { + "type": "string", + "description": "The branch identifier" + }, + "metadata": { + "type": "object", + "description": "Arbitrary metadata to associate with the branch", + "additionalProperties": true + } + } + }, + "databaseBranchResponse": { + "type": "object", + "description": "Response containing the database branch connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + }, + "databaseBranchesResponse": { + "type": "object", + "description": "Response containing a list of database branches", + "properties": { + "branches": { + "type": "array", + "items": { + "type": "object", + "description": "Detailed information about a database branch", + "properties": { + "branch_id": { + "type": "string", + "description": "The branch identifier" + }, + "name": { + "type": "string", + "description": "The branch name" + }, + "connection_string": { + "type": "string", + "description": "The connection string for the branch" + }, + "state": { + "type": "string", + "description": "The current state of the branch", + "enum": [ + "init", + "creating", + "resetting", + "ready", + "archived" + ] + }, + "logical_size_bytes": { + "type": "integer", + "format": "int64", + "description": "The logical size of the branch in bytes" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was created" + }, + "updated_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last updated" + }, + "last_active_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last active" + }, + "compute": { + "type": "object", + "description": "Compute endpoint status for a branch", + "properties": { + "current_state": { + "type": "string", + "description": "The current state of the compute endpoint", + "enum": [ + "active", + "idle" + ] + }, + "autoscaling_limit_min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units for autoscaling" + }, + "autoscaling_limit_max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units for autoscaling" + }, + "suspend_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before the compute endpoint is suspended" + }, + "last_active": { + "type": "string", + "format": "dateTime", + "description": "When the compute endpoint was last active" + } + } + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + }, + "description": "List of database branches" + } + } + }, + "databaseBranchDetail": { + "type": "object", + "description": "Detailed information about a database branch", + "properties": { + "branch_id": { + "type": "string", + "description": "The branch identifier" + }, + "name": { + "type": "string", + "description": "The branch name" + }, + "connection_string": { + "type": "string", + "description": "The connection string for the branch" + }, + "state": { + "type": "string", + "description": "The current state of the branch", + "enum": [ + "init", + "creating", + "resetting", + "ready", + "archived" + ] + }, + "logical_size_bytes": { + "type": "integer", + "format": "int64", + "description": "The logical size of the branch in bytes" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was created" + }, + "updated_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last updated" + }, + "last_active_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last active" + }, + "compute": { + "type": "object", + "description": "Compute endpoint status for a branch", + "properties": { + "current_state": { + "type": "string", + "description": "The current state of the compute endpoint", + "enum": [ + "active", + "idle" + ] + }, + "autoscaling_limit_min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units for autoscaling" + }, + "autoscaling_limit_max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units for autoscaling" + }, + "suspend_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before the compute endpoint is suspended" + }, + "last_active": { + "type": "string", + "format": "dateTime", + "description": "When the compute endpoint was last active" + } + } + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + }, + "databaseBranchCompute": { + "type": "object", + "description": "Compute endpoint status for a branch", + "properties": { + "current_state": { + "type": "string", + "description": "The current state of the compute endpoint", + "enum": [ + "active", + "idle" + ] + }, + "autoscaling_limit_min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units for autoscaling" + }, + "autoscaling_limit_max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units for autoscaling" + }, + "suspend_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before the compute endpoint is suspended" + }, + "last_active": { + "type": "string", + "format": "dateTime", + "description": "When the compute endpoint was last active" + } + } + }, + "createDatabaseSnapshotRequest": { + "type": "object", + "description": "Request body for creating a database snapshot", + "properties": { + "branch_id": { + "type": "string", + "description": "The ID of the branch to snapshot. Defaults to \"production\" if not specified." + }, + "name": { + "type": "string", + "description": "A name for the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + }, + "databaseSnapshot": { + "type": "object", + "description": "A point-in-time snapshot of a database branch", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the snapshot" + }, + "source_branch_id": { + "type": "string", + "description": "The ID of the branch that was snapshotted" + }, + "manual": { + "type": "boolean", + "description": "Whether this snapshot was manually created" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot was created" + }, + "expires_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot expires" + }, + "timestamp": { + "type": "string", + "format": "dateTime", + "description": "The point-in-time timestamp of the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + }, + "databaseSnapshotMetadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + }, + "databaseSnapshotsResponse": { + "type": "object", + "description": "Response containing a list of database snapshots", + "properties": { + "snapshots": { + "type": "array", + "items": { + "type": "object", + "description": "A point-in-time snapshot of a database branch", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the snapshot" + }, + "source_branch_id": { + "type": "string", + "description": "The ID of the branch that was snapshotted" + }, + "manual": { + "type": "boolean", + "description": "Whether this snapshot was manually created" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot was created" + }, + "expires_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot expires" + }, + "timestamp": { + "type": "string", + "format": "dateTime", + "description": "The point-in-time timestamp of the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + }, + "description": "List of database snapshots" + } + } + }, + "restoreDatabaseSnapshotRequest": { + "type": "object", + "description": "Request body for restoring a database snapshot", + "properties": { + "branch_id": { + "type": "string", + "description": "The ID of the branch to restore the snapshot to. Defaults to \"production\" if not specified." + } + } + }, + "databaseComputeSettingsRequest": { + "type": "object", + "description": "Request body for setting compute settings. All fields are optional; only provided fields are updated.", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "minimum": 0.25, + "maximum": 16, + "description": "Minimum compute units (0.25 to 16.0). Must be less than or equal to max_cu.", + "nullable": true + }, + "max_cu": { + "type": "number", + "format": "double", + "minimum": 0.25, + "maximum": 16, + "description": "Maximum compute units (0.25 to 16.0). Must be greater than or equal to min_cu. max_cu - min_cu must not exceed 8.0.", + "nullable": true + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "minimum": -1, + "description": "Seconds of inactivity before the compute endpoint is suspended. Use -1 for always on, or a non-negative value.", + "nullable": true + } + } + }, + "databaseComputeSettings": { + "type": "object", + "description": "Compute settings for a database or branch", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units" + }, + "max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units" + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before suspension" + } + } + }, + "runDatabaseMigrationsRequest": { + "type": "object", + "description": "Request body for running database migrations", + "properties": { + "dry_run": { + "type": "boolean", + "description": "If true, validates migrations without applying them." + } + } + }, + "resetDatabaseBranchRequest": { + "type": "object", + "description": "Request body for resetting a database branch", + "properties": { + "source_branch_id": { + "type": "string", + "description": "The ID of the branch to re-fork the target branch from. Defaults to \"production\" if not specified." + } + } + }, + "resetDatabaseBranchResponse": { + "type": "object", + "description": "Response for a database branch reset", + "properties": { + "reset": { + "type": "boolean", + "description": "Whether the branch was actually re-forked. False when the target was already in sync with the source and `force=true` was not set." + }, + "connection_string": { + "type": "string", + "description": "The connection string for the reset (or unchanged) branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + }, + "listDatabaseMigrationsResponse": { + "type": "object", + "description": "Response containing the list of migrations for a branch", + "properties": { + "migrations": { + "type": "array", + "items": { + "type": "object", + "description": "A migration available to a database branch", + "properties": { + "version": { + "type": "integer", + "format": "int64", + "description": "The migration version number" + }, + "name": { + "type": "string", + "description": "The migration name" + }, + "path": { + "type": "string", + "description": "The path to the migration file in the deploy bundle" + }, + "applied": { + "type": "boolean", + "description": "Whether this migration has been applied to the branch" + } + } + }, + "description": "List of migrations" + } + } + }, + "databaseMigration": { + "type": "object", + "description": "A migration available to a database branch", + "properties": { + "version": { + "type": "integer", + "format": "int64", + "description": "The migration version number" + }, + "name": { + "type": "string", + "description": "The migration name" + }, + "path": { + "type": "string", + "description": "The path to the migration file in the deploy bundle" + }, + "applied": { + "type": "boolean", + "description": "Whether this migration has been applied to the branch" + } + } + }, + "databaseMigrationDetail": { + "type": "object", + "description": "A migration with its file contents", + "properties": { + "version": { + "type": "integer", + "format": "int64", + "description": "The migration version number" + }, + "name": { + "type": "string", + "description": "The migration name" + }, + "path": { + "type": "string", + "description": "The path to the migration file in the deploy bundle" + }, + "content": { + "type": "string", + "description": "The raw contents of the migration file" + } + } + }, + "DeployValidationsReport": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The id of the deploy validations report" + }, + "deploy_id": { + "type": "string", + "description": "The id of the deploy" + }, + "secret_scan_result": { + "type": "object", + "properties": { + "scannedFilesCount": { + "type": "integer", + "description": "The number of files scanned" + }, + "secretsScanMatches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of secrets scan matches" + } + } + } + } + }, + "DeployValidationsReport_SecretScanResult": { + "type": "object", + "properties": { + "scannedFilesCount": { + "type": "integer", + "description": "The number of files scanned" + }, + "secretsScanMatches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of secrets scan matches" + } + } + }, + "splitTestSetup": { + "type": "object", + "properties": { + "branch_tests": { + "type": "object" + } + } + }, + "splitTests": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "splitTest": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "serviceInstance": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "config": { + "type": "object" + }, + "external_attributes": { + "type": "object" + }, + "service_slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "service_name": { + "type": "string" + }, + "env": { + "type": "object" + }, + "snippets": { + "type": "array", + "items": { + "type": "object" + } + }, + "auth_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "service": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "long_description": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "object" + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "icon": { + "type": "string" + }, + "manifest_url": { + "type": "string" + }, + "environments": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "site": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + }, + "siteSetup": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + }, + { + "properties": { + "repo": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + } + } + } + ] + }, + "repoInfo": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "submission": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "number": { + "type": "integer", + "format": "int32" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + }, + "company": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "site_url": { + "type": "string" + } + } + }, + "envVar": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + }, + "envVarValue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "envVarUser": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + }, + "form": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "paths": { + "type": "array", + "items": { + "type": "string" + } + }, + "submission_count": { + "type": "integer", + "format": "int32" + }, + "fields": { + "type": "array", + "items": { + "type": "object" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "hookType": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "string" + } + }, + "fields": { + "type": "array", + "items": { + "type": "object" + } + } + } + }, + "hook": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + }, + "file": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "mime_type": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + } + } + }, + "function": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "snippet": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + }, + "purge": { + "type": "object", + "properties": { + "site_id": { + "type": "string" + }, + "site_slug": { + "type": "string" + }, + "cache_tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "deployEnvironmentVariable": { + "type": "object", + "required": [ + "key", + "value", + "scopes", + "is_secret" + ], + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "is_secret": { + "type": "boolean" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + } + } + }, + "deployFiles": { + "type": "object", + "description": "Deploy files can be provided in two ways:\n1. As a JSON object using 'files' (a hash mapping file paths to SHA1 digests), OR\n2. As a zip file using one of these methods:\n - Set Content-Type to 'application/zip' and send the zip file as the raw request body\n - Include the zip file content in the 'zip' field of this JSON object with Content-Type 'application/json'\n", + "properties": { + "files": { + "type": "object", + "description": "A hash mapping file paths to SHA1 digests of the file contents." + }, + "zip": { + "type": "string", + "format": "binary", + "description": "A zip file containing the site files to deploy. Alternative to 'files'.\nTo use this field, set Content-Type to 'application/json' and include the zip content here.\nAlternatively, you can set Content-Type to 'application/zip' and send the zip as the raw request body (not as JSON).\n" + }, + "draft": { + "type": "boolean" + }, + "async": { + "type": "boolean" + }, + "functions": { + "type": "object" + }, + "edge_functions": { + "type": "object", + "description": "A hash mapping edge-function bundle formats to the code_sha of each bundle. The\nresponse's required_edge_functions lists which of these still need to be uploaded.\n" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_config": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "display_name": { + "type": "string" + }, + "generator": { + "type": "string" + }, + "build_data": { + "type": "object" + }, + "memory": { + "type": "integer", + "description": "The function's memory allocation in MB. Mutually exclusive with `vcpu`.\n" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + }, + "methods": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS" + ] + } + }, + "prefer_static": { + "type": "boolean" + } + } + } + }, + "excluded_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + } + } + } + }, + "priority": { + "type": "integer" + }, + "region": { + "type": "string" + }, + "traffic_rules": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "to": { + "type": "string" + }, + "rate_limit_config": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "aggregate": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + } + } + } + } + } + } + }, + "vcpu": { + "type": "number", + "format": "float", + "description": "Number of vCPUs to provision for the function. Allowed range is\n0.5–2.\n" + }, + "event_subscriptions": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "branch": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "framework_version": { + "type": "string" + }, + "environment": { + "description": "A list of deploy-specific environment variable data. Data specified this way applies only\nto this specific deploy and is merged into any existing environment variables set on the\naccount and site.\n\nDeploy-specific environment variable data takes precedence over account and site\nenvironment variable data: For example, a deploy-specific variable with the key `NODE_ENV`\nwill take priority over any existing site- and account-level environment variable data\nwith the key `NODE_ENV`.\n\nEnvironment variable data may be provided at one of two times:\n\n- When creating a new Deploy with deploy files (most common)\n- When finalizing an existing Deploy with deploy files\n\nOnce set, environment variables for a specific deploy cannot be modified. Subsequent\nattempts to modify environment variable data for a deploy will be ignored.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "value", + "scopes", + "is_secret" + ], + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "is_secret": { + "type": "boolean" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + } + } + } + } + } + }, + "pluginParams": { + "type": "object", + "properties": { + "pinned_version": { + "type": "string" + } + } + }, + "plugin": { + "type": "object", + "properties": { + "package": { + "type": "string" + }, + "pinned_version": { + "type": "string" + } + } + }, + "buildStatus": { + "type": "object", + "properties": { + "active": { + "type": "integer" + }, + "pending_concurrency": { + "type": "integer" + }, + "enqueued": { + "type": "integer" + }, + "build_count": { + "type": "integer" + }, + "minutes": { + "type": "object", + "properties": { + "current": { + "type": "integer" + }, + "current_average_sec": { + "type": "integer" + }, + "previous": { + "type": "integer" + }, + "period_start_date": { + "type": "string", + "format": "dateTime" + }, + "period_end_date": { + "type": "string", + "format": "dateTime" + }, + "last_updated_at": { + "type": "string", + "format": "dateTime" + }, + "included_minutes": { + "type": "string" + }, + "included_minutes_with_packs": { + "type": "string" + } + } + } + } + }, + "build": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "done": { + "type": "boolean" + }, + "error": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "buildLogMsg": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "error": { + "type": "boolean" + }, + "section": { + "type": "string", + "enum": [ + "initializing", + "building", + "deploying", + "cleanup", + "postprocessing" + ] + } + } + }, + "pluginRunData": { + "type": "object", + "properties": { + "package": { + "type": "string" + }, + "version": { + "type": "string" + }, + "state": { + "type": "string" + }, + "reporting_event": { + "type": "string" + }, + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, + "pluginRun": { + "allOf": [ + { + "type": "object", + "properties": { + "package": { + "type": "string" + }, + "version": { + "type": "string" + }, + "state": { + "type": "string" + }, + "reporting_event": { + "type": "string" + }, + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, + { + "type": "object", + "properties": { + "deploy_id": { + "type": "string" + } + } + } + ] + }, + "metadata": { + "type": "object" + }, + "dnsZoneSetup": { + "type": "object", + "properties": { + "account_slug": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "dnsZones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + }, + "dnsZone": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + }, + "dnsRecordCreate": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "weight": { + "type": "integer", + "format": "int64" + }, + "port": { + "type": "integer", + "format": "int64" + }, + "flag": { + "type": "integer", + "format": "int64" + }, + "tag": { + "type": "string" + } + } + }, + "dnsRecords": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dnsRecord": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + }, + "sniCertificate": { + "type": "object", + "properties": { + "state": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "expires_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "ticket": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "authorized": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "accessToken": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "access_token": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "user_email": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "asset": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "assetForm": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "fields": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "assetSignature": { + "type": "object", + "properties": { + "form": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "fields": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "asset": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "assetPublicSignature": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + } + }, + "deployKey": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "member": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "paymentMethod": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "method_name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "state": { + "type": "string" + }, + "data": { + "type": "object", + "properties": { + "card_type": { + "type": "string" + }, + "last4": { + "type": "string" + }, + "email": { + "type": "string" + } + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "accountType": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "capabilities": { + "type": "object" + }, + "monthly_dollar_price": { + "type": "integer" + }, + "yearly_dollar_price": { + "type": "integer" + }, + "monthly_seats_addon_dollar_price": { + "type": "integer" + }, + "yearly_seats_addon_dollar_price": { + "type": "integer" + } + } + }, + "accountSetup": { + "type": "object", + "required": [ + "name", + "type_id" + ], + "properties": { + "name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "period": { + "type": "string", + "enum": [ + "monthly", + "yearly" + ] + }, + "extra_seats_block": { + "type": "integer" + } + } + }, + "accountUpdateSetup": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "extra_seats_block": { + "type": "integer" + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + } + } + }, + "accountAddMemberSetup": { + "type": "object", + "properties": { + "role": { + "type": "string", + "enum": [ + "Owner", + "Developer", + "Billing Admin", + "Reviewer" + ] + }, + "email": { + "type": "string" + } + } + }, + "accountUpdateMemberSetup": { + "type": "object", + "properties": { + "role": { + "type": "string", + "enum": [ + "Owner", + "Developer", + "Billing Admin", + "Reviewer" + ] + }, + "site_access": { + "type": "string", + "enum": [ + "all", + "none", + "selected" + ] + }, + "site_ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "accountMembership": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "sites": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "collaborators": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + } + } + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + }, + "billing_period": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "type_name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "owner_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles_allowed": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "auditLog": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "account_id": { + "type": "string" + }, + "payload": { + "type": "object", + "properties": { + "actor_id": { + "type": "string" + }, + "actor_name": { + "type": "string" + }, + "actor_email": { + "type": "string" + }, + "action": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "dateTime" + }, + "log_type": { + "type": "string" + } + }, + "additionalProperties": { + "type": "object" + } + } + } + }, + "agentRunner": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "parent_agent_runner_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "result_branch": { + "type": "string" + }, + "pr_url": { + "type": "string" + }, + "pr_branch": { + "type": "string" + }, + "pr_state": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "pr_is_being_created": { + "type": "boolean" + }, + "pr_error": { + "type": "string" + }, + "current_task": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "merge_commit_sha": { + "type": "string" + }, + "merge_commit_error": { + "type": "string" + }, + "merge_commit_is_being_created": { + "type": "boolean" + }, + "base_deploy_id": { + "type": "string" + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "active_session_created_at": { + "type": "string", + "format": "dateTime" + }, + "latest_session_deploy_id": { + "type": "string" + }, + "latest_session_deploy_url": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + } + } + }, + "agentRunnerSession": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "agent_runner_id": { + "type": "string" + }, + "dev_server_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent_config": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "result": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "commit_sha": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "result_zip_file_name": { + "type": "string" + }, + "is_published": { + "type": "boolean" + } + } + }, + "agentRunnerSessionStep": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "agentRunnerSessionConfig": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "agentRunnerUser": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "agentRunnerHook": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "url": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "agentRunnerHookSetup": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + } + } + }, + "agentRunnerHookCreated": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "url": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + { + "properties": { + "secret": { + "type": "string" + } + } + } + ] + }, + "accountUsageCapability": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "buildSetup": { + "type": "object", + "properties": { + "image": { + "type": "string" + }, + "clear_cache": { + "type": "boolean" + } + } + }, + "buildHookSetup": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + } + } + }, + "buildHook": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "deployedBranch": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "avatar_url": { + "type": "string" + }, + "email": { + "type": "string" + }, + "affiliate_id": { + "type": "string" + }, + "site_count": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "last_login": { + "type": "string", + "format": "dateTime" + }, + "login_providers": { + "type": "array", + "items": { + "type": "string" + } + }, + "onboarding_progress": { + "type": "object", + "properties": { + "slides": { + "type": "string" + } + } + } + } + }, + "error": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "nullable": false + } + } + }, + "functionSchedule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + }, + "functionConfig": { + "type": "object", + "properties": { + "display_name": { + "type": "string" + }, + "generator": { + "type": "string" + }, + "build_data": { + "type": "object" + }, + "memory": { + "type": "integer", + "description": "The function's memory allocation in MB. Mutually exclusive with `vcpu`.\n" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + }, + "methods": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS" + ] + } + }, + "prefer_static": { + "type": "boolean" + } + } + } + }, + "excluded_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + } + } + } + }, + "priority": { + "type": "integer" + }, + "region": { + "type": "string" + }, + "traffic_rules": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "to": { + "type": "string" + }, + "rate_limit_config": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "aggregate": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + } + } + } + } + } + } + }, + "vcpu": { + "type": "number", + "format": "float", + "description": "Number of vCPUs to provision for the function. Allowed range is\n0.5–2.\n" + }, + "event_subscriptions": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "functionRoute": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + }, + "methods": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS" + ] + } + }, + "prefer_static": { + "type": "boolean" + } + } + }, + "excludedFunctionRoute": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + } + } + }, + "trafficRulesConfig": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "to": { + "type": "string" + }, + "rate_limit_config": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "aggregate": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + } + } + } + } + } + } + }, + "trafficRulesRateLimitConfig": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "trafficRulesAggregateConfig": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + }, + "siteFunction": { + "type": "object", + "properties": { + "branch": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "functions": { + "type": "array", + "items": { + "type": "object" + } + }, + "id": { + "type": "string" + }, + "log_type": { + "type": "string" + }, + "provider": { + "type": "string" + } + } + }, + "devServer": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "starting_at": { + "type": "string", + "format": "dateTime" + }, + "error_at": { + "type": "string", + "format": "dateTime" + }, + "live_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + } + } + }, + "devServerHook": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + }, + "devServerHookSetup": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + }, + "providerDefinition": { + "type": "object", + "properties": { + "token_env_var": { + "type": "string" + }, + "url_env_var": { + "type": "string" + }, + "models": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "aiGatewayToken": { + "type": "object", + "properties": { + "token": { + "type": "string", + "description": "The AI Gateway authentication token" + }, + "url": { + "type": "string", + "description": "AI gateway base url" + }, + "expires_at": { + "type": "integer", + "format": "int64", + "description": "Unix timestamp when the token expires" + } + } + } + } + } +} \ No newline at end of file diff --git a/provider-dev/downloaded/swagger.json b/provider-dev/downloaded/swagger.json new file mode 100644 index 0000000..fc3d2a7 --- /dev/null +++ b/provider-dev/downloaded/swagger.json @@ -0,0 +1,24441 @@ +{ + "swagger": "2.0", + "info": { + "version": "2.57.0", + "title": "Netlify's API documentation", + "description": "Netlify is a hosting service for the programmable web. It understands your documents and provides an API to handle atomic deploys of websites, manage form submissions, inject JavaScript snippets, and much more. This is a REST-style API that uses JSON for serialization and OAuth 2 for authentication.\n\nThis document is an OpenAPI reference for the Netlify API that you can explore. For more detailed instructions for common uses, please visit the [online documentation](https://www.netlify.com/docs/api/). Visit our Community forum to join the conversation about [understanding and using Netlify's API](https://community.netlify.com/t/common-issue-understanding-and-using-netlifys-api/160).\n\nAdditionally, we have two API clients for your convenience:\n- [Go Client](https://github.com/netlify/open-api#go-client)\n- [JS Client](https://github.com/netlify/build/tree/main/packages/js-client)", + "termsOfService": "https://www.netlify.com/legal/terms-of-use/", + "x-logo": { + "url": "netlify-logo.png", + "href": "https://www.netlify.com/docs/", + "altText": "Netlify" + } + }, + "externalDocs": { + "url": "https://www.netlify.com/docs/api/", + "description": "Online documentation" + }, + "securityDefinitions": { + "netlifyAuth": { + "type": "oauth2", + "flow": "implicit", + "authorizationUrl": "https://app.netlify.com/authorize" + } + }, + "security": [ + { + "netlifyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "schemes": [ + "https" + ], + "responses": { + "error": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "host": "api.netlify.com", + "basePath": "/api/v1", + "paths": { + "/sites": { + "get": { + "operationId": "listSites", + "tags": [ + "site" + ], + "parameters": [ + { + "name": "name", + "in": "query", + "type": "string" + }, + { + "name": "filter", + "in": "query", + "type": "string", + "enum": [ + "all", + "owner", + "guest" + ] + }, + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables." + }, + "post": { + "operationId": "createSite", + "tags": [ + "site" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "site", + "in": "body", + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + }, + { + "properties": { + "repo": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + } + } + } + ] + }, + "required": true + }, + { + "name": "configure_dns", + "type": "boolean", + "in": "query" + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site." + } + }, + "/sites/{site_id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getSite", + "tags": [ + "site" + ], + "parameters": [ + { + "name": "feature_flags", + "x-internal": true, + "type": "string", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables." + }, + "patch": { + "operationId": "updateSite", + "tags": [ + "site" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "site", + "in": "body", + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + }, + { + "properties": { + "repo": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + } + } + } + ] + }, + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [updateEnvVar](#tag/environmentVariables/operation/updateEnvVar) to update a site's environment variables." + }, + "delete": { + "operationId": "deleteSite", + "tags": [ + "site" + ], + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/ssl": { + "post": { + "operationId": "provisionSiteTLSCertificate", + "tags": [ + "sniCertificate" + ], + "description": "Provisions or updates a TLS certificate for the site.\n\n**Creating a certificate (site has no certificate):**\n- Omit certificate params to initiate Let's Encrypt provisioning\n- Provide certificate, key, and ca_certificates to upload a custom certificate\n\n**Updating a certificate (site already has a certificate):**\n- REQUIRES certificate, key, and ca_certificates to replace with a new custom certificate\n- Use POST /api/v1/sites/{site_id}/ssl/renew to renew an existing Let's Encrypt certificate", + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "certificate", + "type": "string", + "in": "query", + "description": "PEM-encoded certificate. Required when updating an existing certificate." + }, + { + "name": "key", + "type": "string", + "in": "query", + "description": "PEM-encoded private key. Required when updating an existing certificate." + }, + { + "name": "ca_certificates", + "type": "string", + "in": "query", + "description": "PEM-encoded CA certificate chain. Required when updating an existing certificate." + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "state": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "expires_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "422": { + "description": "Unprocessable Entity. Returns errors such as: \"certificate parameter is required when updating an existing certificate\" (when updating without params), \"No custom domain configured\", or \"bad dns for custom domain\"" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "get": { + "operationId": "showSiteTLSCertificate", + "tags": [ + "sniCertificate" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "state": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "expires_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/ssl/certificates": { + "get": { + "operationId": "getAllCertificates", + "tags": [ + "sniCertificate" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "domain", + "type": "string", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "Array of SNI Certificates", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "state": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "expires_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Unprocessable Entity" + } + } + } + }, + "/accounts/{account_id}/env": { + "get": { + "tags": [ + "environmentVariables" + ], + "operationId": "getEnvVars", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "type": "string", + "required": true, + "in": "path" + }, + { + "name": "context_name", + "description": "Filter by deploy context", + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production" + ], + "required": false, + "in": "query" + }, + { + "name": "scope", + "description": "Filter by scope", + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ], + "required": false, + "in": "query" + }, + { + "name": "site_id", + "description": "If specified, only return environment variables set on this site", + "type": "string", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "Returns all environment variables for an account or site. An account corresponds to a team in the Netlify UI." + }, + "post": { + "tags": [ + "environmentVariables" + ], + "operationId": "createEnvVars", + "description": "Creates new environment variables. Granular scopes are available on Pro plans and above.", + "parameters": [ + { + "in": "body", + "name": "env_vars", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The existing or new name of the key, if you wish to rename it (case-sensitive)" + }, + "scopes": { + "description": "The scopes that this environment variable is set to (Pro plans and above)", + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + } + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + } + } + } + } + }, + { + "name": "account_id", + "description": "Scope response to account_id", + "type": "string", + "required": true, + "in": "path" + }, + { + "name": "site_id", + "description": "If provided, create an environment variable on the site level, not the account level", + "type": "string", + "required": false, + "in": "query" + } + ], + "responses": { + "201": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/api/v1/sites/{site_id}/env": { + "get": { + "tags": [ + "environmentVariables" + ], + "operationId": "getSiteEnvVars", + "parameters": [ + { + "name": "context_name", + "description": "Filter by deploy context", + "required": false, + "in": "query", + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production" + ] + }, + { + "name": "scope", + "description": "Filter by scope", + "required": false, + "in": "query", + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post_processing" + ] + }, + { + "name": "site_id", + "description": "Scope response to site_id", + "required": true, + "type": "string", + "in": "path" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "Returns all environment variables for a site. This convenience method behaves the same as `getEnvVars` but doesn't require an `account_id` as input." + } + }, + "/accounts/{account_id}/env/{key}": { + "get": { + "tags": [ + "environmentVariables" + ], + "operationId": "getEnvVar", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "type": "string", + "required": true, + "in": "path" + }, + { + "name": "key", + "description": "The environment variable key (case-sensitive)", + "type": "string", + "required": true, + "in": "path" + }, + { + "name": "site_id", + "description": "If provided, return the environment variable for a specific site (no merging is performed)", + "type": "string", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "Returns an individual environment variable." + }, + "put": { + "tags": [ + "environmentVariables" + ], + "operationId": "updateEnvVar", + "description": "Updates an existing environment variable and all of its values. Existing values will be replaced by values provided.", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "type": "string", + "required": true, + "in": "path" + }, + { + "name": "key", + "description": "The existing environment variable key name (case-sensitive)", + "type": "string", + "required": true, + "in": "path" + }, + { + "in": "body", + "name": "env_var", + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The existing or new name of the key, if you wish to rename it (case-sensitive)" + }, + "scopes": { + "description": "The scopes that this environment variable is set to (Pro plans and above)", + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + } + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + } + } + } + }, + { + "name": "site_id", + "description": "If provided, update an environment variable set on this site", + "type": "string", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "patch": { + "tags": [ + "environmentVariables" + ], + "operationId": "setEnvVarValue", + "description": "Updates or creates a new value for an existing environment variable.", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "required": true, + "type": "string", + "in": "path" + }, + { + "name": "key", + "description": "The existing environment variable key name (case-sensitive)", + "required": true, + "type": "string", + "in": "path" + }, + { + "name": "site_id", + "description": "If provided, update an environment variable set on this site", + "in": "query", + "type": "string" + }, + { + "in": "body", + "name": "env_var", + "schema": { + "type": "object", + "properties": { + "context": { + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. `branch` must be provided with a value in `context_parameter`.", + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ] + }, + "context_parameter": { + "description": "An additional parameter for custom branches. Currently, this is used for providing a branch name when `context=branch`.", + "type": "string" + }, + "value": { + "description": "The environment variable's unencrypted value", + "type": "string" + } + } + } + } + ], + "responses": { + "201": { + "description": "Created (success)", + "schema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "tags": [ + "environmentVariables" + ], + "operationId": "deleteEnvVar", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "type": "string", + "required": true, + "in": "path" + }, + { + "name": "key", + "description": "The environment variable key (case-sensitive)", + "type": "string", + "required": true, + "in": "path" + }, + { + "name": "site_id", + "description": "If provided, delete the environment variable from this site", + "type": "string", + "required": false, + "in": "query" + } + ], + "responses": { + "204": { + "description": "No Content (success)" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "Deletes an environment variable" + } + }, + "/accounts/{account_id}/env/{key}/value/{id}": { + "delete": { + "tags": [ + "environmentVariables" + ], + "operationId": "deleteEnvVarValue", + "parameters": [ + { + "name": "account_id", + "description": "Scope response to account_id", + "required": true, + "in": "path", + "type": "string" + }, + { + "name": "id", + "description": "The environment variable value's ID", + "type": "string", + "required": true, + "in": "path" + }, + { + "name": "key", + "description": "The environment variable key name (case-sensitive)", + "type": "string", + "required": true, + "in": "path" + }, + { + "name": "site_id", + "description": "If provided, delete the value from an environment variable on this site", + "type": "string", + "required": false, + "in": "query" + } + ], + "responses": { + "204": { + "description": "No Content (success)" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "Deletes a specific environment variable value." + } + }, + "/sites/{site_id}/functions": { + "get": { + "operationId": "searchSiteFunctions", + "tags": [ + "function" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "filter", + "type": "string", + "in": "query", + "required": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "branch": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "functions": { + "type": "array", + "items": { + "type": "object" + } + }, + "id": { + "type": "string" + }, + "log_type": { + "type": "string" + }, + "provider": { + "type": "string" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/forms": { + "get": { + "operationId": "listSiteForms", + "tags": [ + "form" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "paths": { + "type": "array", + "items": { + "type": "string" + } + }, + "submission_count": { + "type": "integer", + "format": "int32" + }, + "fields": { + "type": "array", + "items": { + "type": "object" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/forms/{form_id}": { + "delete": { + "operationId": "deleteSiteForm", + "tags": [ + "form" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "form_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/submissions": { + "get": { + "operationId": "listSiteSubmissions", + "tags": [ + "submission" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "number": { + "type": "integer", + "format": "int32" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + }, + "company": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "site_url": { + "type": "string" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/files": { + "get": { + "operationId": "listSiteFiles", + "tags": [ + "file" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "mime_type": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/assets": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listSiteAssets", + "tags": [ + "asset" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createSiteAsset", + "tags": [ + "asset" + ], + "parameters": [ + { + "name": "name", + "type": "string", + "in": "query", + "required": true + }, + { + "name": "size", + "type": "integer", + "format": "int64", + "in": "query", + "required": true + }, + { + "name": "content_type", + "type": "string", + "in": "query", + "required": true + }, + { + "name": "visibility", + "type": "string", + "in": "query" + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "form": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "fields": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "asset": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/assets/{asset_id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "asset_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getSiteAssetInfo", + "tags": [ + "asset" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteAsset", + "tags": [ + "asset" + ], + "parameters": [ + { + "name": "state", + "type": "string", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "Updated", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteAsset", + "tags": [ + "asset" + ], + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/assets/{asset_id}/public_signature": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "asset_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getSiteAssetPublicSignature", + "tags": [ + "assetPublicSignature" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/files/{file_path}": { + "get": { + "operationId": "getSiteFileByPathName", + "tags": [ + "file" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "file_path", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "mime_type": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/purge": { + "post": { + "operationId": "purgeCache", + "description": "Purges cached content from Netlify's CDN. Supports purging by Cache-Tag.", + "tags": [ + "purge" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "payload", + "in": "body", + "schema": { + "type": "object", + "properties": { + "site_id": { + "type": "string" + }, + "site_slug": { + "type": "string" + }, + "cache_tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "required": true + } + ], + "responses": { + "202": { + "description": "OK" + }, + "400": { + "description": "Invalid request parameters" + }, + "404": { + "description": "Site not found" + } + } + } + }, + "/sites/{site_id}/snippets": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listSiteSnippets", + "tags": [ + "snippet" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createSiteSnippet", + "tags": [ + "snippet" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "snippet", + "in": "body", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + }, + "required": true + } + ], + "responses": { + "201": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/snippets/{snippet_id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "snippet_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getSiteSnippet", + "tags": [ + "snippet" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteSnippet", + "tags": [ + "snippet" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "snippet", + "in": "body", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + }, + "required": true + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteSnippet", + "tags": [ + "snippet" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/metadata": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getSiteMetadata", + "tags": [ + "metadata" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object" + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteMetadata", + "tags": [ + "metadata" + ], + "parameters": [ + { + "name": "metadata", + "in": "body", + "schema": { + "type": "object" + }, + "required": true + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/build_hooks": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listSiteBuildHooks", + "tags": [ + "buildHook" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createSiteBuildHook", + "tags": [ + "buildHook" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "buildHook", + "in": "body", + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + } + } + }, + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/build_hooks/{id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getSiteBuildHook", + "tags": [ + "buildHook" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteBuildHook", + "tags": [ + "buildHook" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "buildHook", + "in": "body", + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + } + } + }, + "required": true + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteBuildHook", + "tags": [ + "buildHook" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/deploys": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "deploy-previews", + "type": "boolean", + "in": "query" + }, + { + "name": "production", + "type": "boolean", + "in": "query" + }, + { + "name": "state", + "type": "string", + "enum": [ + "new", + "pending_review", + "accepted", + "rejected", + "enqueued", + "building", + "uploading", + "uploaded", + "preparing", + "prepared", + "processing", + "processed", + "ready", + "error", + "retrying" + ], + "in": "query" + }, + { + "name": "branch", + "type": "string", + "in": "query" + }, + { + "name": "latest-published", + "type": "boolean", + "in": "query" + } + ], + "get": { + "operationId": "listSiteDeploys", + "tags": [ + "deploy" + ], + "parameters": [ + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "title", + "type": "string", + "in": "query" + }, + { + "name": "deploy", + "in": "body", + "schema": { + "type": "object", + "description": "Deploy files can be provided in two ways:\n1. As a JSON object using 'files' (a hash mapping file paths to SHA1 digests), OR\n2. As a zip file using one of these methods:\n - Set Content-Type to 'application/zip' and send the zip file as the raw request body\n - Include the zip file content in the 'zip' field of this JSON object with Content-Type 'application/json'\n", + "properties": { + "files": { + "type": "object", + "description": "A hash mapping file paths to SHA1 digests of the file contents." + }, + "zip": { + "type": "string", + "format": "binary", + "description": "A zip file containing the site files to deploy. Alternative to 'files'.\nTo use this field, set Content-Type to 'application/json' and include the zip content here.\nAlternatively, you can set Content-Type to 'application/zip' and send the zip as the raw request body (not as JSON).\n" + }, + "draft": { + "type": "boolean" + }, + "async": { + "type": "boolean" + }, + "functions": { + "type": "object" + }, + "edge_functions": { + "type": "object", + "description": "A hash mapping edge-function bundle formats to the code_sha of each bundle. The\nresponse's required_edge_functions lists which of these still need to be uploaded.\n" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_config": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "display_name": { + "type": "string" + }, + "generator": { + "type": "string" + }, + "build_data": { + "type": "object" + }, + "memory": { + "type": "integer", + "description": "The function's memory allocation in MB. Mutually exclusive with `vcpu`.\n" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + }, + "methods": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS" + ] + } + }, + "prefer_static": { + "type": "boolean" + } + } + } + }, + "excluded_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + } + } + } + }, + "priority": { + "type": "integer" + }, + "region": { + "type": "string" + }, + "traffic_rules": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "to": { + "type": "string" + }, + "rate_limit_config": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "aggregate": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + } + } + } + } + } + } + }, + "vcpu": { + "type": "number", + "format": "float", + "description": "Number of vCPUs to provision for the function. Allowed range is\n0.5–2.\n" + }, + "event_subscriptions": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "branch": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "framework_version": { + "type": "string" + }, + "environment": { + "description": "A list of deploy-specific environment variable data. Data specified this way applies only\nto this specific deploy and is merged into any existing environment variables set on the\naccount and site.\n\nDeploy-specific environment variable data takes precedence over account and site\nenvironment variable data: For example, a deploy-specific variable with the key `NODE_ENV`\nwill take priority over any existing site- and account-level environment variable data\nwith the key `NODE_ENV`.\n\nEnvironment variable data may be provided at one of two times:\n\n- When creating a new Deploy with deploy files (most common)\n- When finalizing an existing Deploy with deploy files\n\nOnce set, environment variables for a specific deploy cannot be modified. Subsequent\nattempts to modify environment variable data for a deploy will be ignored.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "value", + "scopes", + "is_secret" + ], + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "is_secret": { + "type": "boolean" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + } + } + } + } + } + }, + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/deploys/{deploy_id}": { + "get": { + "operationId": "getSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "commit_ref", + "type": "string", + "in": "query" + }, + { + "name": "deploy", + "in": "body", + "schema": { + "type": "object", + "description": "Deploy files can be provided in two ways:\n1. As a JSON object using 'files' (a hash mapping file paths to SHA1 digests), OR\n2. As a zip file using one of these methods:\n - Set Content-Type to 'application/zip' and send the zip file as the raw request body\n - Include the zip file content in the 'zip' field of this JSON object with Content-Type 'application/json'\n", + "properties": { + "files": { + "type": "object", + "description": "A hash mapping file paths to SHA1 digests of the file contents." + }, + "zip": { + "type": "string", + "format": "binary", + "description": "A zip file containing the site files to deploy. Alternative to 'files'.\nTo use this field, set Content-Type to 'application/json' and include the zip content here.\nAlternatively, you can set Content-Type to 'application/zip' and send the zip as the raw request body (not as JSON).\n" + }, + "draft": { + "type": "boolean" + }, + "async": { + "type": "boolean" + }, + "functions": { + "type": "object" + }, + "edge_functions": { + "type": "object", + "description": "A hash mapping edge-function bundle formats to the code_sha of each bundle. The\nresponse's required_edge_functions lists which of these still need to be uploaded.\n" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_config": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "display_name": { + "type": "string" + }, + "generator": { + "type": "string" + }, + "build_data": { + "type": "object" + }, + "memory": { + "type": "integer", + "description": "The function's memory allocation in MB. Mutually exclusive with `vcpu`.\n" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + }, + "methods": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS" + ] + } + }, + "prefer_static": { + "type": "boolean" + } + } + } + }, + "excluded_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + } + } + } + }, + "priority": { + "type": "integer" + }, + "region": { + "type": "string" + }, + "traffic_rules": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "to": { + "type": "string" + }, + "rate_limit_config": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "aggregate": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + } + } + } + } + } + } + }, + "vcpu": { + "type": "number", + "format": "float", + "description": "Number of vCPUs to provision for the function. Allowed range is\n0.5–2.\n" + }, + "event_subscriptions": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "branch": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "framework_version": { + "type": "string" + }, + "environment": { + "description": "A list of deploy-specific environment variable data. Data specified this way applies only\nto this specific deploy and is merged into any existing environment variables set on the\naccount and site.\n\nDeploy-specific environment variable data takes precedence over account and site\nenvironment variable data: For example, a deploy-specific variable with the key `NODE_ENV`\nwill take priority over any existing site- and account-level environment variable data\nwith the key `NODE_ENV`.\n\nEnvironment variable data may be provided at one of two times:\n\n- When creating a new Deploy with deploy files (most common)\n- When finalizing an existing Deploy with deploy files\n\nOnce set, environment variables for a specific deploy cannot be modified. Subsequent\nattempts to modify environment variable data for a deploy will be ignored.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "value", + "scopes", + "is_secret" + ], + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "is_secret": { + "type": "boolean" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + } + } + } + } + } + }, + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/cancel": { + "post": { + "operationId": "cancelSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Cancelled", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/deploys/{deploy_id}/restore": { + "post": { + "operationId": "restoreSiteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/builds": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listSiteBuilds", + "tags": [ + "build" + ], + "parameters": [ + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "done": { + "type": "boolean" + }, + "error": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createSiteBuild", + "tags": [ + "build" + ], + "description": "Runs a build for a site. The build will be scheduled to run at the first opportunity, but it might not start immediately if insufficient account build capacity is available.\n\nFiles for build can be uploaded as a zipped site using one of these methods:\n1. Set Content-Type to 'application/zip' and send the zip file as the raw request body\n2. Set Content-Type to 'multipart/form-data' and include the zip file in the 'zip' field\n", + "consumes": [ + "multipart/form-data" + ], + "parameters": [ + { + "name": "branch", + "description": "If no branch is specified, it is treated as a production deploy If a branch IS specified and matches the main branch, it is also production If a branch is specified and doesn't match the main branch, it is a branch deploy", + "required": false, + "in": "query", + "type": "string" + }, + { + "name": "clear_cache", + "description": "Whether to clear the build cache before building", + "required": false, + "in": "query", + "type": "boolean" + }, + { + "name": "image", + "description": "The build image tag to use for the build", + "required": false, + "in": "query", + "type": "string" + }, + { + "name": "template_id", + "description": "The build template to use for the build", + "required": false, + "in": "query", + "type": "string" + }, + { + "name": "title", + "description": "The title of the build", + "required": false, + "in": "query", + "type": "string" + }, + { + "name": "zip", + "description": "A zip file containing the site files to build.\nOnly used with Content-Type 'multipart/form-data'.\nAlternatively, set Content-Type to 'application/zip' and send the zip as the raw request body (no 'zip' parameter needed).\n", + "required": false, + "in": "formData", + "type": "file" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "done": { + "type": "boolean" + }, + "error": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/deployed-branches": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listSiteDeployedBranches", + "tags": [ + "deployedBranch" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/unlink_repo": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "put": { + "operationId": "unlinkSiteRepo", + "tags": [ + "site" + ], + "description": "[Beta] Unlinks the repo from the site.\n\nThis action will also:\n- Delete associated deploy keys\n- Delete outgoing webhooks for the repo\n- Delete the site's build hooks", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + }, + "404": { + "description": "Site not found" + } + } + } + }, + "/sites/{site_id}/enable": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "put": { + "operationId": "enableSite", + "tags": [ + "site" + ], + "description": "Re-enables a site that was previously disabled by the user. Sites that were disabled for usage exceeded or marked as spam cannot be re-enabled via this endpoint.", + "responses": { + "204": { + "description": "No content" + }, + "422": { + "description": "Cannot enable this site", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/disable": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "put": { + "operationId": "disableSite", + "tags": [ + "site" + ], + "description": "Disables a site, preventing it from serving content. The site can be re-enabled later using the enable endpoint.", + "parameters": [ + { + "name": "reason", + "type": "string", + "in": "query", + "required": true, + "description": "Reason for disabling the site" + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/builds/{build_id}": { + "parameters": [ + { + "name": "build_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getSiteBuild", + "tags": [ + "build" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "done": { + "type": "boolean" + }, + "error": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/builds/{build_id}/log": { + "parameters": [ + { + "name": "build_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "msg", + "in": "body", + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "error": { + "type": "boolean" + }, + "section": { + "type": "string", + "enum": [ + "initializing", + "building", + "deploying", + "cleanup", + "postprocessing" + ] + } + } + }, + "required": true + } + ], + "post": { + "operationId": "updateSiteBuildLog", + "tags": [ + "buildLogMsg" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/builds/{build_id}/start": { + "parameters": [ + { + "name": "build_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "buildbot_version", + "type": "string", + "in": "query", + "required": false + }, + { + "name": "build_version", + "type": "string", + "in": "query", + "required": false + }, + { + "name": "task_id", + "type": "string", + "in": "query", + "required": false + } + ], + "post": { + "operationId": "notifyBuildStart", + "tags": [ + "build" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/{account_id}/builds/status": { + "parameters": [ + { + "name": "account_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getAccountBuildStatus", + "tags": [ + "build" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "active": { + "type": "integer" + }, + "pending_concurrency": { + "type": "integer" + }, + "enqueued": { + "type": "integer" + }, + "build_count": { + "type": "integer" + }, + "minutes": { + "type": "object", + "properties": { + "current": { + "type": "integer" + }, + "current_average_sec": { + "type": "integer" + }, + "previous": { + "type": "integer" + }, + "period_start_date": { + "type": "string", + "format": "dateTime" + }, + "period_end_date": { + "type": "string", + "format": "dateTime" + }, + "last_updated_at": { + "type": "string", + "format": "dateTime" + }, + "included_minutes": { + "type": "string" + }, + "included_minutes_with_packs": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/dns": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getDNSForSite", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "configureDNSForSite", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/rollback": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "put": { + "operationId": "rollbackSiteDeploy", + "tags": [ + "deploy" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/deploys/{deploy_id}": { + "get": { + "operationId": "getDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/validations_report": { + "patch": { + "operationId": "updateDeployValidations", + "tags": [ + "deploy" + ], + "description": "Updates the deploy validations report for a deploy.", + "x-internal": true, + "x-controller": "api/v1/deploys", + "x-action": "validations_report", + "parameters": [ + { + "name": "deploy_id", + "description": "The ID of the deploy", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "report", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "secrets_scan": { + "type": "object" + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The id of the deploy validations report" + }, + "deploy_id": { + "type": "string", + "description": "The id of the deploy" + }, + "secret_scan_result": { + "type": "object", + "properties": { + "scannedFilesCount": { + "type": "integer", + "description": "The number of files scanned" + }, + "secretsScanMatches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of secrets scan matches" + } + } + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/lock": { + "post": { + "operationId": "lockDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/unlock": { + "post": { + "operationId": "unlockDeploy", + "tags": [ + "deploy" + ], + "parameters": [ + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/files/{path}": { + "put": { + "operationId": "uploadDeployFile", + "tags": [ + "file" + ], + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "path", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "size", + "type": "integer", + "in": "query" + }, + { + "name": "file_body", + "in": "body", + "schema": { + "type": "string", + "format": "binary" + }, + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "mime_type": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/functions/{name}": { + "put": { + "operationId": "uploadDeployFunction", + "tags": [ + "function" + ], + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "name", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "runtime", + "type": "string", + "in": "query" + }, + { + "name": "invocation_mode", + "in": "query", + "type": "string" + }, + { + "name": "timeout", + "in": "query", + "type": "integer" + }, + { + "name": "size", + "type": "integer", + "in": "query" + }, + { + "name": "file_body", + "in": "body", + "schema": { + "type": "string", + "format": "binary" + }, + "required": true + }, + { + "name": "X-Nf-Retry-Count", + "type": "integer", + "in": "header" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "region": { + "type": "string" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/edge_functions/{code_sha}": { + "put": { + "operationId": "uploadDeployEdgeFunction", + "tags": [ + "edgeFunction" + ], + "consumes": [ + "application/octet-stream" + ], + "parameters": [ + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "code_sha", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "file_body", + "in": "body", + "schema": { + "type": "string", + "format": "binary" + }, + "required": true + }, + { + "name": "X-Nf-Retry-Count", + "type": "integer", + "in": "header" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/plugins/{package}": { + "put": { + "x-internal": true, + "operationId": "updatePlugin", + "tags": [ + "x-internal" + ], + "description": "This is an internal-only endpoint.", + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "package", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "plugin_params", + "in": "body", + "schema": { + "type": "object", + "properties": { + "pinned_version": { + "type": "string" + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "package": { + "type": "string" + }, + "pinned_version": { + "type": "string" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/plugin_runs/latest": { + "get": { + "x-internal": true, + "operationId": "getLatestPluginRuns", + "tags": [ + "x-internal" + ], + "description": "This is an internal-only endpoint.", + "parameters": [ + { + "name": "site_id", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "packages", + "in": "query", + "type": "array", + "items": { + "type": "string" + }, + "required": true + }, + { + "name": "state", + "in": "query", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "package": { + "type": "string" + }, + "version": { + "type": "string" + }, + "state": { + "type": "string" + }, + "reporting_event": { + "type": "string" + }, + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, + { + "type": "object", + "properties": { + "deploy_id": { + "type": "string" + } + } + } + ] + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/deploys/{deploy_id}/plugin_runs": { + "post": { + "x-internal": true, + "operationId": "createPluginRun", + "tags": [ + "x-internal" + ], + "description": "This is an internal-only endpoint.", + "parameters": [ + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "plugin_run", + "in": "body", + "schema": { + "type": "object", + "properties": { + "package": { + "type": "string" + }, + "version": { + "type": "string" + }, + "state": { + "type": "string" + }, + "reporting_event": { + "type": "string" + }, + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "text": { + "type": "string" + } + } + } + } + ], + "responses": { + "201": { + "description": "CREATED", + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "package": { + "type": "string" + }, + "version": { + "type": "string" + }, + "state": { + "type": "string" + }, + "reporting_event": { + "type": "string" + }, + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, + { + "type": "object", + "properties": { + "deploy_id": { + "type": "string" + } + } + } + ] + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/forms/{form_id}/submissions": { + "get": { + "operationId": "listFormSubmissions", + "tags": [ + "submission" + ], + "parameters": [ + { + "name": "form_id", + "type": "string", + "in": "path", + "required": true + }, + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "number": { + "type": "integer", + "format": "int32" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + }, + "company": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "site_url": { + "type": "string" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/hooks": { + "get": { + "operationId": "listHooksBySiteId", + "tags": [ + "hook" + ], + "parameters": [ + { + "name": "site_id", + "in": "query", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createHookBySiteId", + "tags": [ + "hook" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "query", + "required": true + }, + { + "name": "hook", + "in": "body", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + }, + "required": true + } + ], + "responses": { + "201": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/hooks/{hook_id}": { + "parameters": [ + { + "name": "hook_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getHook", + "tags": [ + "hook" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "updateHook", + "tags": [ + "hook" + ], + "parameters": [ + { + "name": "hook", + "in": "body", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + }, + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteHook", + "tags": [ + "hook" + ], + "responses": { + "204": { + "description": "No content" + } + } + } + }, + "/hooks/{hook_id}/enable": { + "parameters": [ + { + "name": "hook_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "operationId": "enableHook", + "tags": [ + "hook" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/hooks/types": { + "get": { + "operationId": "listHookTypes", + "tags": [ + "hookType" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "string" + } + }, + "fields": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/oauth/tickets": { + "post": { + "operationId": "createTicket", + "tags": [ + "ticket" + ], + "parameters": [ + { + "name": "client_id", + "type": "string", + "in": "query", + "required": true + }, + { + "name": "body", + "in": "body", + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "authorized": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "401": { + "description": "OAuth application not found", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + }, + "422": { + "description": "Validation error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/oauth/tickets/{ticket_id}": { + "get": { + "operationId": "showTicket", + "tags": [ + "ticket" + ], + "parameters": [ + { + "name": "ticket_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "authorized": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/oauth/tickets/{ticket_id}/exchange": { + "post": { + "operationId": "exchangeTicket", + "tags": [ + "accessToken" + ], + "parameters": [ + { + "name": "ticket_id", + "type": "string", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "ok", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "access_token": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "user_email": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/deploy_keys": { + "get": { + "operationId": "listDeployKeys", + "tags": [ + "deployKey" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createDeployKey", + "tags": [ + "deployKey" + ], + "consumes": [ + "application/json" + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/deploy_keys/{key_id}": { + "parameters": [ + { + "name": "key_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getDeployKey", + "tags": [ + "deployKey" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteDeployKey", + "tags": [ + "deployKey" + ], + "responses": { + "204": { + "description": "Not Content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/{account_slug}/sites": { + "post": { + "operationId": "createSiteInTeam", + "tags": [ + "site" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "site", + "in": "body", + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + }, + { + "properties": { + "repo": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + } + } + } + ] + } + }, + { + "name": "configure_dns", + "type": "boolean", + "in": "query" + }, + { + "name": "account_slug", + "in": "path", + "type": "string", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site." + }, + "get": { + "operationId": "listSitesForAccount", + "tags": [ + "site" + ], + "parameters": [ + { + "name": "name", + "in": "query", + "type": "string" + }, + { + "name": "account_slug", + "in": "path", + "type": "string", + "required": true + }, + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables." + } + }, + "/{account_slug}/members": { + "parameters": [ + { + "name": "account_slug", + "in": "path", + "type": "string", + "required": true + } + ], + "get": { + "operationId": "listMembersForAccount", + "tags": [ + "member" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "role": { + "type": "string" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "addMemberToAccount", + "tags": [ + "member" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "accountAddMemberSetup", + "in": "body", + "schema": { + "type": "object", + "properties": { + "role": { + "type": "string", + "enum": [ + "Owner", + "Developer", + "Billing Admin", + "Reviewer" + ] + }, + "email": { + "type": "string" + } + } + }, + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "role": { + "type": "string" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/{account_slug}/members/{member_id}": { + "parameters": [ + { + "name": "account_slug", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "member_id", + "in": "path", + "type": "string", + "required": true + } + ], + "get": { + "operationId": "getAccountMember", + "tags": [ + "member" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "role": { + "type": "string" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "updateAccountMember", + "tags": [ + "member" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "accountUpdateMemberSetup", + "in": "body", + "schema": { + "type": "object", + "properties": { + "role": { + "type": "string", + "enum": [ + "Owner", + "Developer", + "Billing Admin", + "Reviewer" + ] + }, + "site_access": { + "type": "string", + "enum": [ + "all", + "none", + "selected" + ] + }, + "site_ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "role": { + "type": "string" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "removeAccountMember", + "tags": [ + "member" + ], + "responses": { + "204": { + "description": "Not Content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/billing/payment_methods": { + "get": { + "operationId": "listPaymentMethodsForUser", + "tags": [ + "paymentMethod" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "method_name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "state": { + "type": "string" + }, + "data": { + "type": "object", + "properties": { + "card_type": { + "type": "string" + }, + "last4": { + "type": "string" + }, + "email": { + "type": "string" + } + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/accounts/types": { + "get": { + "operationId": "listAccountTypesForUser", + "tags": [ + "accountType" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "capabilities": { + "type": "object" + }, + "monthly_dollar_price": { + "type": "integer" + }, + "yearly_dollar_price": { + "type": "integer" + }, + "monthly_seats_addon_dollar_price": { + "type": "integer" + }, + "yearly_seats_addon_dollar_price": { + "type": "integer" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/accounts": { + "get": { + "operationId": "listAccountsForUser", + "tags": [ + "accountMembership" + ], + "parameters": [ + { + "name": "minimal", + "x-internal": true, + "type": "boolean", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "sites": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "collaborators": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + } + } + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + }, + "billing_period": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "type_name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "owner_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles_allowed": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createAccount", + "tags": [ + "accountMembership" + ], + "parameters": [ + { + "name": "accountSetup", + "in": "body", + "schema": { + "type": "object", + "required": [ + "name", + "type_id" + ], + "properties": { + "name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "period": { + "type": "string", + "enum": [ + "monthly", + "yearly" + ] + }, + "extra_seats_block": { + "type": "integer" + } + } + }, + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "sites": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "collaborators": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + } + } + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + }, + "billing_period": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "type_name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "owner_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles_allowed": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/accounts/{account_id}": { + "parameters": [ + { + "name": "account_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getAccount", + "tags": [ + "accountMembership" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "sites": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "collaborators": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + } + } + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + }, + "billing_period": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "type_name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "owner_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles_allowed": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "updateAccount", + "tags": [ + "accountMembership" + ], + "parameters": [ + { + "name": "accountUpdateSetup", + "in": "body", + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "extra_seats_block": { + "type": "integer" + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "sites": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "collaborators": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + } + } + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + }, + "billing_period": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "type_name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "owner_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles_allowed": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "cancelAccount", + "tags": [ + "accountMembership" + ], + "responses": { + "204": { + "description": "Not Content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/accounts/{account_id}/audit": { + "parameters": [ + { + "name": "account_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listAccountAuditEvents", + "tags": [ + "auditLog" + ], + "parameters": [ + { + "name": "query", + "type": "string", + "in": "query" + }, + { + "name": "log_type", + "type": "string", + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "account_id": { + "type": "string" + }, + "payload": { + "type": "object", + "properties": { + "actor_id": { + "type": "string" + }, + "actor_name": { + "type": "string" + }, + "actor_email": { + "type": "string" + }, + "action": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "dateTime" + }, + "log_type": { + "type": "string" + } + }, + "additionalProperties": { + "type": "object" + } + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/agent_runners": { + "get": { + "operationId": "listAgentRunners", + "tags": [ + "agentRunner" + ], + "parameters": [ + { + "name": "account_id", + "type": "string", + "in": "query", + "required": true + }, + { + "name": "site_id", + "type": "string", + "in": "query", + "required": true + }, + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + }, + { + "name": "state", + "type": "string", + "in": "query", + "enum": [ + "live", + "error" + ] + }, + { + "name": "title", + "type": "string", + "in": "query" + }, + { + "name": "branch", + "type": "string", + "in": "query" + }, + { + "name": "result_branch", + "type": "string", + "in": "query" + }, + { + "name": "from", + "type": "integer", + "in": "query" + }, + { + "name": "to", + "type": "integer", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "parent_agent_runner_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "result_branch": { + "type": "string" + }, + "pr_url": { + "type": "string" + }, + "pr_branch": { + "type": "string" + }, + "pr_state": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "pr_is_being_created": { + "type": "boolean" + }, + "pr_error": { + "type": "string" + }, + "current_task": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "merge_commit_sha": { + "type": "string" + }, + "merge_commit_error": { + "type": "string" + }, + "merge_commit_is_being_created": { + "type": "boolean" + }, + "base_deploy_id": { + "type": "string" + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "active_session_created_at": { + "type": "string", + "format": "dateTime" + }, + "latest_session_deploy_id": { + "type": "string" + }, + "latest_session_deploy_url": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createAgentRunner", + "tags": [ + "agentRunner" + ], + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "query", + "required": true + }, + { + "name": "deploy_id", + "type": "string", + "in": "query" + }, + { + "name": "branch", + "type": "string", + "in": "query" + }, + { + "name": "prompt", + "type": "string", + "in": "query" + }, + { + "name": "agent", + "type": "string", + "in": "query" + }, + { + "name": "model", + "type": "string", + "in": "query" + }, + { + "name": "parent_agent_runner_id", + "type": "string", + "in": "query" + }, + { + "name": "dev_server_image", + "type": "string", + "in": "query" + }, + { + "name": "file_keys", + "type": "array", + "in": "query", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "parent_agent_runner_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "result_branch": { + "type": "string" + }, + "pr_url": { + "type": "string" + }, + "pr_branch": { + "type": "string" + }, + "pr_state": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "pr_is_being_created": { + "type": "boolean" + }, + "pr_error": { + "type": "string" + }, + "current_task": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "merge_commit_sha": { + "type": "string" + }, + "merge_commit_error": { + "type": "string" + }, + "merge_commit_is_being_created": { + "type": "boolean" + }, + "base_deploy_id": { + "type": "string" + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "active_session_created_at": { + "type": "string", + "format": "dateTime" + }, + "latest_session_deploy_id": { + "type": "string" + }, + "latest_session_deploy_url": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/agent_runners/upload_url": { + "post": { + "x-internal": true, + "operationId": "createAgentRunnerUploadUrl", + "tags": [ + "agentRunner" + ], + "parameters": [ + { + "name": "account_id", + "type": "string", + "in": "query", + "required": true + }, + { + "name": "filename", + "type": "string", + "in": "query", + "required": true + }, + { + "name": "content_type", + "type": "string", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}": { + "parameters": [ + { + "name": "agent_runner_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getAgentRunner", + "tags": [ + "agentRunner" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "parent_agent_runner_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "result_branch": { + "type": "string" + }, + "pr_url": { + "type": "string" + }, + "pr_branch": { + "type": "string" + }, + "pr_state": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "pr_is_being_created": { + "type": "boolean" + }, + "pr_error": { + "type": "string" + }, + "current_task": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "merge_commit_sha": { + "type": "string" + }, + "merge_commit_error": { + "type": "string" + }, + "merge_commit_is_being_created": { + "type": "boolean" + }, + "base_deploy_id": { + "type": "string" + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "active_session_created_at": { + "type": "string", + "format": "dateTime" + }, + "latest_session_deploy_id": { + "type": "string" + }, + "latest_session_deploy_url": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "patch": { + "operationId": "updateAgentRunner", + "tags": [ + "agentRunner" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "parent_agent_runner_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "result_branch": { + "type": "string" + }, + "pr_url": { + "type": "string" + }, + "pr_branch": { + "type": "string" + }, + "pr_state": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "pr_is_being_created": { + "type": "boolean" + }, + "pr_error": { + "type": "string" + }, + "current_task": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "merge_commit_sha": { + "type": "string" + }, + "merge_commit_error": { + "type": "string" + }, + "merge_commit_is_being_created": { + "type": "boolean" + }, + "base_deploy_id": { + "type": "string" + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "active_session_created_at": { + "type": "string", + "format": "dateTime" + }, + "latest_session_deploy_id": { + "type": "string" + }, + "latest_session_deploy_url": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteAgentRunner", + "tags": [ + "agentRunner" + ], + "responses": { + "202": { + "description": "Accepted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}/archive": { + "parameters": [ + { + "name": "agent_runner_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "operationId": "archiveAgentRunner", + "tags": [ + "agentRunner" + ], + "responses": { + "202": { + "description": "Accepted" + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}/pull_request": { + "parameters": [ + { + "name": "agent_runner_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "x-internal": true, + "operationId": "agentRunnerPullRequest", + "tags": [ + "agentRunner" + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request" + }, + "409": { + "description": "Conflict" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}/commit": { + "parameters": [ + { + "name": "agent_runner_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "x-internal": true, + "operationId": "agentRunnerCommitToBranch", + "tags": [ + "agentRunner" + ], + "parameters": [ + { + "name": "target_branch", + "type": "string", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request" + }, + "409": { + "description": "Conflict" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}/sessions": { + "parameters": [ + { + "name": "agent_runner_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listAgentRunnerSessions", + "tags": [ + "agentRunnerSession" + ], + "parameters": [ + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + }, + { + "name": "state", + "type": "string", + "in": "query", + "enum": [ + "live", + "error" + ] + }, + { + "name": "from", + "type": "integer", + "in": "query" + }, + { + "name": "to", + "type": "integer", + "in": "query" + }, + { + "name": "order_by", + "type": "string", + "in": "query", + "enum": [ + "asc", + "desc" + ] + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "agent_runner_id": { + "type": "string" + }, + "dev_server_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent_config": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "result": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "commit_sha": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "result_zip_file_name": { + "type": "string" + }, + "is_published": { + "type": "boolean" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createAgentRunnerSession", + "tags": [ + "agentRunnerSession" + ], + "parameters": [ + { + "name": "prompt", + "type": "string", + "in": "query" + }, + { + "name": "agent", + "type": "string", + "in": "query" + }, + { + "name": "model", + "type": "string", + "in": "query" + }, + { + "name": "file_keys", + "type": "array", + "in": "query", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "agent_runner_id": { + "type": "string" + }, + "dev_server_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent_config": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "result": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "commit_sha": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "result_zip_file_name": { + "type": "string" + }, + "is_published": { + "type": "boolean" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "422": { + "description": "Unprocessable Entity" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id}": { + "parameters": [ + { + "name": "agent_runner_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "agent_runner_session_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getAgentRunnerSession", + "tags": [ + "agentRunnerSession" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "agent_runner_id": { + "type": "string" + }, + "dev_server_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent_config": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "result": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "commit_sha": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "result_zip_file_name": { + "type": "string" + }, + "is_published": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "patch": { + "operationId": "updateAgentRunnerSession", + "tags": [ + "agentRunnerSession" + ], + "parameters": [ + { + "name": "is_published", + "type": "boolean", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "agent_runner_id": { + "type": "string" + }, + "dev_server_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent_config": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "result": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "commit_sha": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "result_zip_file_name": { + "type": "string" + }, + "is_published": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteAgentRunnerSession", + "tags": [ + "agentRunnerSession" + ], + "responses": { + "202": { + "description": "Accepted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/submissions/{submission_id}": { + "parameters": [ + { + "name": "submission_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listFormSubmission", + "tags": [ + "submission" + ], + "parameters": [ + { + "name": "query", + "type": "string", + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "number": { + "type": "integer", + "format": "int32" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + }, + "company": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "site_url": { + "type": "string" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSubmission", + "tags": [ + "submission" + ], + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/service-instances": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listServiceInstancesForSite", + "tags": [ + "serviceInstance" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "config": { + "type": "object" + }, + "external_attributes": { + "type": "object" + }, + "service_slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "service_name": { + "type": "string" + }, + "env": { + "type": "object" + }, + "snippets": { + "type": "array", + "items": { + "type": "object" + } + }, + "auth_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/services/{addon}/instances": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "addon", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "operationId": "createServiceInstance", + "tags": [ + "serviceInstance" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "config", + "in": "body", + "required": true, + "schema": { + "type": "object" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "config": { + "type": "object" + }, + "external_attributes": { + "type": "object" + }, + "service_slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "service_name": { + "type": "string" + }, + "env": { + "type": "object" + }, + "snippets": { + "type": "array", + "items": { + "type": "object" + } + }, + "auth_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/services/{addon}/instances/{instance_id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "addon", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "instance_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "showServiceInstance", + "tags": [ + "serviceInstance" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "config": { + "type": "object" + }, + "external_attributes": { + "type": "object" + }, + "service_slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "service_name": { + "type": "string" + }, + "env": { + "type": "object" + }, + "snippets": { + "type": "array", + "items": { + "type": "object" + } + }, + "auth_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "updateServiceInstance", + "tags": [ + "serviceInstance" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "config", + "in": "body", + "required": true, + "schema": { + "type": "object" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteServiceInstance", + "tags": [ + "serviceInstance" + ], + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/services/": { + "parameters": [ + { + "name": "search", + "type": "string", + "in": "query" + } + ], + "get": { + "operationId": "getServices", + "tags": [ + "service" + ], + "responses": { + "200": { + "description": "services", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "long_description": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "object" + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "icon": { + "type": "string" + }, + "manifest_url": { + "type": "string" + }, + "environments": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/services/{addonName}": { + "parameters": [ + { + "name": "addonName", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "showService", + "tags": [ + "service" + ], + "responses": { + "200": { + "description": "services", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "long_description": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "object" + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "icon": { + "type": "string" + }, + "manifest_url": { + "type": "string" + }, + "environments": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/services/{addonName}/manifest": { + "parameters": [ + { + "name": "addonName", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "showServiceManifest", + "tags": [ + "service" + ], + "responses": { + "201": { + "description": "retrieving from provider", + "schema": { + "type": "object" + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/user": { + "get": { + "operationId": "getCurrentUser", + "tags": [ + "user" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "avatar_url": { + "type": "string" + }, + "email": { + "type": "string" + }, + "affiliate_id": { + "type": "string" + }, + "site_count": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "last_login": { + "type": "string", + "format": "dateTime" + }, + "login_providers": { + "type": "array", + "items": { + "type": "string" + } + }, + "onboarding_progress": { + "type": "object", + "properties": { + "slides": { + "type": "string" + } + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/traffic_splits": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "operationId": "createSplitTest", + "tags": [ + "splitTest" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "branch_tests", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "branch_tests": { + "type": "object" + } + } + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "get": { + "operationId": "getSplitTests", + "tags": [ + "splitTest" + ], + "responses": { + "200": { + "description": "split_tests", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/traffic_splits/{split_test_id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "split_test_id", + "type": "string", + "in": "path", + "required": true + } + ], + "put": { + "operationId": "updateSplitTest", + "tags": [ + "splitTest" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "branch_tests", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "branch_tests": { + "type": "object" + } + } + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "get": { + "operationId": "getSplitTest", + "tags": [ + "splitTest" + ], + "responses": { + "200": { + "description": "split_test", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/traffic_splits/{split_test_id}/publish": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "split_test_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "operationId": "enableSplitTest", + "tags": [ + "splitTest" + ], + "responses": { + "204": { + "description": "enable" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/traffic_splits/{split_test_id}/unpublish": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "split_test_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "operationId": "disableSplitTest", + "tags": [ + "splitTest" + ], + "responses": { + "204": { + "description": "disabled" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/dns_zones": { + "post": { + "operationId": "createDnsZone", + "tags": [ + "dnsZone" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "DnsZoneParams", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "account_slug": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + } + } + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "get": { + "operationId": "getDnsZones", + "tags": [ + "dnsZone" + ], + "parameters": [ + { + "name": "account_slug", + "in": "query", + "type": "string", + "required": false + } + ], + "responses": { + "200": { + "description": "get all DNS zones the user has access to", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/dns_zones/{zone_id}": { + "parameters": [ + { + "name": "zone_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getDnsZone", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "get a single DNS zone", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteDnsZone", + "tags": [ + "dnsZone" + ], + "responses": { + "204": { + "description": "delete a single DNS zone" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/dns_zones/{zone_id}/transfer": { + "parameters": [ + { + "name": "zone_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "account_id", + "type": "string", + "in": "query", + "description": "the account of the dns zone", + "required": true + }, + { + "name": "transfer_account_id", + "type": "string", + "in": "query", + "description": "the account you want to transfer the dns zone to", + "required": true + }, + { + "name": "transfer_user_id", + "type": "string", + "in": "query", + "description": "the user you want to transfer the dns zone to", + "required": true + } + ], + "put": { + "operationId": "transferDnsZone", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "transfer a DNS zone to another account", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/dns_zones/{zone_id}/dns_records": { + "parameters": [ + { + "name": "zone_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getDnsRecords", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "get all DNS records for a single DNS zone", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createDnsRecord", + "tags": [ + "dnsZone" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "dns_record", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "weight": { + "type": "integer", + "format": "int64" + }, + "port": { + "type": "integer", + "format": "int64" + }, + "flag": { + "type": "integer", + "format": "int64" + }, + "tag": { + "type": "string" + } + } + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/dns_zones/{zone_id}/dns_records/{dns_record_id}": { + "parameters": [ + { + "name": "zone_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "dns_record_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getIndividualDnsRecord", + "tags": [ + "dnsZone" + ], + "responses": { + "200": { + "description": "get a single DNS record", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteDnsRecord", + "tags": [ + "dnsZone" + ], + "responses": { + "204": { + "description": "record deleted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/dev_servers": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listSiteDevServers", + "tags": [ + "devServer" + ], + "parameters": [ + { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "starting_at": { + "type": "string", + "format": "dateTime" + }, + "error_at": { + "type": "string", + "format": "dateTime" + }, + "live_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createSiteDevServer", + "tags": [ + "devServer" + ], + "parameters": [ + { + "name": "branch", + "type": "string", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "starting_at": { + "type": "string", + "format": "dateTime" + }, + "error_at": { + "type": "string", + "format": "dateTime" + }, + "live_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteDevServers", + "tags": [ + "devServer" + ], + "parameters": [ + { + "name": "branch", + "type": "string", + "in": "query" + } + ], + "responses": { + "202": { + "description": "OK" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/dev_servers/{dev_server_id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "dev_server_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getSiteDevServer", + "tags": [ + "devServer" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "starting_at": { + "type": "string", + "format": "dateTime" + }, + "error_at": { + "type": "string", + "format": "dateTime" + }, + "live_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + } + } + } + } + } + } + }, + "/sites/{site_id}/dev_servers/{dev_server_id}/activity": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "dev_server_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "x-internal": true, + "operationId": "markDevServerActivity", + "tags": [ + "devServer" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/sites/{site_id}/dev_servers/{dev_server_id}/state": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "dev_server_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "operationId": "updateDevServerState", + "tags": [ + "devServer" + ], + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "required": [ + "state" + ], + "properties": { + "state": { + "type": "string", + "enum": [ + "starting", + "live", + "error", + "done" + ] + }, + "task_id": { + "type": "string" + }, + "error": { + "type": "string" + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "starting_at": { + "type": "string", + "format": "dateTime" + }, + "error_at": { + "type": "string", + "format": "dateTime" + }, + "live_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + } + } + } + }, + "409": { + "description": "Conflict" + } + } + } + }, + "/sites/{site_id}/dev_server_hooks": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listSiteDevServerHooks", + "tags": [ + "devServerHook" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "operationId": "createSiteDevServerHook", + "tags": [ + "devServerHook" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "devServerHook", + "in": "body", + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + }, + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/dev_server_hooks/{id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "getSiteDevServerHook", + "tags": [ + "devServerHook" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "operationId": "updateSiteDevServerHook", + "tags": [ + "devServerHook" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "devServerHook", + "in": "body", + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + }, + "required": true + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteDevServerHook", + "tags": [ + "devServerHook" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/agent_runner_hooks": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "x-internal": true, + "operationId": "listSiteAgentRunnerHooks", + "tags": [ + "agentRunnerHook" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "url": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "post": { + "x-internal": true, + "operationId": "createSiteAgentRunnerHook", + "tags": [ + "agentRunnerHook" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "agentRunnerHook", + "in": "body", + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + } + } + }, + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "url": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + { + "properties": { + "secret": { + "type": "string" + } + } + } + ] + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/agent_runner_hooks/{id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "x-internal": true, + "operationId": "getSiteAgentRunnerHook", + "tags": [ + "agentRunnerHook" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "url": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "put": { + "x-internal": true, + "operationId": "updateSiteAgentRunnerHook", + "tags": [ + "agentRunnerHook" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "agentRunnerHook", + "in": "body", + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + } + } + }, + "required": true + } + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "x-internal": true, + "operationId": "deleteSiteAgentRunnerHook", + "tags": [ + "agentRunnerHook" + ], + "responses": { + "204": { + "description": "No content" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/ai-gateway/providers": { + "get": { + "operationId": "getAIGatewayProviders", + "tags": [ + "aiGateway" + ], + "security": [], + "responses": { + "200": { + "description": "The mapping of providers and supported models", + "schema": { + "type": "object", + "properties": { + "providers": { + "additionalProperties": { + "type": "object", + "properties": { + "token_env_var": { + "type": "string" + }, + "url_env_var": { + "type": "string" + }, + "models": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/ai-gateway/token": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true, + "description": "The site ID" + } + ], + "get": { + "operationId": "getAIGatewayToken", + "tags": [ + "aiGateway" + ], + "responses": { + "200": { + "description": "AI Gateway token for the site", + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string", + "description": "The AI Gateway authentication token" + }, + "url": { + "type": "string", + "description": "AI gateway base url" + }, + "expires_at": { + "type": "integer", + "format": "int64", + "description": "Unix timestamp when the token expires" + } + } + } + }, + "404": { + "description": "AI Gateway not available for this site" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "Returns an AI Gateway token for a specific site" + } + }, + "/accounts/{account_id}/ai-gateway/token": { + "parameters": [ + { + "name": "account_id", + "type": "string", + "in": "path", + "required": true, + "description": "The account ID" + } + ], + "get": { + "operationId": "getAccountAIGatewayToken", + "tags": [ + "aiGateway" + ], + "responses": { + "200": { + "description": "AI Gateway token for the account", + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string", + "description": "The AI Gateway authentication token" + }, + "url": { + "type": "string", + "description": "AI gateway base url" + }, + "expires_at": { + "type": "integer", + "format": "int64", + "description": "Unix timestamp when the token expires" + } + } + } + }, + "404": { + "description": "AI Gateway not available for this account" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + }, + "description": "Returns an AI Gateway token scoped to an account" + } + }, + "/sites/{site_id}/database": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "operationId": "createSiteDatabase", + "tags": [ + "database" + ], + "description": "Creates a new database for the specified site. If a database already exists, returns the existing connection string. The database region defaults to the site's functions region if not specified.", + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "database", + "in": "body", + "schema": { + "type": "object", + "description": "Request body for creating a database", + "properties": { + "region": { + "type": "string", + "description": "The region where the database should be created. Defaults to the site's functions region if not specified." + } + } + } + } + ], + "responses": { + "200": { + "description": "Database already exists", + "schema": { + "type": "object", + "description": "Response containing the database connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database" + } + } + } + }, + "201": { + "description": "Created", + "schema": { + "type": "object", + "description": "Response containing the database connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "get": { + "operationId": "getSiteDatabase", + "tags": [ + "database" + ], + "description": "Returns the database connection string for the specified site.", + "parameters": [ + { + "name": "role", + "type": "string", + "in": "query", + "description": "The database role to use for the connection string. Defaults to netlifydb_owner if not specified.", + "enum": [ + "netlifydb_owner", + "netlifydb_readonly" + ] + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "description": "Response containing the database connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteDatabase", + "tags": [ + "database" + ], + "description": "Deletes the database and all associated branches and snapshots for the specified site.", + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/branch": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "operationId": "createSiteDatabaseBranch", + "tags": [ + "database" + ], + "description": "Creates a new database branch. If a branch already exists for the specified branch ID, returns the existing connection string.", + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "branch", + "in": "body", + "schema": { + "type": "object", + "description": "Request body for creating a database branch", + "required": [ + "branch_id" + ], + "properties": { + "parent_branch_id": { + "type": "string", + "description": "The ID of the parent branch to create the new branch from. Defaults to the production branch if not specified." + }, + "branch_id": { + "type": "string", + "description": "The branch identifier" + }, + "metadata": { + "type": "object", + "description": "Arbitrary metadata to associate with the branch", + "additionalProperties": true + } + } + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Branch already exists", + "schema": { + "type": "object", + "description": "Response containing the database branch connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + } + }, + "201": { + "description": "Created", + "schema": { + "type": "object", + "description": "Response containing the database branch connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/branches": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listSiteDatabaseBranches", + "tags": [ + "database" + ], + "description": "Returns all branches for the site's database with compute status and metadata.", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "description": "Response containing a list of database branches", + "properties": { + "branches": { + "type": "array", + "items": { + "type": "object", + "description": "Detailed information about a database branch", + "properties": { + "branch_id": { + "type": "string", + "description": "The branch identifier" + }, + "name": { + "type": "string", + "description": "The branch name" + }, + "connection_string": { + "type": "string", + "description": "The connection string for the branch" + }, + "state": { + "type": "string", + "description": "The current state of the branch", + "enum": [ + "init", + "creating", + "resetting", + "ready", + "archived" + ] + }, + "logical_size_bytes": { + "type": "integer", + "format": "int64", + "description": "The logical size of the branch in bytes" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was created" + }, + "updated_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last updated" + }, + "last_active_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last active" + }, + "compute": { + "type": "object", + "description": "Compute endpoint status for a branch", + "properties": { + "current_state": { + "type": "string", + "description": "The current state of the compute endpoint", + "enum": [ + "active", + "idle" + ] + }, + "autoscaling_limit_min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units for autoscaling" + }, + "autoscaling_limit_max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units for autoscaling" + }, + "suspend_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before the compute endpoint is suspended" + }, + "last_active": { + "type": "string", + "format": "dateTime", + "description": "When the compute endpoint was last active" + } + } + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + }, + "description": "List of database branches" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/branch/{branch_id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "branch_id", + "type": "string", + "in": "path", + "required": true, + "description": "The branch ID" + } + ], + "get": { + "operationId": "getSiteDatabaseBranch", + "tags": [ + "database" + ], + "description": "Returns the database branch connection string for a specific branch.", + "parameters": [ + { + "name": "role", + "type": "string", + "in": "query", + "description": "The database role to use for the connection string. Defaults to netlifydb_owner if not specified.", + "enum": [ + "netlifydb_owner", + "netlifydb_readonly" + ] + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "description": "Response containing the database branch connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + } + }, + "404": { + "description": "Branch not found" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "deleteSiteDatabaseBranch", + "tags": [ + "database" + ], + "description": "Deletes a database branch.", + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/branch/{branch_id}/reset": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "branch_id", + "type": "string", + "in": "path", + "required": true, + "description": "The branch ID to reset" + } + ], + "post": { + "operationId": "resetSiteDatabaseBranch", + "tags": [ + "database" + ], + "description": "Resets a non-production database branch by re-forking it from a source branch (defaults to the production branch). If the target branch is already in sync with the source, returns the existing connection string without performing a reset, unless `force=true` is passed. The production branch cannot be reset.", + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "force", + "type": "boolean", + "in": "query", + "description": "If true, resets the branch even when it is already in sync with the source." + }, + { + "name": "role", + "type": "string", + "in": "query", + "description": "The database role to use for the returned connection string. Defaults to netlifydb_owner if not specified.", + "enum": [ + "netlifydb_owner", + "netlifydb_readonly" + ] + }, + { + "name": "reset", + "in": "body", + "schema": { + "type": "object", + "description": "Request body for resetting a database branch", + "properties": { + "source_branch_id": { + "type": "string", + "description": "The ID of the branch to re-fork the target branch from. Defaults to \"production\" if not specified." + } + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "description": "Response for a database branch reset", + "properties": { + "reset": { + "type": "boolean", + "description": "Whether the branch was actually re-forked. False when the target was already in sync with the source and `force=true` was not set." + }, + "connection_string": { + "type": "string", + "description": "The connection string for the reset (or unchanged) branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + } + }, + "400": { + "description": "Invalid request — for example, the target is the production branch or the source branch is the same as the target." + }, + "404": { + "description": "Database or branch not found" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/branch/{branch_id}/compute/settings": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "branch_id", + "type": "string", + "in": "path", + "required": true, + "description": "The branch ID" + } + ], + "put": { + "operationId": "setSiteDatabaseBranchComputeSettings", + "tags": [ + "database" + ], + "description": "Sets compute settings for a specific database branch, overriding project-level settings. Requires a Pro or higher plan.", + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "computeSettings", + "in": "body", + "schema": { + "type": "object", + "description": "Request body for setting compute settings. All fields are optional; only provided fields are updated.", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "minimum": 0.25, + "maximum": 16, + "x-nullable": true, + "description": "Minimum compute units (0.25 to 16.0). Must be less than or equal to max_cu." + }, + "max_cu": { + "type": "number", + "format": "double", + "minimum": 0.25, + "maximum": 16, + "x-nullable": true, + "description": "Maximum compute units (0.25 to 16.0). Must be greater than or equal to min_cu. max_cu - min_cu must not exceed 8.0." + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "minimum": -1, + "x-nullable": true, + "description": "Seconds of inactivity before the compute endpoint is suspended. Use -1 for always on, or a non-negative value." + } + } + }, + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "description": "Compute settings for a database or branch", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units" + }, + "max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units" + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before suspension" + } + } + } + }, + "403": { + "description": "Compute customization requires a Pro or higher plan" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/compute/settings": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "put": { + "operationId": "setSiteDatabaseComputeSettings", + "tags": [ + "database" + ], + "description": "Sets project-level compute settings for the database. Applied to new branches. Can be overridden per-branch. Requires a Pro or higher plan.", + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "computeSettings", + "in": "body", + "schema": { + "type": "object", + "description": "Request body for setting compute settings. All fields are optional; only provided fields are updated.", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "minimum": 0.25, + "maximum": 16, + "x-nullable": true, + "description": "Minimum compute units (0.25 to 16.0). Must be less than or equal to max_cu." + }, + "max_cu": { + "type": "number", + "format": "double", + "minimum": 0.25, + "maximum": 16, + "x-nullable": true, + "description": "Maximum compute units (0.25 to 16.0). Must be greater than or equal to min_cu. max_cu - min_cu must not exceed 8.0." + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "minimum": -1, + "x-nullable": true, + "description": "Seconds of inactivity before the compute endpoint is suspended. Use -1 for always on, or a non-negative value." + } + } + }, + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "description": "Compute settings for a database or branch", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units" + }, + "max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units" + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before suspension" + } + } + } + }, + "403": { + "description": "Compute customization requires a Pro or higher plan" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "get": { + "operationId": "getSiteDatabaseComputeSettings", + "tags": [ + "database" + ], + "description": "Returns the project-level compute settings for the database. Returns effective settings (custom or tier defaults). Requires a Pro or higher plan.", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "description": "Compute settings for a database or branch", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units" + }, + "max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units" + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before suspension" + } + } + } + }, + "403": { + "description": "Compute customization requires a Pro or higher plan" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + }, + "delete": { + "operationId": "clearSiteDatabaseComputeSettings", + "tags": [ + "database" + ], + "description": "Resets project-level compute settings to tier defaults. Requires a Pro or higher plan.", + "responses": { + "204": { + "description": "Cleared" + }, + "403": { + "description": "Compute customization requires a Pro or higher plan" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/migrations": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listSiteDatabaseMigrations", + "tags": [ + "database" + ], + "description": "Returns the list of migrations available for the specified branch, indicating which ones have been applied to the database.", + "parameters": [ + { + "name": "branch", + "type": "string", + "in": "query", + "description": "The branch ID to list migrations for. Defaults to \"production\" if not specified." + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "description": "Response containing the list of migrations for a branch", + "properties": { + "migrations": { + "type": "array", + "items": { + "type": "object", + "description": "A migration available to a database branch", + "properties": { + "version": { + "type": "integer", + "format": "int64", + "description": "The migration version number" + }, + "name": { + "type": "string", + "description": "The migration name" + }, + "path": { + "type": "string", + "description": "The path to the migration file in the deploy bundle" + }, + "applied": { + "type": "boolean", + "description": "Whether this migration has been applied to the branch" + } + } + }, + "description": "List of migrations" + } + } + } + }, + "404": { + "description": "Database or branch not found" + }, + "423": { + "description": "Database is disabled" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/migrations/{name}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "name", + "type": "string", + "in": "path", + "required": true, + "description": "The migration name" + } + ], + "get": { + "operationId": "getSiteDatabaseMigration", + "tags": [ + "database" + ], + "description": "Returns the contents of a named migration for the specified branch.", + "parameters": [ + { + "name": "branch", + "type": "string", + "in": "query", + "description": "The branch ID to look up the migration on. Defaults to the currently published deploy's branch." + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "description": "A migration with its file contents", + "properties": { + "version": { + "type": "integer", + "format": "int64", + "description": "The migration version number" + }, + "name": { + "type": "string", + "description": "The migration name" + }, + "path": { + "type": "string", + "description": "The path to the migration file in the deploy bundle" + }, + "content": { + "type": "string", + "description": "The raw contents of the migration file" + } + } + } + }, + "404": { + "description": "Migration, database, or branch not found" + }, + "423": { + "description": "Database is disabled" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/migrations/{deploy_id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "deploy_id", + "type": "string", + "in": "path", + "required": true, + "description": "The deploy ID to run migrations for" + } + ], + "post": { + "operationId": "runSiteDatabaseMigrations", + "tags": [ + "database" + ], + "description": "Runs database migrations for the specified deploy. Finds the deploy and determines the appropriate branch.", + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "migrations", + "in": "body", + "schema": { + "type": "object", + "description": "Request body for running database migrations", + "properties": { + "dry_run": { + "type": "boolean", + "description": "If true, validates migrations without applying them." + } + } + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "409": { + "description": "Migration conflict - migration modified or removed after being applied" + }, + "422": { + "description": "Migration validation failed" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/snapshot": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "post": { + "operationId": "createSiteDatabaseSnapshot", + "tags": [ + "database" + ], + "description": "Creates a point-in-time snapshot of a database branch. Defaults to the production branch if no branch name is specified.", + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "snapshot", + "in": "body", + "schema": { + "type": "object", + "description": "Request body for creating a database snapshot", + "properties": { + "branch_id": { + "type": "string", + "description": "The ID of the branch to snapshot. Defaults to \"production\" if not specified." + }, + "name": { + "type": "string", + "description": "A name for the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "object", + "description": "A point-in-time snapshot of a database branch", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the snapshot" + }, + "source_branch_id": { + "type": "string", + "description": "The ID of the branch that was snapshotted" + }, + "manual": { + "type": "boolean", + "description": "Whether this snapshot was manually created" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot was created" + }, + "expires_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot expires" + }, + "timestamp": { + "type": "string", + "format": "dateTime", + "description": "The point-in-time timestamp of the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/snapshots": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + } + ], + "get": { + "operationId": "listSiteDatabaseSnapshots", + "tags": [ + "database" + ], + "description": "Returns all snapshots for the site's database.", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "description": "Response containing a list of database snapshots", + "properties": { + "snapshots": { + "type": "array", + "items": { + "type": "object", + "description": "A point-in-time snapshot of a database branch", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the snapshot" + }, + "source_branch_id": { + "type": "string", + "description": "The ID of the branch that was snapshotted" + }, + "manual": { + "type": "boolean", + "description": "Whether this snapshot was manually created" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot was created" + }, + "expires_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot expires" + }, + "timestamp": { + "type": "string", + "format": "dateTime", + "description": "The point-in-time timestamp of the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + }, + "description": "List of database snapshots" + } + } + } + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/snapshot/{snapshot_id}": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "snapshot_id", + "type": "string", + "in": "path", + "required": true, + "description": "The snapshot ID" + } + ], + "delete": { + "operationId": "deleteSiteDatabaseSnapshot", + "tags": [ + "database" + ], + "description": "Deletes a database snapshot.", + "responses": { + "204": { + "description": "Deleted" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + }, + "/sites/{site_id}/database/snapshot/{snapshot_id}/restore": { + "parameters": [ + { + "name": "site_id", + "type": "string", + "in": "path", + "required": true + }, + { + "name": "snapshot_id", + "type": "string", + "in": "path", + "required": true, + "description": "The snapshot ID to restore" + } + ], + "post": { + "operationId": "restoreSiteDatabaseSnapshot", + "tags": [ + "database" + ], + "description": "Restores a snapshot to a database branch. Defaults to the production branch if no branch_name is specified.", + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "restore", + "in": "body", + "schema": { + "type": "object", + "description": "Request body for restoring a database snapshot", + "properties": { + "branch_id": { + "type": "string", + "description": "The ID of the branch to restore the snapshot to. Defaults to \"production\" if not specified." + } + } + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "default": { + "description": "error", + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + } + } + } + } + } + }, + "definitions": { + "createDatabaseRequest": { + "type": "object", + "description": "Request body for creating a database", + "properties": { + "region": { + "type": "string", + "description": "The region where the database should be created. Defaults to the site's functions region if not specified." + } + } + }, + "databaseResponse": { + "type": "object", + "description": "Response containing the database connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database" + } + } + }, + "createDatabaseBranchRequest": { + "type": "object", + "description": "Request body for creating a database branch", + "required": [ + "branch_id" + ], + "properties": { + "parent_branch_id": { + "type": "string", + "description": "The ID of the parent branch to create the new branch from. Defaults to the production branch if not specified." + }, + "branch_id": { + "type": "string", + "description": "The branch identifier" + }, + "metadata": { + "type": "object", + "description": "Arbitrary metadata to associate with the branch", + "additionalProperties": true + } + } + }, + "databaseBranchResponse": { + "type": "object", + "description": "Response containing the database branch connection string", + "properties": { + "connection_string": { + "type": "string", + "description": "The connection string for the database branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + }, + "databaseBranchesResponse": { + "type": "object", + "description": "Response containing a list of database branches", + "properties": { + "branches": { + "type": "array", + "items": { + "type": "object", + "description": "Detailed information about a database branch", + "properties": { + "branch_id": { + "type": "string", + "description": "The branch identifier" + }, + "name": { + "type": "string", + "description": "The branch name" + }, + "connection_string": { + "type": "string", + "description": "The connection string for the branch" + }, + "state": { + "type": "string", + "description": "The current state of the branch", + "enum": [ + "init", + "creating", + "resetting", + "ready", + "archived" + ] + }, + "logical_size_bytes": { + "type": "integer", + "format": "int64", + "description": "The logical size of the branch in bytes" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was created" + }, + "updated_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last updated" + }, + "last_active_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last active" + }, + "compute": { + "type": "object", + "description": "Compute endpoint status for a branch", + "properties": { + "current_state": { + "type": "string", + "description": "The current state of the compute endpoint", + "enum": [ + "active", + "idle" + ] + }, + "autoscaling_limit_min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units for autoscaling" + }, + "autoscaling_limit_max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units for autoscaling" + }, + "suspend_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before the compute endpoint is suspended" + }, + "last_active": { + "type": "string", + "format": "dateTime", + "description": "When the compute endpoint was last active" + } + } + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + }, + "description": "List of database branches" + } + } + }, + "databaseBranchDetail": { + "type": "object", + "description": "Detailed information about a database branch", + "properties": { + "branch_id": { + "type": "string", + "description": "The branch identifier" + }, + "name": { + "type": "string", + "description": "The branch name" + }, + "connection_string": { + "type": "string", + "description": "The connection string for the branch" + }, + "state": { + "type": "string", + "description": "The current state of the branch", + "enum": [ + "init", + "creating", + "resetting", + "ready", + "archived" + ] + }, + "logical_size_bytes": { + "type": "integer", + "format": "int64", + "description": "The logical size of the branch in bytes" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was created" + }, + "updated_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last updated" + }, + "last_active_at": { + "type": "string", + "format": "dateTime", + "description": "When the branch was last active" + }, + "compute": { + "type": "object", + "description": "Compute endpoint status for a branch", + "properties": { + "current_state": { + "type": "string", + "description": "The current state of the compute endpoint", + "enum": [ + "active", + "idle" + ] + }, + "autoscaling_limit_min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units for autoscaling" + }, + "autoscaling_limit_max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units for autoscaling" + }, + "suspend_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before the compute endpoint is suspended" + }, + "last_active": { + "type": "string", + "format": "dateTime", + "description": "When the compute endpoint was last active" + } + } + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + }, + "databaseBranchCompute": { + "type": "object", + "description": "Compute endpoint status for a branch", + "properties": { + "current_state": { + "type": "string", + "description": "The current state of the compute endpoint", + "enum": [ + "active", + "idle" + ] + }, + "autoscaling_limit_min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units for autoscaling" + }, + "autoscaling_limit_max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units for autoscaling" + }, + "suspend_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before the compute endpoint is suspended" + }, + "last_active": { + "type": "string", + "format": "dateTime", + "description": "When the compute endpoint was last active" + } + } + }, + "createDatabaseSnapshotRequest": { + "type": "object", + "description": "Request body for creating a database snapshot", + "properties": { + "branch_id": { + "type": "string", + "description": "The ID of the branch to snapshot. Defaults to \"production\" if not specified." + }, + "name": { + "type": "string", + "description": "A name for the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + }, + "databaseSnapshot": { + "type": "object", + "description": "A point-in-time snapshot of a database branch", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the snapshot" + }, + "source_branch_id": { + "type": "string", + "description": "The ID of the branch that was snapshotted" + }, + "manual": { + "type": "boolean", + "description": "Whether this snapshot was manually created" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot was created" + }, + "expires_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot expires" + }, + "timestamp": { + "type": "string", + "format": "dateTime", + "description": "The point-in-time timestamp of the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + }, + "databaseSnapshotMetadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + }, + "databaseSnapshotsResponse": { + "type": "object", + "description": "Response containing a list of database snapshots", + "properties": { + "snapshots": { + "type": "array", + "items": { + "type": "object", + "description": "A point-in-time snapshot of a database branch", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier of the snapshot" + }, + "source_branch_id": { + "type": "string", + "description": "The ID of the branch that was snapshotted" + }, + "manual": { + "type": "boolean", + "description": "Whether this snapshot was manually created" + }, + "created_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot was created" + }, + "expires_at": { + "type": "string", + "format": "dateTime", + "description": "When the snapshot expires" + }, + "timestamp": { + "type": "string", + "format": "dateTime", + "description": "The point-in-time timestamp of the snapshot" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with a snapshot", + "properties": { + "deploy": { + "type": "object", + "description": "Deploy information associated with the snapshot", + "additionalProperties": true + }, + "source": { + "type": "string", + "description": "The source that created the snapshot" + } + } + } + } + }, + "description": "List of database snapshots" + } + } + }, + "restoreDatabaseSnapshotRequest": { + "type": "object", + "description": "Request body for restoring a database snapshot", + "properties": { + "branch_id": { + "type": "string", + "description": "The ID of the branch to restore the snapshot to. Defaults to \"production\" if not specified." + } + } + }, + "databaseComputeSettingsRequest": { + "type": "object", + "description": "Request body for setting compute settings. All fields are optional; only provided fields are updated.", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "minimum": 0.25, + "maximum": 16, + "x-nullable": true, + "description": "Minimum compute units (0.25 to 16.0). Must be less than or equal to max_cu." + }, + "max_cu": { + "type": "number", + "format": "double", + "minimum": 0.25, + "maximum": 16, + "x-nullable": true, + "description": "Maximum compute units (0.25 to 16.0). Must be greater than or equal to min_cu. max_cu - min_cu must not exceed 8.0." + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "minimum": -1, + "x-nullable": true, + "description": "Seconds of inactivity before the compute endpoint is suspended. Use -1 for always on, or a non-negative value." + } + } + }, + "databaseComputeSettings": { + "type": "object", + "description": "Compute settings for a database or branch", + "properties": { + "min_cu": { + "type": "number", + "format": "double", + "description": "Minimum compute units" + }, + "max_cu": { + "type": "number", + "format": "double", + "description": "Maximum compute units" + }, + "sleep_timeout_seconds": { + "type": "integer", + "format": "int64", + "description": "Seconds of inactivity before suspension" + } + } + }, + "runDatabaseMigrationsRequest": { + "type": "object", + "description": "Request body for running database migrations", + "properties": { + "dry_run": { + "type": "boolean", + "description": "If true, validates migrations without applying them." + } + } + }, + "resetDatabaseBranchRequest": { + "type": "object", + "description": "Request body for resetting a database branch", + "properties": { + "source_branch_id": { + "type": "string", + "description": "The ID of the branch to re-fork the target branch from. Defaults to \"production\" if not specified." + } + } + }, + "resetDatabaseBranchResponse": { + "type": "object", + "description": "Response for a database branch reset", + "properties": { + "reset": { + "type": "boolean", + "description": "Whether the branch was actually re-forked. False when the target was already in sync with the source and `force=true` was not set." + }, + "connection_string": { + "type": "string", + "description": "The connection string for the reset (or unchanged) branch" + }, + "metadata": { + "type": "object", + "description": "Metadata associated with the branch", + "additionalProperties": true + } + } + }, + "listDatabaseMigrationsResponse": { + "type": "object", + "description": "Response containing the list of migrations for a branch", + "properties": { + "migrations": { + "type": "array", + "items": { + "type": "object", + "description": "A migration available to a database branch", + "properties": { + "version": { + "type": "integer", + "format": "int64", + "description": "The migration version number" + }, + "name": { + "type": "string", + "description": "The migration name" + }, + "path": { + "type": "string", + "description": "The path to the migration file in the deploy bundle" + }, + "applied": { + "type": "boolean", + "description": "Whether this migration has been applied to the branch" + } + } + }, + "description": "List of migrations" + } + } + }, + "databaseMigration": { + "type": "object", + "description": "A migration available to a database branch", + "properties": { + "version": { + "type": "integer", + "format": "int64", + "description": "The migration version number" + }, + "name": { + "type": "string", + "description": "The migration name" + }, + "path": { + "type": "string", + "description": "The path to the migration file in the deploy bundle" + }, + "applied": { + "type": "boolean", + "description": "Whether this migration has been applied to the branch" + } + } + }, + "databaseMigrationDetail": { + "type": "object", + "description": "A migration with its file contents", + "properties": { + "version": { + "type": "integer", + "format": "int64", + "description": "The migration version number" + }, + "name": { + "type": "string", + "description": "The migration name" + }, + "path": { + "type": "string", + "description": "The path to the migration file in the deploy bundle" + }, + "content": { + "type": "string", + "description": "The raw contents of the migration file" + } + } + }, + "DeployValidationsReport": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The id of the deploy validations report" + }, + "deploy_id": { + "type": "string", + "description": "The id of the deploy" + }, + "secret_scan_result": { + "type": "object", + "properties": { + "scannedFilesCount": { + "type": "integer", + "description": "The number of files scanned" + }, + "secretsScanMatches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of secrets scan matches" + } + } + } + } + }, + "DeployValidationsReport_SecretScanResult": { + "type": "object", + "properties": { + "scannedFilesCount": { + "type": "integer", + "description": "The number of files scanned" + }, + "secretsScanMatches": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of secrets scan matches" + } + } + }, + "splitTestSetup": { + "type": "object", + "properties": { + "branch_tests": { + "type": "object" + } + } + }, + "splitTests": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + } + }, + "splitTest": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object" + } + }, + "active": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "unpublished_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "serviceInstance": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "config": { + "type": "object" + }, + "external_attributes": { + "type": "object" + }, + "service_slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "service_name": { + "type": "string" + }, + "env": { + "type": "object" + }, + "snippets": { + "type": "array", + "items": { + "type": "object" + } + }, + "auth_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "service": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "service_path": { + "type": "string" + }, + "long_description": { + "type": "string" + }, + "description": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "object" + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "icon": { + "type": "string" + }, + "manifest_url": { + "type": "string" + }, + "environments": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "site": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + }, + "siteSetup": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom_domain": { + "type": "string" + }, + "domain_aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "branch_deploy_custom_domain": { + "type": "string" + }, + "deploy_preview_custom_domain": { + "type": "string" + }, + "password": { + "type": "string" + }, + "notification_email": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "user_id": { + "type": "string" + }, + "session_id": { + "type": "string" + }, + "ssl": { + "type": "boolean" + }, + "force_ssl": { + "type": "boolean" + }, + "managed_dns": { + "type": "boolean" + }, + "deploy_url": { + "type": "string" + }, + "published_deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "account_id": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "git_provider": { + "type": "string" + }, + "deploy_hook": { + "type": "string" + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "processing_settings": { + "type": "object", + "properties": { + "html": { + "type": "object", + "properties": { + "pretty_urls": { + "type": "boolean" + } + } + } + } + }, + "build_settings": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "id_domain": { + "type": "string" + }, + "default_hooks_data": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + } + } + }, + "build_image": { + "type": "string" + }, + "prerender": { + "type": "string" + }, + "functions_region": { + "type": "string" + }, + "prevent_non_git_prod_deploys": { + "type": "boolean", + "default": false + } + } + }, + { + "properties": { + "repo": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + } + } + } + ] + }, + "repoInfo": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "provider": { + "type": "string" + }, + "deploy_key_id": { + "type": "string" + }, + "repo_path": { + "type": "string" + }, + "repo_branch": { + "type": "string" + }, + "dir": { + "type": "string" + }, + "functions_dir": { + "type": "string", + "description": "The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file." + }, + "cmd": { + "type": "string", + "description": "The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value." + }, + "allowed_branches": { + "type": "array", + "items": { + "type": "string" + } + }, + "public_repo": { + "type": "boolean" + }, + "private_logs": { + "type": "boolean" + }, + "repo_url": { + "type": "string" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "installation_id": { + "type": "integer" + }, + "stop_builds": { + "type": "boolean", + "description": "When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API." + } + } + }, + "submission": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "number": { + "type": "integer", + "format": "int32" + }, + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + }, + "company": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "body": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "site_url": { + "type": "string" + } + } + }, + "envVar": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The environment variable key, like ALGOLIA_ID (case-sensitive)", + "x-faker": "commerce.productName" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + }, + "description": "The scopes that this environment variable is set to" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "description": "An array of Value objects containing values and metadata", + "x-faker": "internet.password" + }, + "is_secret": { + "type": "boolean", + "description": "Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret." + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of when the value was last updated", + "x-faker": "date.past" + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + } + }, + "description": "Environment variable model definition" + }, + "envVarValue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The environment variable value's universally unique ID", + "x-faker": "datatype.uuid" + }, + "value": { + "type": "string", + "description": "The environment variable's unencrypted value", + "x-faker": "internet.password" + }, + "context": { + "type": "string", + "enum": [ + "all", + "dev", + "dev-server", + "branch-deploy", + "deploy-preview", + "production", + "branch" + ], + "description": "The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`." + }, + "context_parameter": { + "type": "string", + "description": "An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`." + } + }, + "description": "Environment variable value model definition" + }, + "envVarUser": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The user's unique identifier", + "x-faker": "datatype.number" + }, + "full_name": { + "type": "string", + "description": "The user's full name (first and last)", + "x-faker": "name.findName" + }, + "email": { + "type": "string", + "description": "The user's email address", + "x-faker": "internet.email" + }, + "avatar_url": { + "type": "string", + "description": "A URL pointing to the user's avatar", + "x-faker": "internet.avatar" + } + } + }, + "form": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "paths": { + "type": "array", + "items": { + "type": "string" + } + }, + "submission_count": { + "type": "integer", + "format": "int32" + }, + "fields": { + "type": "array", + "items": { + "type": "object" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "hookType": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "string" + } + }, + "fields": { + "type": "array", + "items": { + "type": "object" + } + } + } + }, + "hook": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "event": { + "type": "string" + }, + "data": { + "type": "object" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "disabled": { + "type": "boolean" + } + } + }, + "file": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "path": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "mime_type": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + } + } + }, + "function": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "snippet": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "general": { + "type": "string" + }, + "general_position": { + "type": "string" + }, + "goal": { + "type": "string" + }, + "goal_position": { + "type": "string" + } + } + }, + "purge": { + "type": "object", + "properties": { + "site_id": { + "type": "string" + }, + "site_slug": { + "type": "string" + }, + "cache_tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "deploy": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "build_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + }, + "admin_url": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "deploy_ssl_url": { + "type": "string" + }, + "screenshot_url": { + "type": "string" + }, + "review_id": { + "type": "number" + }, + "draft": { + "type": "boolean" + }, + "required": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_functions": { + "type": "array", + "items": { + "type": "string" + } + }, + "required_edge_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of code_shas for the edge-function bundles that need to be uploaded to\ncomplete the deploy.\n" + }, + "error_message": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "commit_ref": { + "type": "string" + }, + "commit_url": { + "type": "string" + }, + "skipped": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "published_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "context": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "review_url": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "skew_protection_token": { + "type": "string" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_region": { + "type": "string", + "description": "The functions region for this deploy as an airport code.\n" + }, + "functions_region_overrides": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "region": { + "type": "string" + } + } + }, + "description": "Functions in the deploy that explicitly specify their own region\n(airport code).\n" + } + } + }, + "deployEnvironmentVariable": { + "type": "object", + "required": [ + "key", + "value", + "scopes", + "is_secret" + ], + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "is_secret": { + "type": "boolean" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + } + } + }, + "deployFiles": { + "type": "object", + "description": "Deploy files can be provided in two ways:\n1. As a JSON object using 'files' (a hash mapping file paths to SHA1 digests), OR\n2. As a zip file using one of these methods:\n - Set Content-Type to 'application/zip' and send the zip file as the raw request body\n - Include the zip file content in the 'zip' field of this JSON object with Content-Type 'application/json'\n", + "properties": { + "files": { + "type": "object", + "description": "A hash mapping file paths to SHA1 digests of the file contents." + }, + "zip": { + "type": "string", + "format": "binary", + "description": "A zip file containing the site files to deploy. Alternative to 'files'.\nTo use this field, set Content-Type to 'application/json' and include the zip content here.\nAlternatively, you can set Content-Type to 'application/zip' and send the zip as the raw request body (not as JSON).\n" + }, + "draft": { + "type": "boolean" + }, + "async": { + "type": "boolean" + }, + "functions": { + "type": "object" + }, + "edge_functions": { + "type": "object", + "description": "A hash mapping edge-function bundle formats to the code_sha of each bundle. The\nresponse's required_edge_functions lists which of these still need to be uploaded.\n" + }, + "function_schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + } + }, + "functions_config": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "display_name": { + "type": "string" + }, + "generator": { + "type": "string" + }, + "build_data": { + "type": "object" + }, + "memory": { + "type": "integer", + "description": "The function's memory allocation in MB. Mutually exclusive with `vcpu`.\n" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + }, + "methods": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS" + ] + } + }, + "prefer_static": { + "type": "boolean" + } + } + } + }, + "excluded_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + } + } + } + }, + "priority": { + "type": "integer" + }, + "region": { + "type": "string" + }, + "traffic_rules": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "to": { + "type": "string" + }, + "rate_limit_config": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "aggregate": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + } + } + } + } + } + } + }, + "vcpu": { + "type": "number", + "format": "float", + "description": "Number of vCPUs to provision for the function. Allowed range is\n0.5–2.\n" + }, + "event_subscriptions": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "branch": { + "type": "string" + }, + "framework": { + "type": "string" + }, + "framework_version": { + "type": "string" + }, + "environment": { + "description": "A list of deploy-specific environment variable data. Data specified this way applies only\nto this specific deploy and is merged into any existing environment variables set on the\naccount and site.\n\nDeploy-specific environment variable data takes precedence over account and site\nenvironment variable data: For example, a deploy-specific variable with the key `NODE_ENV`\nwill take priority over any existing site- and account-level environment variable data\nwith the key `NODE_ENV`.\n\nEnvironment variable data may be provided at one of two times:\n\n- When creating a new Deploy with deploy files (most common)\n- When finalizing an existing Deploy with deploy files\n\nOnce set, environment variables for a specific deploy cannot be modified. Subsequent\nattempts to modify environment variable data for a deploy will be ignored.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "value", + "scopes", + "is_secret" + ], + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + }, + "is_secret": { + "type": "boolean" + }, + "scopes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "builds", + "functions", + "runtime", + "post-processing" + ] + } + } + } + } + } + } + }, + "pluginParams": { + "type": "object", + "properties": { + "pinned_version": { + "type": "string" + } + } + }, + "plugin": { + "type": "object", + "properties": { + "package": { + "type": "string" + }, + "pinned_version": { + "type": "string" + } + } + }, + "buildStatus": { + "type": "object", + "properties": { + "active": { + "type": "integer" + }, + "pending_concurrency": { + "type": "integer" + }, + "enqueued": { + "type": "integer" + }, + "build_count": { + "type": "integer" + }, + "minutes": { + "type": "object", + "properties": { + "current": { + "type": "integer" + }, + "current_average_sec": { + "type": "integer" + }, + "previous": { + "type": "integer" + }, + "period_start_date": { + "type": "string", + "format": "dateTime" + }, + "period_end_date": { + "type": "string", + "format": "dateTime" + }, + "last_updated_at": { + "type": "string", + "format": "dateTime" + }, + "included_minutes": { + "type": "string" + }, + "included_minutes_with_packs": { + "type": "string" + } + } + } + } + }, + "build": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "done": { + "type": "boolean" + }, + "error": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "buildLogMsg": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "error": { + "type": "boolean" + }, + "section": { + "type": "string", + "enum": [ + "initializing", + "building", + "deploying", + "cleanup", + "postprocessing" + ] + } + } + }, + "pluginRunData": { + "type": "object", + "properties": { + "package": { + "type": "string" + }, + "version": { + "type": "string" + }, + "state": { + "type": "string" + }, + "reporting_event": { + "type": "string" + }, + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, + "pluginRun": { + "allOf": [ + { + "type": "object", + "properties": { + "package": { + "type": "string" + }, + "version": { + "type": "string" + }, + "state": { + "type": "string" + }, + "reporting_event": { + "type": "string" + }, + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, + { + "type": "object", + "properties": { + "deploy_id": { + "type": "string" + } + } + } + ] + }, + "metadata": { + "type": "object" + }, + "dnsZoneSetup": { + "type": "object", + "properties": { + "account_slug": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "dnsZones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + } + }, + "dnsZone": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + }, + "supported_record_types": { + "type": "array", + "items": { + "type": "string" + } + }, + "user_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + } + }, + "account_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "account_slug": { + "type": "string" + }, + "account_name": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "ipv6_enabled": { + "type": "boolean" + }, + "dedicated": { + "type": "boolean" + } + } + }, + "dnsRecordCreate": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "weight": { + "type": "integer", + "format": "int64" + }, + "port": { + "type": "integer", + "format": "int64" + }, + "flag": { + "type": "integer", + "format": "int64" + }, + "tag": { + "type": "string" + } + } + }, + "dnsRecords": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + } + }, + "dnsRecord": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int64" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "dns_zone_id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "flag": { + "type": "integer" + }, + "tag": { + "type": "string" + }, + "managed": { + "type": "boolean" + } + } + }, + "sniCertificate": { + "type": "object", + "properties": { + "state": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "expires_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "ticket": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "authorized": { + "type": "boolean" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "accessToken": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "access_token": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "user_email": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "asset": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "assetForm": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "fields": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "assetSignature": { + "type": "object", + "properties": { + "form": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "fields": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "asset": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "creator_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "key": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + } + } + }, + "assetPublicSignature": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + } + }, + "deployKey": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "member": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "paymentMethod": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "method_name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "state": { + "type": "string" + }, + "data": { + "type": "object", + "properties": { + "card_type": { + "type": "string" + }, + "last4": { + "type": "string" + }, + "email": { + "type": "string" + } + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "accountType": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "capabilities": { + "type": "object" + }, + "monthly_dollar_price": { + "type": "integer" + }, + "yearly_dollar_price": { + "type": "integer" + }, + "monthly_seats_addon_dollar_price": { + "type": "integer" + }, + "yearly_seats_addon_dollar_price": { + "type": "integer" + } + } + }, + "accountSetup": { + "type": "object", + "required": [ + "name", + "type_id" + ], + "properties": { + "name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "period": { + "type": "string", + "enum": [ + "monthly", + "yearly" + ] + }, + "extra_seats_block": { + "type": "integer" + } + } + }, + "accountUpdateSetup": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "extra_seats_block": { + "type": "integer" + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + } + } + }, + "accountAddMemberSetup": { + "type": "object", + "properties": { + "role": { + "type": "string", + "enum": [ + "Owner", + "Developer", + "Billing Admin", + "Reviewer" + ] + }, + "email": { + "type": "string" + } + } + }, + "accountUpdateMemberSetup": { + "type": "object", + "properties": { + "role": { + "type": "string", + "enum": [ + "Owner", + "Developer", + "Billing Admin", + "Reviewer" + ] + }, + "site_access": { + "type": "string", + "enum": [ + "all", + "none", + "selected" + ] + }, + "site_ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "accountMembership": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "type": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "sites": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "collaborators": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + } + } + }, + "billing_name": { + "type": "string" + }, + "billing_email": { + "type": "string" + }, + "billing_details": { + "type": "string" + }, + "billing_period": { + "type": "string" + }, + "payment_method_id": { + "type": "string" + }, + "type_name": { + "type": "string" + }, + "type_id": { + "type": "string" + }, + "owner_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles_allowed": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "auditLog": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "account_id": { + "type": "string" + }, + "payload": { + "type": "object", + "properties": { + "actor_id": { + "type": "string" + }, + "actor_name": { + "type": "string" + }, + "actor_email": { + "type": "string" + }, + "action": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "dateTime" + }, + "log_type": { + "type": "string" + } + }, + "additionalProperties": { + "type": "object" + } + } + } + }, + "agentRunner": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "parent_agent_runner_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "result_branch": { + "type": "string" + }, + "pr_url": { + "type": "string" + }, + "pr_branch": { + "type": "string" + }, + "pr_state": { + "type": "string" + }, + "pr_number": { + "type": "integer" + }, + "pr_is_being_created": { + "type": "boolean" + }, + "pr_error": { + "type": "string" + }, + "current_task": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "sha": { + "type": "string" + }, + "merge_commit_sha": { + "type": "string" + }, + "merge_commit_error": { + "type": "string" + }, + "merge_commit_is_being_created": { + "type": "boolean" + }, + "base_deploy_id": { + "type": "string" + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "active_session_created_at": { + "type": "string", + "format": "dateTime" + }, + "latest_session_deploy_id": { + "type": "string" + }, + "latest_session_deploy_url": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + } + } + }, + "agentRunnerSession": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "agent_runner_id": { + "type": "string" + }, + "dev_server_id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent_config": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "result": { + "type": "string" + }, + "result_diff": { + "type": "string" + }, + "commit_sha": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "deploy_url": { + "type": "string" + }, + "duration": { + "type": "integer" + }, + "steps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "attached_file_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "result_zip_file_name": { + "type": "string" + }, + "is_published": { + "type": "boolean" + } + } + }, + "agentRunnerSessionStep": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "agentRunnerSessionConfig": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "string" + } + } + }, + "agentRunnerUser": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "avatar_url": { + "type": "string" + } + } + }, + "agentRunnerHook": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "url": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "agentRunnerHookSetup": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + } + } + }, + "agentRunnerHookCreated": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "prompt": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "url": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + { + "properties": { + "secret": { + "type": "string" + } + } + } + ] + }, + "accountUsageCapability": { + "type": "object", + "properties": { + "included": { + "type": "integer" + }, + "used": { + "type": "integer" + } + } + }, + "buildSetup": { + "type": "object", + "properties": { + "image": { + "type": "string" + }, + "clear_cache": { + "type": "boolean" + } + } + }, + "buildHookSetup": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + } + } + }, + "buildHook": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + } + } + }, + "deployedBranch": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "deploy_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + }, + "ssl_url": { + "type": "string" + } + } + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "avatar_url": { + "type": "string" + }, + "email": { + "type": "string" + }, + "affiliate_id": { + "type": "string" + }, + "site_count": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "last_login": { + "type": "string", + "format": "dateTime" + }, + "login_providers": { + "type": "array", + "items": { + "type": "string" + } + }, + "onboarding_progress": { + "type": "object", + "properties": { + "slides": { + "type": "string" + } + } + } + } + }, + "error": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int64" + }, + "message": { + "type": "string", + "x-nullable": false + } + } + }, + "functionSchedule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "cron": { + "type": "string" + } + } + }, + "functionConfig": { + "type": "object", + "properties": { + "display_name": { + "type": "string" + }, + "generator": { + "type": "string" + }, + "build_data": { + "type": "object" + }, + "memory": { + "type": "integer", + "description": "The function's memory allocation in MB. Mutually exclusive with `vcpu`.\n" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + }, + "methods": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS" + ] + } + }, + "prefer_static": { + "type": "boolean" + } + } + } + }, + "excluded_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + } + } + } + }, + "priority": { + "type": "integer" + }, + "region": { + "type": "string" + }, + "traffic_rules": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "to": { + "type": "string" + }, + "rate_limit_config": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "aggregate": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + } + } + } + } + } + } + }, + "vcpu": { + "type": "number", + "format": "float", + "description": "Number of vCPUs to provision for the function. Allowed range is\n0.5–2.\n" + }, + "event_subscriptions": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "functionRoute": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + }, + "methods": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS" + ] + } + }, + "prefer_static": { + "type": "boolean" + } + } + }, + "excludedFunctionRoute": { + "type": "object", + "properties": { + "pattern": { + "type": "string" + }, + "literal": { + "type": "string" + }, + "expression": { + "type": "string" + } + } + }, + "trafficRulesConfig": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "to": { + "type": "string" + }, + "rate_limit_config": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "aggregate": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + } + } + } + } + } + } + }, + "trafficRulesRateLimitConfig": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sliding_window" + ] + }, + "window_size": { + "type": "integer" + }, + "window_limit": { + "type": "integer" + } + } + }, + "trafficRulesAggregateConfig": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "domain" + ] + } + } + } + } + } + }, + "siteFunction": { + "type": "object", + "properties": { + "branch": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "functions": { + "type": "array", + "items": { + "type": "object" + } + }, + "id": { + "type": "string" + }, + "log_type": { + "type": "string" + }, + "provider": { + "type": "string" + } + } + }, + "devServer": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "state": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "updated_at": { + "type": "string", + "format": "dateTime" + }, + "starting_at": { + "type": "string", + "format": "dateTime" + }, + "error_at": { + "type": "string", + "format": "dateTime" + }, + "live_at": { + "type": "string", + "format": "dateTime" + }, + "done_at": { + "type": "string", + "format": "dateTime" + }, + "title": { + "type": "string" + } + } + }, + "devServerHook": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "url": { + "type": "string" + }, + "site_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "format": "dateTime" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + }, + "devServerHookSetup": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "new_dev_server", + "content_refresh" + ] + } + } + }, + "providerDefinition": { + "type": "object", + "properties": { + "token_env_var": { + "type": "string" + }, + "url_env_var": { + "type": "string" + }, + "models": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "aiGatewayToken": { + "type": "object", + "properties": { + "token": { + "type": "string", + "description": "The AI Gateway authentication token" + }, + "url": { + "type": "string", + "description": "AI gateway base url" + }, + "expires_at": { + "type": "integer", + "format": "int64", + "description": "Unix timestamp when the token expires" + } + } + } + }, + "parameters": { + "page": { + "type": "integer", + "format": "int32", + "name": "page", + "required": false, + "in": "query" + }, + "perPage": { + "type": "integer", + "format": "int32", + "name": "per_page", + "required": false, + "in": "query" + }, + "retryCount": { + "name": "X-Nf-Retry-Count", + "type": "integer", + "in": "header" + } + }, + "x-tagGroups": [ + { + "name": "OAuth", + "tags": [ + "ticket", + "accessToken" + ] + }, + { + "name": "User accounts", + "tags": [ + "user", + "accountMembership", + "member", + "accountType", + "paymentMethod", + "auditLog" + ] + }, + { + "name": "Site", + "tags": [ + "site", + "environmentVariables", + "file", + "metadata", + "purge", + "snippet" + ] + }, + { + "name": "Domain names", + "tags": [ + "dnsZone", + "sniCertificate" + ] + }, + { + "name": "Deploys", + "tags": [ + "deploy", + "deployedBranch", + "deployKey" + ] + }, + { + "name": "Builds", + "tags": [ + "build", + "buildLogMsg" + ] + }, + { + "name": "Dev servers", + "tags": [ + "devServer" + ] + }, + { + "name": "Webhooks and notifications", + "tags": [ + "hook", + "hookType", + "buildHook", + "devServerHook" + ] + }, + { + "name": "Services", + "tags": [ + "service", + "serviceInstance" + ] + }, + { + "name": "Functions", + "tags": [ + "function" + ] + }, + { + "name": "Database", + "tags": [ + "database" + ] + }, + { + "name": "Forms", + "tags": [ + "form", + "submission" + ] + }, + { + "name": "Split tests", + "tags": [ + "splitTest" + ] + }, + { + "name": "Large media", + "tags": [ + "asset", + "assetPublicSignature" + ] + } + ], + "tags": [ + { + "name": "ticket", + "x-displayName": "Ticket" + }, + { + "name": "accessToken", + "x-displayName": "Access token" + }, + { + "name": "user", + "x-displayName": "User" + }, + { + "name": "accountMembership", + "x-displayName": "Accounts" + }, + { + "name": "member", + "x-displayName": "Member" + }, + { + "name": "accountType", + "x-displayName": "Access type" + }, + { + "name": "paymentMethod", + "x-displayName": "Payment method" + }, + { + "name": "auditLog", + "x-displayName": "Audit log" + }, + { + "name": "site", + "x-displayName": "Site" + }, + { + "name": "environmentVariables", + "x-displayName": "Environment variables" + }, + { + "name": "file", + "x-displayName": "File" + }, + { + "name": "metadata", + "x-displayName": "Metadata" + }, + { + "name": "snippet", + "x-displayName": "Snippet" + }, + { + "name": "purge", + "x-displayName": "Cache purge" + }, + { + "name": "dnsZone", + "x-displayName": "DNS zone" + }, + { + "name": "sniCertificate", + "x-displayName": "SNI certificate" + }, + { + "name": "deploy", + "x-displayName": "Deploy" + }, + { + "name": "deployedBranch", + "x-displayName": "Deployed branch" + }, + { + "name": "deployKey", + "x-displayName": "Deploy key" + }, + { + "name": "build", + "x-displayName": "Build" + }, + { + "name": "buildLogMsg", + "x-displayName": "Build log message" + }, + { + "name": "hook", + "x-displayName": "Hook" + }, + { + "name": "hookType", + "x-displayName": "Hook type" + }, + { + "name": "buildHook", + "x-displayName": "Build hook" + }, + { + "name": "service", + "x-displayName": "Service" + }, + { + "name": "serviceInstance", + "x-displayName": "Service instance" + }, + { + "name": "function", + "x-displayName": "Function" + }, + { + "name": "form", + "x-displayName": "Form" + }, + { + "name": "submission", + "x-displayName": "Form submission" + }, + { + "name": "splitTest", + "x-displayName": "Split test" + }, + { + "name": "asset", + "x-displayName": "Asset" + }, + { + "name": "assetPublicSignature", + "x-displayName": "Asset public signature" + }, + { + "name": "devServer", + "x-displayName": "Dev server" + }, + { + "name": "devServerHook", + "x-displayName": "Dev server hook" + }, + { + "name": "database", + "x-displayName": "Database" + } + ] +} \ No newline at end of file diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/provider.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/provider.yaml index 5de26fd..8e4f8a1 100644 --- a/provider-dev/openapi/src/netlify/v00.00.00000/provider.yaml +++ b/provider-dev/openapi/src/netlify/v00.00.00000/provider.yaml @@ -2,277 +2,160 @@ id: netlify name: netlify version: v00.00.00000 providerServices: - access_token: - description: Access Token api - id: access_token:v00.00.00000 - name: access_token + accounts: + id: accounts:v00.00.00000 + name: accounts preferred: true service: - $ref: netlify/v00.00.00000/services/access_token.yaml - title: Netlify's API documentation - access_token + $ref: netlify/v00.00.00000/services/accounts.yaml + title: accounts API version: v00.00.00000 - account_membership: - description: accountMembership - id: account_membership:v00.00.00000 - name: account_membership + description: netlify accounts API + agent_runners: + id: agent_runners:v00.00.00000 + name: agent_runners preferred: true service: - $ref: netlify/v00.00.00000/services/account_membership.yaml - title: Netlify's API documentation - account_membership + $ref: netlify/v00.00.00000/services/agent_runners.yaml + title: agent_runners API version: v00.00.00000 - account_type: - description: accountType - id: account_type:v00.00.00000 - name: account_type + description: netlify agent_runners API + ai_gateway: + id: ai_gateway:v00.00.00000 + name: ai_gateway preferred: true service: - $ref: netlify/v00.00.00000/services/account_type.yaml - title: Netlify's API documentation - account_type + $ref: netlify/v00.00.00000/services/ai_gateway.yaml + title: ai_gateway API version: v00.00.00000 - asset: - description: asset - id: asset:v00.00.00000 - name: asset + description: netlify ai_gateway API + builds: + id: builds:v00.00.00000 + name: builds preferred: true service: - $ref: netlify/v00.00.00000/services/asset.yaml - title: Netlify's API documentation - asset + $ref: netlify/v00.00.00000/services/builds.yaml + title: builds API version: v00.00.00000 - asset_public_signature: - description: assetPublicSignature - id: asset_public_signature:v00.00.00000 - name: asset_public_signature + description: netlify builds API + database: + id: database:v00.00.00000 + name: database preferred: true service: - $ref: netlify/v00.00.00000/services/asset_public_signature.yaml - title: Netlify's API documentation - asset_public_signature + $ref: netlify/v00.00.00000/services/database.yaml + title: database API version: v00.00.00000 - audit_log: - description: auditLog - id: audit_log:v00.00.00000 - name: audit_log + description: netlify database API + deploys: + id: deploys:v00.00.00000 + name: deploys preferred: true service: - $ref: netlify/v00.00.00000/services/audit_log.yaml - title: Netlify's API documentation - audit_log + $ref: netlify/v00.00.00000/services/deploys.yaml + title: deploys API version: v00.00.00000 - build: - description: build - id: build:v00.00.00000 - name: build + description: netlify deploys API + dev_servers: + id: dev_servers:v00.00.00000 + name: dev_servers preferred: true service: - $ref: netlify/v00.00.00000/services/build.yaml - title: Netlify's API documentation - build + $ref: netlify/v00.00.00000/services/dev_servers.yaml + title: dev_servers API version: v00.00.00000 - build_hook: - description: buildHook - id: build_hook:v00.00.00000 - name: build_hook + description: netlify dev_servers API + dns: + id: dns:v00.00.00000 + name: dns preferred: true service: - $ref: netlify/v00.00.00000/services/build_hook.yaml - title: Netlify's API documentation - build_hook + $ref: netlify/v00.00.00000/services/dns.yaml + title: dns API version: v00.00.00000 - build_log_msg: - description: buildLogMsg - id: build_log_msg:v00.00.00000 - name: build_log_msg + description: netlify dns API + env: + id: env:v00.00.00000 + name: env preferred: true service: - $ref: netlify/v00.00.00000/services/build_log_msg.yaml - title: Netlify's API documentation - build_log_msg + $ref: netlify/v00.00.00000/services/env.yaml + title: env API version: v00.00.00000 - deploy: - description: deploy - id: deploy:v00.00.00000 - name: deploy + description: netlify env API + forms: + id: forms:v00.00.00000 + name: forms preferred: true service: - $ref: netlify/v00.00.00000/services/deploy.yaml - title: Netlify's API documentation - deploy + $ref: netlify/v00.00.00000/services/forms.yaml + title: forms API version: v00.00.00000 - deploy_key: - description: deployKey - id: deploy_key:v00.00.00000 - name: deploy_key + description: netlify forms API + functions: + id: functions:v00.00.00000 + name: functions preferred: true service: - $ref: netlify/v00.00.00000/services/deploy_key.yaml - title: Netlify's API documentation - deploy_key + $ref: netlify/v00.00.00000/services/functions.yaml + title: functions API version: v00.00.00000 - deployed_branch: - description: deployedBranch - id: deployed_branch:v00.00.00000 - name: deployed_branch + description: netlify functions API + hooks: + id: hooks:v00.00.00000 + name: hooks preferred: true service: - $ref: netlify/v00.00.00000/services/deployed_branch.yaml - title: Netlify's API documentation - deployed_branch + $ref: netlify/v00.00.00000/services/hooks.yaml + title: hooks API version: v00.00.00000 - dns_zone: - description: dnsZone - id: dns_zone:v00.00.00000 - name: dns_zone + description: netlify hooks API + oauth: + id: oauth:v00.00.00000 + name: oauth preferred: true service: - $ref: netlify/v00.00.00000/services/dns_zone.yaml - title: Netlify's API documentation - dns_zone + $ref: netlify/v00.00.00000/services/oauth.yaml + title: oauth API version: v00.00.00000 - file: - description: file - id: file:v00.00.00000 - name: file + description: netlify oauth API + services: + id: services:v00.00.00000 + name: services preferred: true service: - $ref: netlify/v00.00.00000/services/file.yaml - title: Netlify's API documentation - file + $ref: netlify/v00.00.00000/services/services.yaml + title: services API version: v00.00.00000 - form: - description: form - id: form:v00.00.00000 - name: form + description: netlify services API + sites: + id: sites:v00.00.00000 + name: sites preferred: true service: - $ref: netlify/v00.00.00000/services/form.yaml - title: Netlify's API documentation - form + $ref: netlify/v00.00.00000/services/sites.yaml + title: sites API version: v00.00.00000 - function: - description: function - id: function:v00.00.00000 - name: function + description: netlify sites API + split_tests: + id: split_tests:v00.00.00000 + name: split_tests preferred: true service: - $ref: netlify/v00.00.00000/services/function.yaml - title: Netlify's API documentation - function + $ref: netlify/v00.00.00000/services/split_tests.yaml + title: split_tests API version: v00.00.00000 - hook: - description: hook - id: hook:v00.00.00000 - name: hook + description: netlify split_tests API + users: + id: users:v00.00.00000 + name: users preferred: true service: - $ref: netlify/v00.00.00000/services/hook.yaml - title: Netlify's API documentation - hook - version: v00.00.00000 - hook_type: - description: hookType - id: hook_type:v00.00.00000 - name: hook_type - preferred: true - service: - $ref: netlify/v00.00.00000/services/hook_type.yaml - title: Netlify's API documentation - hook_type - version: v00.00.00000 - member: - description: member - id: member:v00.00.00000 - name: member - preferred: true - service: - $ref: netlify/v00.00.00000/services/member.yaml - title: Netlify's API documentation - member - version: v00.00.00000 - metadata: - description: metadata - id: metadata:v00.00.00000 - name: metadata - preferred: true - service: - $ref: netlify/v00.00.00000/services/metadata.yaml - title: Netlify's API documentation - metadata - version: v00.00.00000 - payment_method: - description: paymentMethod - id: payment_method:v00.00.00000 - name: payment_method - preferred: true - service: - $ref: netlify/v00.00.00000/services/payment_method.yaml - title: Netlify's API documentation - payment_method - version: v00.00.00000 - service: - description: service - id: service:v00.00.00000 - name: service - preferred: true - service: - $ref: netlify/v00.00.00000/services/service.yaml - title: Netlify's API documentation - service - version: v00.00.00000 - service_instance: - description: serviceInstance - id: service_instance:v00.00.00000 - name: service_instance - preferred: true - service: - $ref: netlify/v00.00.00000/services/service_instance.yaml - title: Netlify's API documentation - service_instance - version: v00.00.00000 - site: - description: site - id: site:v00.00.00000 - name: site - preferred: true - service: - $ref: netlify/v00.00.00000/services/site.yaml - title: Netlify's API documentation - site - version: v00.00.00000 - sni_certificate: - description: sniCertificate - id: sni_certificate:v00.00.00000 - name: sni_certificate - preferred: true - service: - $ref: netlify/v00.00.00000/services/sni_certificate.yaml - title: Netlify's API documentation - sni_certificate - version: v00.00.00000 - snippet: - description: snippet - id: snippet:v00.00.00000 - name: snippet - preferred: true - service: - $ref: netlify/v00.00.00000/services/snippet.yaml - title: Netlify's API documentation - snippet - version: v00.00.00000 - split_test: - description: splitTest - id: split_test:v00.00.00000 - name: split_test - preferred: true - service: - $ref: netlify/v00.00.00000/services/split_test.yaml - title: Netlify's API documentation - split_test - version: v00.00.00000 - submission: - description: submission - id: submission:v00.00.00000 - name: submission - preferred: true - service: - $ref: netlify/v00.00.00000/services/submission.yaml - title: Netlify's API documentation - submission - version: v00.00.00000 - ticket: - description: ticket - id: ticket:v00.00.00000 - name: ticket - preferred: true - service: - $ref: netlify/v00.00.00000/services/ticket.yaml - title: Netlify's API documentation - ticket - version: v00.00.00000 - user: - description: user - id: user:v00.00.00000 - name: user - preferred: true - service: - $ref: netlify/v00.00.00000/services/user.yaml - title: Netlify's API documentation - user + $ref: netlify/v00.00.00000/services/users.yaml + title: users API version: v00.00.00000 + description: netlify users API config: auth: - type: "bearer" - credentialsenvvar: "NETLIFY_AUTH_TOKEN" + type: bearer + credentialsenvvar: NETLIFY_API_TOKEN diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/access_token.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/access_token.yaml deleted file mode 100644 index 0b9186e..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/access_token.yaml +++ /dev/null @@ -1,157 +0,0 @@ -paths: - /oauth/tickets/{ticket_id}/exchange: - post: - parameters: - - in: path - name: ticket_id - required: true - schema: - type: string - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/accessToken' - description: ok - default: - $ref: '#/components/responses/error' - tags: - - accessToken - operationId: exchangeTicket -components: - schemas: - accessToken: - properties: - access_token: - type: string - created_at: - format: dateTime - type: string - id: - type: string - user_email: - type: string - user_id: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - oauth_tickets_exchange: - id: netlify.access_token.oauth_tickets_exchange - name: oauth_tickets_exchange - title: Oauth_tickets_exchange - methods: - exchangeTicket: - operation: - $ref: '#/paths/~1oauth~1tickets~1{ticket_id}~1exchange/post' - response: - mediaType: application/json - openAPIDocKey: '201' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: accessToken - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - access_token - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/account_membership.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/account_membership.yaml deleted file mode 100644 index 25f1e29..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/account_membership.yaml +++ /dev/null @@ -1,325 +0,0 @@ -paths: - /accounts: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/accountMembership' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - accountMembership - operationId: listAccountsForUser - post: - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/accountMembership' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - accountMembership - operationId: createAccount - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/accountSetup' - required: true - /accounts/{account_id}: - delete: - responses: - '204': - description: Not Content - default: - $ref: '#/components/responses/error' - tags: - - accountMembership - operationId: cancelAccount - parameters: &ref_0 - - in: path - name: account_id - required: true - schema: - type: string - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/accountMembership' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - accountMembership - operationId: getAccount - parameters: *ref_0 - put: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/accountMembership' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - accountMembership - operationId: updateAccount - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/accountUpdateSetup' - parameters: *ref_0 -components: - schemas: - accountMembership: - properties: - billing_details: - type: string - billing_email: - type: string - billing_name: - type: string - billing_period: - type: string - capabilities: - properties: - collaborators: - $ref: '#/components/schemas/accountUsageCapability' - sites: - $ref: '#/components/schemas/accountUsageCapability' - type: object - created_at: - format: dateTime - type: string - id: - type: string - name: - type: string - owner_ids: - items: - type: string - type: array - payment_method_id: - type: string - roles_allowed: - items: - type: string - type: array - slug: - type: string - type: - type: string - type_id: - type: string - type_name: - type: string - updated_at: - format: dateTime - type: string - type: object - accountUsageCapability: - properties: - included: - type: integer - used: - type: integer - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - accountSetup: - properties: - extra_seats_block: - type: integer - name: - type: string - payment_method_id: - type: string - period: - enum: - - monthly - - yearly - type: string - type_id: - type: string - required: - - name - - type_id - type: object - accountUpdateSetup: - properties: - billing_details: - type: string - billing_email: - type: string - billing_name: - type: string - extra_seats_block: - type: integer - name: - type: string - slug: - type: string - type_id: - type: string - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - accounts: - id: netlify.account_membership.accounts - name: accounts - title: Accounts - methods: - listAccountsForUser: - operation: - $ref: '#/paths/~1accounts/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createAccount: - operation: - $ref: '#/paths/~1accounts/post' - response: - mediaType: application/json - openAPIDocKey: '201' - cancelAccount: - operation: - $ref: '#/paths/~1accounts~1{account_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - getAccount: - operation: - $ref: '#/paths/~1accounts~1{account_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - updateAccount: - operation: - $ref: '#/paths/~1accounts~1{account_id}/put' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/accounts/methods/getAccount' - - $ref: '#/components/x-stackQL-resources/accounts/methods/listAccountsForUser' - insert: - - $ref: '#/components/x-stackQL-resources/accounts/methods/createAccount' - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: accountMembership - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - account_membership - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/account_type.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/account_type.yaml deleted file mode 100644 index 78ec98a..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/account_type.yaml +++ /dev/null @@ -1,159 +0,0 @@ -paths: - /accounts/types: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/accountType' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - accountType - operationId: listAccountTypesForUser -components: - schemas: - accountType: - properties: - capabilities: - type: object - description: - type: string - id: - type: string - monthly_dollar_price: - type: integer - monthly_seats_addon_dollar_price: - type: integer - name: - type: string - yearly_dollar_price: - type: integer - yearly_seats_addon_dollar_price: - type: integer - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - accounts_types: - id: netlify.account_type.accounts_types - name: accounts_types - title: Accounts_types - methods: - listAccountTypesForUser: - operation: - $ref: '#/paths/~1accounts~1types/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/accounts_types/methods/listAccountTypesForUser' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: accountType - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - account_type - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/accounts.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/accounts.yaml new file mode 100644 index 0000000..626cce1 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/accounts.yaml @@ -0,0 +1,1030 @@ +openapi: 3.0.0 +info: + title: accounts API + description: netlify accounts API + version: 2.57.0 +paths: + /{account_slug}/members: + get: + operationId: listMembersForAccount + tags: + - member + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar: + type: string + role: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_slug + in: path + required: true + schema: + type: string + post: + operationId: addMemberToAccount + tags: + - member + requestBody: + content: + application/json: + schema: + type: object + properties: + role: + type: string + enum: + - Owner + - Developer + - Billing Admin + - Reviewer + email: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar: + type: string + role: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_slug + in: path + required: true + schema: + type: string + /{account_slug}/members/{member_id}: + get: + operationId: getAccountMember + tags: + - member + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar: + type: string + role: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_slug + in: path + required: true + schema: + type: string + - name: member_id + in: path + required: true + schema: + type: string + put: + operationId: updateAccountMember + tags: + - member + requestBody: + content: + application/json: + schema: + type: object + properties: + role: + type: string + enum: + - Owner + - Developer + - Billing Admin + - Reviewer + site_access: + type: string + enum: + - all + - none + - selected + site_ids: + type: array + items: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar: + type: string + role: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_slug + in: path + required: true + schema: + type: string + - name: member_id + in: path + required: true + schema: + type: string + delete: + operationId: removeAccountMember + tags: + - member + responses: + '204': + description: Not Content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_slug + in: path + required: true + schema: + type: string + - name: member_id + in: path + required: true + schema: + type: string + /billing/payment_methods: + get: + operationId: listPaymentMethodsForUser + tags: + - paymentMethod + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + method_name: + type: string + type: + type: string + state: + type: string + data: + type: object + properties: + card_type: + type: string + last4: + type: string + email: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /accounts/types: + get: + operationId: listAccountTypesForUser + tags: + - accountType + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + capabilities: + type: string + description: (opaque JSON object) + monthly_dollar_price: + type: integer + yearly_dollar_price: + type: integer + monthly_seats_addon_dollar_price: + type: integer + yearly_seats_addon_dollar_price: + type: integer + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /accounts: + get: + operationId: listAccountsForUser + tags: + - accountMembership + parameters: + - name: minimal + x-internal: true + in: query + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + type: + type: string + capabilities: + type: object + properties: + sites: + type: object + properties: + included: + type: integer + used: + type: integer + collaborators: + type: object + properties: + included: + type: integer + used: + type: integer + billing_name: + type: string + billing_email: + type: string + billing_details: + type: string + billing_period: + type: string + payment_method_id: + type: string + type_name: + type: string + type_id: + type: string + owner_ids: + type: array + items: + type: string + roles_allowed: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createAccount + tags: + - accountMembership + requestBody: + content: + application/json: + schema: + type: object + required: + - name + - type_id + properties: + name: + type: string + type_id: + type: string + payment_method_id: + type: string + period: + type: string + enum: + - monthly + - yearly + extra_seats_block: + type: integer + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + type: + type: string + capabilities: + type: object + properties: + sites: + type: object + properties: + included: + type: integer + used: + type: integer + collaborators: + type: object + properties: + included: + type: integer + used: + type: integer + billing_name: + type: string + billing_email: + type: string + billing_details: + type: string + billing_period: + type: string + payment_method_id: + type: string + type_name: + type: string + type_id: + type: string + owner_ids: + type: array + items: + type: string + roles_allowed: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /accounts/{account_id}: + get: + operationId: getAccount + tags: + - accountMembership + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + type: + type: string + capabilities: + type: object + properties: + sites: + type: object + properties: + included: + type: integer + used: + type: integer + collaborators: + type: object + properties: + included: + type: integer + used: + type: integer + billing_name: + type: string + billing_email: + type: string + billing_details: + type: string + billing_period: + type: string + payment_method_id: + type: string + type_name: + type: string + type_id: + type: string + owner_ids: + type: array + items: + type: string + roles_allowed: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_id + in: path + required: true + schema: + type: string + put: + operationId: updateAccount + tags: + - accountMembership + requestBody: + content: + application/json: + schema: + type: object + properties: + name: + type: string + slug: + type: string + type_id: + type: string + extra_seats_block: + type: integer + billing_name: + type: string + billing_email: + type: string + billing_details: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + type: + type: string + capabilities: + type: object + properties: + sites: + type: object + properties: + included: + type: integer + used: + type: integer + collaborators: + type: object + properties: + included: + type: integer + used: + type: integer + billing_name: + type: string + billing_email: + type: string + billing_details: + type: string + billing_period: + type: string + payment_method_id: + type: string + type_name: + type: string + type_id: + type: string + owner_ids: + type: array + items: + type: string + roles_allowed: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_id + in: path + required: true + schema: + type: string + delete: + operationId: cancelAccount + tags: + - accountMembership + responses: + '204': + description: Not Content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_id + in: path + required: true + schema: + type: string + /accounts/{account_id}/audit: + get: + operationId: listAccountAuditEvents + tags: + - auditLog + parameters: + - name: query + in: query + schema: + type: string + - name: log_type + in: query + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: account_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + account_id: + type: string + payload: + type: object + properties: + actor_id: + type: string + actor_name: + type: string + actor_email: + type: string + action: + type: string + timestamp: + type: string + format: dateTime + log_type: + type: string + additionalProperties: + type: string + description: (opaque JSON object) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false +components: + schemas: {} + x-stackQL-resources: + members: + id: netlify.accounts.members + name: members + title: Members + methods: + list: + operation: + $ref: '#/paths/~1{account_slug}~1members/get' + response: + mediaType: application/json + openAPIDocKey: '200' + add: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{account_slug}~1members/post' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1{account_slug}~1members~1{member_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{account_slug}~1members~1{member_id}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + remove: + operation: + $ref: '#/paths/~1{account_slug}~1members~1{member_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/members/methods/get' + - $ref: '#/components/x-stackQL-resources/members/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/members/methods/add' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/members/methods/remove' + replace: + - $ref: '#/components/x-stackQL-resources/members/methods/update' + payment_methods: + id: netlify.accounts.payment_methods + name: payment_methods + title: Payment Methods + methods: + list: + operation: + $ref: '#/paths/~1billing~1payment_methods/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/payment_methods/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + account_types: + id: netlify.accounts.account_types + name: account_types + title: Account Types + methods: + list: + operation: + $ref: '#/paths/~1accounts~1types/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/account_types/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + accounts: + id: netlify.accounts.accounts + name: accounts + title: Accounts + methods: + list: + operation: + $ref: '#/paths/~1accounts/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1accounts/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1accounts~1{account_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1accounts~1{account_id}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + cancel: + operation: + $ref: '#/paths/~1accounts~1{account_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/accounts/methods/get' + - $ref: '#/components/x-stackQL-resources/accounts/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/accounts/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/accounts/methods/cancel' + replace: + - $ref: '#/components/x-stackQL-resources/accounts/methods/update' + audit_events: + id: netlify.accounts.audit_events + name: audit_events + title: Audit Events + methods: + list: + operation: + $ref: '#/paths/~1accounts~1{account_id}~1audit/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/audit_events/methods/list' + insert: [] + update: [] + delete: [] + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/agent_runners.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/agent_runners.yaml new file mode 100644 index 0000000..43d8313 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/agent_runners.yaml @@ -0,0 +1,1651 @@ +openapi: 3.0.0 +info: + title: agent_runners API + description: netlify agent_runners API + version: 2.57.0 +paths: + /agent_runners: + get: + operationId: listAgentRunners + tags: + - agentRunner + parameters: + - name: account_id + in: query + required: true + schema: + type: string + - name: site_id + in: query + required: true + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: state + in: query + schema: + type: string + enum: + - live + - error + - name: title + in: query + schema: + type: string + - name: branch + in: query + schema: + type: string + - name: result_branch + in: query + schema: + type: string + - name: from + in: query + schema: + type: integer + - name: to + in: query + schema: + type: integer + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + parent_agent_runner_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + branch: + type: string + result_branch: + type: string + pr_url: + type: string + pr_branch: + type: string + pr_state: + type: string + pr_number: + type: integer + pr_is_being_created: + type: boolean + pr_error: + type: string + current_task: + type: string + result_diff: + type: string + sha: + type: string + merge_commit_sha: + type: string + merge_commit_error: + type: string + merge_commit_is_being_created: + type: boolean + base_deploy_id: + type: string + attached_file_keys: + type: array + items: + type: string + active_session_created_at: + type: string + format: dateTime + latest_session_deploy_id: + type: string + latest_session_deploy_url: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createAgentRunner + tags: + - agentRunner + parameters: + - name: site_id + in: query + required: true + schema: + type: string + - name: deploy_id + in: query + schema: + type: string + - name: branch + in: query + schema: + type: string + - name: prompt + in: query + schema: + type: string + - name: agent + in: query + schema: + type: string + - name: model + in: query + schema: + type: string + - name: parent_agent_runner_id + in: query + schema: + type: string + - name: dev_server_image + in: query + schema: + type: string + - name: file_keys + in: query + style: form + explode: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + parent_agent_runner_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + branch: + type: string + result_branch: + type: string + pr_url: + type: string + pr_branch: + type: string + pr_state: + type: string + pr_number: + type: integer + pr_is_being_created: + type: boolean + pr_error: + type: string + current_task: + type: string + result_diff: + type: string + sha: + type: string + merge_commit_sha: + type: string + merge_commit_error: + type: string + merge_commit_is_being_created: + type: boolean + base_deploy_id: + type: string + attached_file_keys: + type: array + items: + type: string + active_session_created_at: + type: string + format: dateTime + latest_session_deploy_id: + type: string + latest_session_deploy_url: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + '404': + description: Not Found + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /agent_runners/upload_url: + post: + x-internal: true + operationId: createAgentRunnerUploadUrl + tags: + - agentRunner + parameters: + - name: account_id + in: query + required: true + schema: + type: string + - name: filename + in: query + required: true + schema: + type: string + - name: content_type + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + '400': + description: Bad Request + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /agent_runners/{agent_runner_id}: + get: + operationId: getAgentRunner + tags: + - agentRunner + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + parent_agent_runner_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + branch: + type: string + result_branch: + type: string + pr_url: + type: string + pr_branch: + type: string + pr_state: + type: string + pr_number: + type: integer + pr_is_being_created: + type: boolean + pr_error: + type: string + current_task: + type: string + result_diff: + type: string + sha: + type: string + merge_commit_sha: + type: string + merge_commit_error: + type: string + merge_commit_is_being_created: + type: boolean + base_deploy_id: + type: string + attached_file_keys: + type: array + items: + type: string + active_session_created_at: + type: string + format: dateTime + latest_session_deploy_id: + type: string + latest_session_deploy_url: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + patch: + operationId: updateAgentRunner + tags: + - agentRunner + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + parent_agent_runner_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + branch: + type: string + result_branch: + type: string + pr_url: + type: string + pr_branch: + type: string + pr_state: + type: string + pr_number: + type: integer + pr_is_being_created: + type: boolean + pr_error: + type: string + current_task: + type: string + result_diff: + type: string + sha: + type: string + merge_commit_sha: + type: string + merge_commit_error: + type: string + merge_commit_is_being_created: + type: boolean + base_deploy_id: + type: string + attached_file_keys: + type: array + items: + type: string + active_session_created_at: + type: string + format: dateTime + latest_session_deploy_id: + type: string + latest_session_deploy_url: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteAgentRunner + tags: + - agentRunner + responses: + '202': + description: Accepted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + /agent_runners/{agent_runner_id}/archive: + post: + operationId: archiveAgentRunner + tags: + - agentRunner + responses: + '202': + description: Accepted + '404': + description: Not Found + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + /agent_runners/{agent_runner_id}/pull_request: + post: + x-internal: true + operationId: agentRunnerPullRequest + tags: + - agentRunner + responses: + '200': + description: OK + '400': + description: Bad Request + '409': + description: Conflict + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + /agent_runners/{agent_runner_id}/commit: + post: + x-internal: true + operationId: agentRunnerCommitToBranch + tags: + - agentRunner + parameters: + - name: target_branch + in: query + required: true + schema: + type: string + - name: agent_runner_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + '400': + description: Bad Request + '409': + description: Conflict + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /agent_runners/{agent_runner_id}/sessions: + get: + operationId: listAgentRunnerSessions + tags: + - agentRunnerSession + parameters: + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: state + in: query + schema: + type: string + enum: + - live + - error + - name: from + in: query + schema: + type: integer + - name: to + in: query + schema: + type: integer + - name: order_by + in: query + schema: + type: string + enum: + - asc + - desc + - name: agent_runner_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + agent_runner_id: + type: string + dev_server_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + prompt: + type: string + agent_config: + type: object + properties: + agent: + type: string + model: + type: string + result: + type: string + result_diff: + type: string + commit_sha: + type: string + deploy_id: + type: string + deploy_url: + type: string + duration: + type: integer + steps: + type: array + items: + type: object + properties: + title: + type: string + message: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + attached_file_keys: + type: array + items: + type: string + result_zip_file_name: + type: string + is_published: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createAgentRunnerSession + tags: + - agentRunnerSession + parameters: + - name: prompt + in: query + schema: + type: string + - name: agent + in: query + schema: + type: string + - name: model + in: query + schema: + type: string + - name: file_keys + in: query + style: form + explode: false + schema: + type: array + items: + type: string + - name: agent_runner_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + agent_runner_id: + type: string + dev_server_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + prompt: + type: string + agent_config: + type: object + properties: + agent: + type: string + model: + type: string + result: + type: string + result_diff: + type: string + commit_sha: + type: string + deploy_id: + type: string + deploy_url: + type: string + duration: + type: integer + steps: + type: array + items: + type: object + properties: + title: + type: string + message: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + attached_file_keys: + type: array + items: + type: string + result_zip_file_name: + type: string + is_published: + type: boolean + '404': + description: Not Found + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id}: + get: + operationId: getAgentRunnerSession + tags: + - agentRunnerSession + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + agent_runner_id: + type: string + dev_server_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + prompt: + type: string + agent_config: + type: object + properties: + agent: + type: string + model: + type: string + result: + type: string + result_diff: + type: string + commit_sha: + type: string + deploy_id: + type: string + deploy_url: + type: string + duration: + type: integer + steps: + type: array + items: + type: object + properties: + title: + type: string + message: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + attached_file_keys: + type: array + items: + type: string + result_zip_file_name: + type: string + is_published: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + - name: agent_runner_session_id + in: path + required: true + schema: + type: string + patch: + operationId: updateAgentRunnerSession + tags: + - agentRunnerSession + parameters: + - name: is_published + in: query + schema: + type: boolean + - name: agent_runner_id + in: path + required: true + schema: + type: string + - name: agent_runner_session_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + agent_runner_id: + type: string + dev_server_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + prompt: + type: string + agent_config: + type: object + properties: + agent: + type: string + model: + type: string + result: + type: string + result_diff: + type: string + commit_sha: + type: string + deploy_id: + type: string + deploy_url: + type: string + duration: + type: integer + steps: + type: array + items: + type: object + properties: + title: + type: string + message: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + attached_file_keys: + type: array + items: + type: string + result_zip_file_name: + type: string + is_published: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteAgentRunnerSession + tags: + - agentRunnerSession + responses: + '202': + description: Accepted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + - name: agent_runner_session_id + in: path + required: true + schema: + type: string + /sites/{site_id}/agent_runner_hooks: + get: + x-internal: true + operationId: listSiteAgentRunnerHooks + tags: + - agentRunnerHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + title: + type: string + branch: + type: string + prompt: + type: string + agent: + type: string + url: + type: string + msg: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + post: + x-internal: true + operationId: createSiteAgentRunnerHook + tags: + - agentRunnerHook + requestBody: + $ref: '#/components/requestBodies/createSiteAgentRunnerHookAgentrunnerhook' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + title: + type: string + branch: + type: string + prompt: + type: string + agent: + type: string + url: + type: string + msg: + type: string + created_at: + type: string + format: dateTime + secret: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/agent_runner_hooks/{id}: + get: + x-internal: true + operationId: getSiteAgentRunnerHook + tags: + - agentRunnerHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + title: + type: string + branch: + type: string + prompt: + type: string + agent: + type: string + url: + type: string + msg: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + put: + x-internal: true + operationId: updateSiteAgentRunnerHook + tags: + - agentRunnerHook + requestBody: + $ref: '#/components/requestBodies/createSiteAgentRunnerHookAgentrunnerhook' + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + delete: + x-internal: true + operationId: deleteSiteAgentRunnerHook + tags: + - agentRunnerHook + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string +components: + requestBodies: + createSiteAgentRunnerHookAgentrunnerhook: + content: + application/json: + schema: + type: object + properties: + title: + type: string + branch: + type: string + prompt: + type: string + agent: + type: string + required: true + schemas: {} + x-stackQL-resources: + agent_runners: + id: netlify.agent_runners.agent_runners + name: agent_runners + title: Agent Runners + methods: + list: + operation: + $ref: '#/paths/~1agent_runners/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + operation: + $ref: '#/paths/~1agent_runners/post' + response: + mediaType: application/json + openAPIDocKey: '200' + create_upload_url: + operation: + $ref: '#/paths/~1agent_runners~1upload_url/post' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1agent_runners~1{agent_runner_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + operation: + $ref: '#/paths/~1agent_runners~1{agent_runner_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1agent_runners~1{agent_runner_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '202' + archive: + operation: + $ref: '#/paths/~1agent_runners~1{agent_runner_id}~1archive/post' + response: + mediaType: application/json + openAPIDocKey: '202' + create_pull_request: + operation: + $ref: '#/paths/~1agent_runners~1{agent_runner_id}~1pull_request/post' + response: + mediaType: application/json + openAPIDocKey: '200' + commit_to_branch: + operation: + $ref: '#/paths/~1agent_runners~1{agent_runner_id}~1commit/post' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/agent_runners/methods/get' + - $ref: '#/components/x-stackQL-resources/agent_runners/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/agent_runners/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/agent_runners/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/agent_runners/methods/delete' + replace: [] + agent_runner_sessions: + id: netlify.agent_runners.agent_runner_sessions + name: agent_runner_sessions + title: Agent Runner Sessions + methods: + list: + operation: + $ref: '#/paths/~1agent_runners~1{agent_runner_id}~1sessions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + operation: + $ref: '#/paths/~1agent_runners~1{agent_runner_id}~1sessions/post' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: >- + #/paths/~1agent_runners~1{agent_runner_id}~1sessions~1{agent_runner_session_id}/get + response: + mediaType: application/json + openAPIDocKey: '200' + update: + operation: + $ref: >- + #/paths/~1agent_runners~1{agent_runner_id}~1sessions~1{agent_runner_session_id}/patch + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: >- + #/paths/~1agent_runners~1{agent_runner_id}~1sessions~1{agent_runner_session_id}/delete + response: + mediaType: application/json + openAPIDocKey: '202' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/agent_runner_sessions/methods/get' + - $ref: >- + #/components/x-stackQL-resources/agent_runner_sessions/methods/list + insert: + - $ref: >- + #/components/x-stackQL-resources/agent_runner_sessions/methods/create + update: + - $ref: >- + #/components/x-stackQL-resources/agent_runner_sessions/methods/update + delete: + - $ref: >- + #/components/x-stackQL-resources/agent_runner_sessions/methods/delete + replace: [] + agent_runner_hooks: + id: netlify.agent_runners.agent_runner_hooks + name: agent_runner_hooks + title: Agent Runner Hooks + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1agent_runner_hooks/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1agent_runner_hooks/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1agent_runner_hooks~1{id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1agent_runner_hooks~1{id}/put' + response: + mediaType: application/json + openAPIDocKey: '204' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1agent_runner_hooks~1{id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/agent_runner_hooks/methods/get' + - $ref: '#/components/x-stackQL-resources/agent_runner_hooks/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/agent_runner_hooks/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/agent_runner_hooks/methods/delete' + replace: + - $ref: '#/components/x-stackQL-resources/agent_runner_hooks/methods/update' +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/ai_gateway.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/ai_gateway.yaml new file mode 100644 index 0000000..c5ace2b --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/ai_gateway.yaml @@ -0,0 +1,198 @@ +openapi: 3.0.0 +info: + title: ai_gateway API + description: netlify ai_gateway API + version: 2.57.0 +paths: + /ai-gateway/providers: + get: + operationId: getAIGatewayProviders + tags: + - aiGateway + security: [] + responses: + '200': + description: The mapping of providers and supported models + content: + application/json: + schema: + type: object + properties: + providers: + additionalProperties: + type: object + properties: + token_env_var: + type: string + url_env_var: + type: string + models: + type: array + items: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/ai-gateway/token: + get: + operationId: getAIGatewayToken + tags: + - aiGateway + responses: + '200': + description: AI Gateway token for the site + content: + application/json: + schema: + type: object + properties: + token: + type: string + description: The AI Gateway authentication token + url: + type: string + description: AI gateway base url + expires_at: + type: integer + format: int64 + description: Unix timestamp when the token expires + '404': + description: AI Gateway not available for this site + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Returns an AI Gateway token for a specific site + parameters: + - name: site_id + in: path + required: true + description: The site ID + schema: + type: string + /accounts/{account_id}/ai-gateway/token: + get: + operationId: getAccountAIGatewayToken + tags: + - aiGateway + responses: + '200': + description: AI Gateway token for the account + content: + application/json: + schema: + type: object + properties: + token: + type: string + description: The AI Gateway authentication token + url: + type: string + description: AI gateway base url + expires_at: + type: integer + format: int64 + description: Unix timestamp when the token expires + '404': + description: AI Gateway not available for this account + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Returns an AI Gateway token scoped to an account + parameters: + - name: account_id + in: path + required: true + description: The account ID + schema: + type: string +components: + x-stackQL-resources: + providers: + id: netlify.ai_gateway.providers + name: providers + title: Providers + methods: + get: + operation: + $ref: '#/paths/~1ai-gateway~1providers/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/providers/methods/get' + insert: [] + update: [] + delete: [] + replace: [] + tokens: + id: netlify.ai_gateway.tokens + name: tokens + title: Tokens + methods: + get_for_site: + operation: + $ref: '#/paths/~1sites~1{site_id}~1ai-gateway~1token/get' + response: + mediaType: application/json + openAPIDocKey: '200' + get_for_account: + operation: + $ref: '#/paths/~1accounts~1{account_id}~1ai-gateway~1token/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/tokens/methods/get_for_site' + - $ref: '#/components/x-stackQL-resources/tokens/methods/get_for_account' + insert: [] + update: [] + delete: [] + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/asset.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/asset.yaml deleted file mode 100644 index 6005834..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/asset.yaml +++ /dev/null @@ -1,284 +0,0 @@ -paths: - /sites/{site_id}/assets: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/asset' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - asset - operationId: listSiteAssets - parameters: &ref_0 - - in: path - name: site_id - required: true - schema: - type: string - post: - parameters: *ref_0 - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/assetSignature' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - asset - operationId: createSiteAsset - /sites/{site_id}/assets/{asset_id}: - delete: - responses: - '204': - description: Deleted - default: - $ref: '#/components/responses/error' - tags: - - asset - operationId: deleteSiteAsset - parameters: &ref_1 - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: asset_id - required: true - schema: - type: string - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/asset' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - asset - operationId: getSiteAssetInfo - parameters: *ref_1 - put: - parameters: *ref_1 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/asset' - description: Updated - default: - $ref: '#/components/responses/error' - tags: - - asset - operationId: updateSiteAsset -components: - schemas: - asset: - properties: - content_type: - type: string - created_at: - format: dateTime - type: string - creator_id: - type: string - id: - type: string - key: - type: string - name: - type: string - site_id: - type: string - size: - format: int64 - type: integer - state: - type: string - updated_at: - format: dateTime - type: string - url: - type: string - visibility: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - assetSignature: - properties: - asset: - $ref: '#/components/schemas/asset' - type: object - form: - $ref: '#/components/schemas/assetForm' - type: object - type: object - assetForm: - properties: - fields: - additionalProperties: - type: string - type: object - url: - type: string - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - sites_assets: - id: netlify.asset.sites_assets - name: sites_assets - title: Sites_assets - methods: - listSiteAssets: - operation: - $ref: '#/paths/~1sites~1{site_id}~1assets/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createSiteAsset: - operation: - $ref: '#/paths/~1sites~1{site_id}~1assets/post' - response: - mediaType: application/json - openAPIDocKey: '201' - deleteSiteAsset: - operation: - $ref: '#/paths/~1sites~1{site_id}~1assets~1{asset_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - getSiteAssetInfo: - operation: - $ref: '#/paths/~1sites~1{site_id}~1assets~1{asset_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - updateSiteAsset: - operation: - $ref: '#/paths/~1sites~1{site_id}~1assets~1{asset_id}/put' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_assets/methods/getSiteAssetInfo' - - $ref: '#/components/x-stackQL-resources/sites_assets/methods/listSiteAssets' - insert: - - $ref: '#/components/x-stackQL-resources/sites_assets/methods/createSiteAsset' - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/sites_assets/methods/deleteSiteAsset' -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: asset - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - asset - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/asset_public_signature.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/asset_public_signature.yaml deleted file mode 100644 index 2eba5e3..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/asset_public_signature.yaml +++ /dev/null @@ -1,154 +0,0 @@ -paths: - /sites/{site_id}/assets/{asset_id}/public_signature: - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/assetPublicSignature' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - assetPublicSignature - operationId: getSiteAssetPublicSignature - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: asset_id - required: true - schema: - type: string -components: - schemas: - assetPublicSignature: - properties: - url: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - sites_assets_public_signature: - id: netlify.asset_public_signature.sites_assets_public_signature - name: sites_assets_public_signature - title: Sites_assets_public_signature - methods: - getSiteAssetPublicSignature: - operation: - $ref: '#/paths/~1sites~1{site_id}~1assets~1{asset_id}~1public_signature/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_assets_public_signature/methods/getSiteAssetPublicSignature' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: assetPublicSignature - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - asset_public_signature - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/audit_log.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/audit_log.yaml deleted file mode 100644 index d740554..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/audit_log.yaml +++ /dev/null @@ -1,185 +0,0 @@ -paths: - /accounts/{account_id}/audit: - get: - parameters: - - in: path - name: account_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/auditLog' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - auditLog - operationId: listAccountAuditEvents -components: - schemas: - auditLog: - properties: - account_id: - type: string - id: - type: string - payload: - additionalProperties: - type: object - properties: - action: - type: string - actor_email: - type: string - actor_id: - type: string - actor_name: - type: string - log_type: - type: string - timestamp: - format: dateTime - type: string - type: object - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: - page: - in: query - name: page - required: false - schema: - format: int32 - type: integer - perPage: - in: query - name: per_page - required: false - schema: - format: int32 - type: integer - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - accounts_audit: - id: netlify.audit_log.accounts_audit - name: accounts_audit - title: Accounts_audit - methods: - listAccountAuditEvents: - operation: - $ref: '#/paths/~1accounts~1{account_id}~1audit/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/accounts_audit/methods/listAccountAuditEvents' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: auditLog - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - audit_log - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/build.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/build.yaml deleted file mode 100644 index 9c3c8d9..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/build.yaml +++ /dev/null @@ -1,348 +0,0 @@ -paths: - /builds/{build_id}: - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/build' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - build - operationId: getSiteBuild - parameters: - - in: path - name: build_id - required: true - schema: - type: string - /builds/{build_id}/start: - post: - responses: - '204': - description: No content - default: - $ref: '#/components/responses/error' - tags: - - build - operationId: notifyBuildStart - parameters: - - in: path - name: build_id - required: true - schema: - type: string - /sites/{site_id}/builds: - get: - parameters: &ref_0 - - in: path - name: site_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/build' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - build - operationId: listSiteBuilds - post: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/build' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - build - operationId: createSiteBuild - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/buildSetup' - parameters: *ref_0 - /{account_id}/builds/status: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/buildStatus' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - build - operationId: getAccountBuildStatus - parameters: - - in: path - name: account_id - required: true - schema: - type: string -components: - schemas: - build: - properties: - created_at: - format: dateTime - type: string - deploy_id: - type: string - done: - type: boolean - error: - type: string - id: - type: string - sha: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - buildSetup: - properties: - image: - type: string - type: object - buildStatus: - properties: - active: - type: integer - build_count: - type: integer - enqueued: - type: integer - minutes: - properties: - current: - type: integer - current_average_sec: - type: integer - included_minutes: - type: string - included_minutes_with_packs: - type: string - last_updated_at: - format: dateTime - type: string - period_end_date: - format: dateTime - type: string - period_start_date: - format: dateTime - type: string - previous: - type: integer - type: object - pending_concurrency: - type: integer - type: object - parameters: - page: - in: query - name: page - required: false - schema: - format: int32 - type: integer - perPage: - in: query - name: per_page - required: false - schema: - format: int32 - type: integer - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - builds: - id: netlify.build.builds - name: builds - title: Builds - methods: - getSiteBuild: - operation: - $ref: '#/paths/~1builds~1{build_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/builds/methods/getSiteBuild' - insert: [] - update: [] - delete: [] - builds_start: - id: netlify.build.builds_start - name: builds_start - title: Builds_start - methods: - notifyBuildStart: - operation: - $ref: '#/paths/~1builds~1{build_id}~1start/post' - response: - mediaType: application/json - openAPIDocKey: '204' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] - sites_builds: - id: netlify.build.sites_builds - name: sites_builds - title: Sites_builds - methods: - listSiteBuilds: - operation: - $ref: '#/paths/~1sites~1{site_id}~1builds/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createSiteBuild: - operation: - $ref: '#/paths/~1sites~1{site_id}~1builds/post' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_builds/methods/listSiteBuilds' - insert: - - $ref: '#/components/x-stackQL-resources/sites_builds/methods/createSiteBuild' - update: [] - delete: [] - builds_status: - id: netlify.build.builds_status - name: builds_status - title: Builds_status - methods: - getAccountBuildStatus: - operation: - $ref: '#/paths/~1{account_id}~1builds~1status/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/builds_status/methods/getAccountBuildStatus' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: build - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - build - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/build_hook.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/build_hook.yaml deleted file mode 100644 index 3ee7484..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/build_hook.yaml +++ /dev/null @@ -1,267 +0,0 @@ -paths: - /sites/{site_id}/build_hooks: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/buildHook' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - buildHook - operationId: listSiteBuildHooks - parameters: &ref_0 - - in: path - name: site_id - required: true - schema: - type: string - post: - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/buildHook' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - buildHook - operationId: createSiteBuildHook - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/buildHookSetup' - required: true - parameters: *ref_0 - /sites/{site_id}/build_hooks/{id}: - delete: - responses: - '204': - description: No content - default: - $ref: '#/components/responses/error' - tags: - - buildHook - operationId: deleteSiteBuildHook - parameters: &ref_1 - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: id - required: true - schema: - type: string - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/buildHook' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - buildHook - operationId: getSiteBuildHook - parameters: *ref_1 - put: - responses: - '204': - description: No content - default: - $ref: '#/components/responses/error' - tags: - - buildHook - operationId: updateSiteBuildHook - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/buildHookSetup' - required: true - parameters: *ref_1 -components: - schemas: - buildHook: - properties: - branch: - type: string - created_at: - format: dateTime - type: string - id: - type: string - site_id: - type: string - title: - type: string - url: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - buildHookSetup: - properties: - branch: - type: string - title: - type: string - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - sites_build_hooks: - id: netlify.build_hook.sites_build_hooks - name: sites_build_hooks - title: Sites_build_hooks - methods: - listSiteBuildHooks: - operation: - $ref: '#/paths/~1sites~1{site_id}~1build_hooks/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createSiteBuildHook: - operation: - $ref: '#/paths/~1sites~1{site_id}~1build_hooks/post' - response: - mediaType: application/json - openAPIDocKey: '201' - deleteSiteBuildHook: - operation: - $ref: '#/paths/~1sites~1{site_id}~1build_hooks~1{id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - getSiteBuildHook: - operation: - $ref: '#/paths/~1sites~1{site_id}~1build_hooks~1{id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - updateSiteBuildHook: - operation: - $ref: '#/paths/~1sites~1{site_id}~1build_hooks~1{id}/put' - response: - mediaType: application/json - openAPIDocKey: '204' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_build_hooks/methods/getSiteBuildHook' - - $ref: '#/components/x-stackQL-resources/sites_build_hooks/methods/listSiteBuildHooks' - insert: - - $ref: '#/components/x-stackQL-resources/sites_build_hooks/methods/createSiteBuildHook' - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/sites_build_hooks/methods/deleteSiteBuildHook' -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: buildHook - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - build_hook - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/build_log_msg.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/build_log_msg.yaml deleted file mode 100644 index f88cebe..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/build_log_msg.yaml +++ /dev/null @@ -1,139 +0,0 @@ -paths: - /builds/{build_id}/log: - post: - responses: - '204': - description: No content - default: - $ref: '#/components/responses/error' - tags: - - buildLogMsg - operationId: updateSiteBuildLog - parameters: - - in: path - name: build_id - required: true - schema: - type: string -components: - schemas: - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - builds_log: - id: netlify.build_log_msg.builds_log - name: builds_log - title: Builds_log - methods: - updateSiteBuildLog: - operation: - $ref: '#/paths/~1builds~1{build_id}~1log/post' - response: - mediaType: application/json - openAPIDocKey: '204' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: buildLogMsg - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - build_log_msg - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/builds.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/builds.yaml new file mode 100644 index 0000000..7261704 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/builds.yaml @@ -0,0 +1,729 @@ +openapi: 3.0.0 +info: + title: builds API + description: netlify builds API + version: 2.57.0 +paths: + /sites/{site_id}/build_hooks: + get: + operationId: listSiteBuildHooks + tags: + - buildHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + post: + operationId: createSiteBuildHook + tags: + - buildHook + requestBody: + $ref: '#/components/requestBodies/createSiteBuildHookBuildhook' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/build_hooks/{id}: + get: + operationId: getSiteBuildHook + tags: + - buildHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + put: + operationId: updateSiteBuildHook + tags: + - buildHook + requestBody: + $ref: '#/components/requestBodies/createSiteBuildHookBuildhook' + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + delete: + operationId: deleteSiteBuildHook + tags: + - buildHook + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + /sites/{site_id}/builds: + get: + operationId: listSiteBuilds + tags: + - build + parameters: + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + deploy_id: + type: string + sha: + type: string + done: + type: boolean + error: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createSiteBuild + tags: + - build + description: > + Runs a build for a site. The build will be scheduled to run at the first + opportunity, but it might not start immediately if insufficient account + build capacity is available. + + + Files for build can be uploaded as a zipped site using one of these + methods: + + 1. Set Content-Type to 'application/zip' and send the zip file as the + raw request body + + 2. Set Content-Type to 'multipart/form-data' and include the zip file in + the 'zip' field + parameters: + - name: branch + description: >- + If no branch is specified, it is treated as a production deploy If a + branch IS specified and matches the main branch, it is also + production If a branch is specified and doesn't match the main + branch, it is a branch deploy + required: false + in: query + schema: + type: string + - name: clear_cache + description: Whether to clear the build cache before building + required: false + in: query + schema: + type: boolean + - name: image + description: The build image tag to use for the build + required: false + in: query + schema: + type: string + - name: template_id + description: The build template to use for the build + required: false + in: query + schema: + type: string + - name: title + description: The title of the build + required: false + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + zip: + description: > + A zip file containing the site files to build. + + Only used with Content-Type 'multipart/form-data'. + + Alternatively, set Content-Type to 'application/zip' and + send the zip as the raw request body (no 'zip' parameter + needed). + type: string + format: binary + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + deploy_id: + type: string + sha: + type: string + done: + type: boolean + error: + type: string + created_at: + type: string + format: dateTime + '400': + description: Bad Request + '404': + description: Not Found + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /builds/{build_id}: + get: + operationId: getSiteBuild + tags: + - build + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + deploy_id: + type: string + sha: + type: string + done: + type: boolean + error: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: build_id + in: path + required: true + schema: + type: string + /builds/{build_id}/log: + post: + operationId: updateSiteBuildLog + tags: + - buildLogMsg + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: build_id + in: path + required: true + schema: + type: string + /builds/{build_id}/start: + post: + operationId: notifyBuildStart + tags: + - build + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: build_id + in: path + required: true + schema: + type: string + - name: buildbot_version + in: query + required: false + schema: + type: string + - name: build_version + in: query + required: false + schema: + type: string + - name: task_id + in: query + required: false + schema: + type: string + /{account_id}/builds/status: + get: + operationId: getAccountBuildStatus + tags: + - build + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + active: + type: integer + pending_concurrency: + type: integer + enqueued: + type: integer + build_count: + type: integer + minutes: + type: object + properties: + current: + type: integer + current_average_sec: + type: integer + previous: + type: integer + period_start_date: + type: string + format: dateTime + period_end_date: + type: string + format: dateTime + last_updated_at: + type: string + format: dateTime + included_minutes: + type: string + included_minutes_with_packs: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_id + in: path + required: true + schema: + type: string +components: + requestBodies: + createSiteBuildHookBuildhook: + content: + application/json: + schema: + type: object + properties: + title: + type: string + branch: + type: string + required: true + schemas: {} + x-stackQL-resources: + build_hooks: + id: netlify.builds.build_hooks + name: build_hooks + title: Build Hooks + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1build_hooks/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1build_hooks/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1build_hooks~1{id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1build_hooks~1{id}/put' + response: + mediaType: application/json + openAPIDocKey: '204' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1build_hooks~1{id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/build_hooks/methods/get' + - $ref: '#/components/x-stackQL-resources/build_hooks/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/build_hooks/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/build_hooks/methods/delete' + replace: + - $ref: '#/components/x-stackQL-resources/build_hooks/methods/update' + builds: + id: netlify.builds.builds + name: builds + title: Builds + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1builds/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1builds/post' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1builds~1{build_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update_log: + operation: + $ref: '#/paths/~1builds~1{build_id}~1log/post' + response: + mediaType: application/json + openAPIDocKey: '204' + notify_start: + operation: + $ref: '#/paths/~1builds~1{build_id}~1start/post' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/builds/methods/list' + - $ref: '#/components/x-stackQL-resources/builds/methods/get' + insert: + - $ref: '#/components/x-stackQL-resources/builds/methods/create' + update: [] + delete: [] + replace: [] + build_status: + id: netlify.builds.build_status + name: build_status + title: Build Status + methods: + get: + operation: + $ref: '#/paths/~1{account_id}~1builds~1status/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/build_status/methods/get' + insert: [] + update: [] + delete: [] + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/database.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/database.yaml new file mode 100644 index 0000000..b9d9bc3 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/database.yaml @@ -0,0 +1,1449 @@ +openapi: 3.0.0 +info: + title: database API + description: netlify database API + version: 2.57.0 +paths: + /sites/{site_id}/database: + post: + operationId: createSiteDatabase + tags: + - database + description: >- + Creates a new database for the specified site. If a database already + exists, returns the existing connection string. The database region + defaults to the site's functions region if not specified. + requestBody: + content: + application/json: + schema: + type: object + description: Request body for creating a database + properties: + region: + type: string + description: >- + The region where the database should be created. Defaults to + the site's functions region if not specified. + responses: + '200': + description: Database already exists + content: + application/json: + schema: + type: object + description: Response containing the database connection string + properties: + connection_string: + type: string + description: The connection string for the database + '201': + description: Created + content: + application/json: + schema: + type: object + description: Response containing the database connection string + properties: + connection_string: + type: string + description: The connection string for the database + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + get: + operationId: getSiteDatabase + tags: + - database + description: Returns the database connection string for the specified site. + parameters: + - name: role + in: query + description: >- + The database role to use for the connection string. Defaults to + netlifydb_owner if not specified. + schema: + type: string + enum: + - netlifydb_owner + - netlifydb_readonly + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response containing the database connection string + properties: + connection_string: + type: string + description: The connection string for the database + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSiteDatabase + tags: + - database + description: >- + Deletes the database and all associated branches and snapshots for the + specified site. + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/branch: + post: + operationId: createSiteDatabaseBranch + tags: + - database + description: >- + Creates a new database branch. If a branch already exists for the + specified branch ID, returns the existing connection string. + requestBody: + content: + application/json: + schema: + type: object + description: Request body for creating a database branch + required: + - branch_id + properties: + parent_branch_id: + type: string + description: >- + The ID of the parent branch to create the new branch from. + Defaults to the production branch if not specified. + branch_id: + type: string + description: The branch identifier + metadata: + type: object + description: Arbitrary metadata to associate with the branch + additionalProperties: true + required: true + responses: + '200': + description: Branch already exists + content: + application/json: + schema: + type: object + description: Response containing the database branch connection string + properties: + connection_string: + type: string + description: The connection string for the database branch + metadata: + type: object + description: Metadata associated with the branch + additionalProperties: true + '201': + description: Created + content: + application/json: + schema: + type: object + description: Response containing the database branch connection string + properties: + connection_string: + type: string + description: The connection string for the database branch + metadata: + type: object + description: Metadata associated with the branch + additionalProperties: true + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/branches: + get: + operationId: listSiteDatabaseBranches + tags: + - database + description: >- + Returns all branches for the site's database with compute status and + metadata. + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response containing a list of database branches + properties: + branches: + type: array + items: + type: object + description: Detailed information about a database branch + properties: + branch_id: + type: string + description: The branch identifier + name: + type: string + description: The branch name + connection_string: + type: string + description: The connection string for the branch + state: + type: string + description: The current state of the branch + enum: + - init + - creating + - resetting + - ready + - archived + logical_size_bytes: + type: integer + format: int64 + description: The logical size of the branch in bytes + created_at: + type: string + format: dateTime + description: When the branch was created + updated_at: + type: string + format: dateTime + description: When the branch was last updated + last_active_at: + type: string + format: dateTime + description: When the branch was last active + compute: + type: object + description: Compute endpoint status for a branch + properties: + current_state: + type: string + description: The current state of the compute endpoint + enum: + - active + - idle + autoscaling_limit_min_cu: + type: number + format: double + description: Minimum compute units for autoscaling + autoscaling_limit_max_cu: + type: number + format: double + description: Maximum compute units for autoscaling + suspend_timeout_seconds: + type: integer + format: int64 + description: >- + Seconds of inactivity before the compute + endpoint is suspended + last_active: + type: string + format: dateTime + description: When the compute endpoint was last active + metadata: + type: object + description: Metadata associated with the branch + additionalProperties: true + description: List of database branches + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/branch/{branch_id}: + get: + operationId: getSiteDatabaseBranch + tags: + - database + description: Returns the database branch connection string for a specific branch. + parameters: + - name: role + in: query + description: >- + The database role to use for the connection string. Defaults to + netlifydb_owner if not specified. + schema: + type: string + enum: + - netlifydb_owner + - netlifydb_readonly + - name: site_id + in: path + required: true + schema: + type: string + - name: branch_id + in: path + required: true + description: The branch ID + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response containing the database branch connection string + properties: + connection_string: + type: string + description: The connection string for the database branch + metadata: + type: object + description: Metadata associated with the branch + additionalProperties: true + '404': + description: Branch not found + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSiteDatabaseBranch + tags: + - database + description: Deletes a database branch. + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: branch_id + in: path + required: true + description: The branch ID + schema: + type: string + /sites/{site_id}/database/branch/{branch_id}/reset: + post: + operationId: resetSiteDatabaseBranch + tags: + - database + description: >- + Resets a non-production database branch by re-forking it from a source + branch (defaults to the production branch). If the target branch is + already in sync with the source, returns the existing connection string + without performing a reset, unless `force=true` is passed. The + production branch cannot be reset. + parameters: + - name: force + in: query + description: >- + If true, resets the branch even when it is already in sync with the + source. + schema: + type: boolean + - name: role + in: query + description: >- + The database role to use for the returned connection string. + Defaults to netlifydb_owner if not specified. + schema: + type: string + enum: + - netlifydb_owner + - netlifydb_readonly + - name: site_id + in: path + required: true + schema: + type: string + - name: branch_id + in: path + required: true + description: The branch ID to reset + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + description: Request body for resetting a database branch + properties: + source_branch_id: + type: string + description: >- + The ID of the branch to re-fork the target branch from. + Defaults to "production" if not specified. + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response for a database branch reset + properties: + reset: + type: boolean + description: >- + Whether the branch was actually re-forked. False when the + target was already in sync with the source and + `force=true` was not set. + connection_string: + type: string + description: The connection string for the reset (or unchanged) branch + metadata: + type: object + description: Metadata associated with the branch + additionalProperties: true + '400': + description: >- + Invalid request — for example, the target is the production branch + or the source branch is the same as the target. + '404': + description: Database or branch not found + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/database/branch/{branch_id}/compute/settings: + put: + operationId: setSiteDatabaseBranchComputeSettings + tags: + - database + description: >- + Sets compute settings for a specific database branch, overriding + project-level settings. Requires a Pro or higher plan. + requestBody: + $ref: >- + #/components/requestBodies/setSiteDatabaseBranchComputeSettingsComputesettings + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Compute settings for a database or branch + properties: + min_cu: + type: number + format: double + description: Minimum compute units + max_cu: + type: number + format: double + description: Maximum compute units + sleep_timeout_seconds: + type: integer + format: int64 + description: Seconds of inactivity before suspension + '403': + description: Compute customization requires a Pro or higher plan + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: branch_id + in: path + required: true + description: The branch ID + schema: + type: string + /sites/{site_id}/database/compute/settings: + put: + operationId: setSiteDatabaseComputeSettings + tags: + - database + description: >- + Sets project-level compute settings for the database. Applied to new + branches. Can be overridden per-branch. Requires a Pro or higher plan. + requestBody: + $ref: >- + #/components/requestBodies/setSiteDatabaseBranchComputeSettingsComputesettings + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Compute settings for a database or branch + properties: + min_cu: + type: number + format: double + description: Minimum compute units + max_cu: + type: number + format: double + description: Maximum compute units + sleep_timeout_seconds: + type: integer + format: int64 + description: Seconds of inactivity before suspension + '403': + description: Compute customization requires a Pro or higher plan + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + get: + operationId: getSiteDatabaseComputeSettings + tags: + - database + description: >- + Returns the project-level compute settings for the database. Returns + effective settings (custom or tier defaults). Requires a Pro or higher + plan. + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Compute settings for a database or branch + properties: + min_cu: + type: number + format: double + description: Minimum compute units + max_cu: + type: number + format: double + description: Maximum compute units + sleep_timeout_seconds: + type: integer + format: int64 + description: Seconds of inactivity before suspension + '403': + description: Compute customization requires a Pro or higher plan + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + delete: + operationId: clearSiteDatabaseComputeSettings + tags: + - database + description: >- + Resets project-level compute settings to tier defaults. Requires a Pro + or higher plan. + responses: + '204': + description: Cleared + '403': + description: Compute customization requires a Pro or higher plan + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/migrations: + get: + operationId: listSiteDatabaseMigrations + tags: + - database + description: >- + Returns the list of migrations available for the specified branch, + indicating which ones have been applied to the database. + parameters: + - name: branch + in: query + description: >- + The branch ID to list migrations for. Defaults to "production" if + not specified. + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response containing the list of migrations for a branch + properties: + migrations: + type: array + items: + type: object + description: A migration available to a database branch + properties: + version: + type: integer + format: int64 + description: The migration version number + name: + type: string + description: The migration name + path: + type: string + description: The path to the migration file in the deploy bundle + applied: + type: boolean + description: >- + Whether this migration has been applied to the + branch + description: List of migrations + '404': + description: Database or branch not found + '423': + description: Database is disabled + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/database/migrations/{name}: + get: + operationId: getSiteDatabaseMigration + tags: + - database + description: Returns the contents of a named migration for the specified branch. + parameters: + - name: branch + in: query + description: >- + The branch ID to look up the migration on. Defaults to the currently + published deploy's branch. + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + - name: name + in: path + required: true + description: The migration name + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: A migration with its file contents + properties: + version: + type: integer + format: int64 + description: The migration version number + name: + type: string + description: The migration name + path: + type: string + description: The path to the migration file in the deploy bundle + content: + type: string + description: The raw contents of the migration file + '404': + description: Migration, database, or branch not found + '423': + description: Database is disabled + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/database/migrations/{deploy_id}: + post: + operationId: runSiteDatabaseMigrations + tags: + - database + description: >- + Runs database migrations for the specified deploy. Finds the deploy and + determines the appropriate branch. + requestBody: + content: + application/json: + schema: + type: object + description: Request body for running database migrations + properties: + dry_run: + type: boolean + description: If true, validates migrations without applying them. + responses: + '200': + description: OK + '409': + description: >- + Migration conflict - migration modified or removed after being + applied + '422': + description: Migration validation failed + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy_id + in: path + required: true + description: The deploy ID to run migrations for + schema: + type: string + /sites/{site_id}/database/snapshot: + post: + operationId: createSiteDatabaseSnapshot + tags: + - database + description: >- + Creates a point-in-time snapshot of a database branch. Defaults to the + production branch if no branch name is specified. + requestBody: + content: + application/json: + schema: + type: object + description: Request body for creating a database snapshot + properties: + branch_id: + type: string + description: >- + The ID of the branch to snapshot. Defaults to "production" + if not specified. + name: + type: string + description: A name for the snapshot + metadata: + type: object + description: Metadata associated with a snapshot + properties: + deploy: + type: object + description: Deploy information associated with the snapshot + additionalProperties: true + source: + type: string + description: The source that created the snapshot + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + description: A point-in-time snapshot of a database branch + properties: + id: + type: string + description: The unique identifier of the snapshot + source_branch_id: + type: string + description: The ID of the branch that was snapshotted + manual: + type: boolean + description: Whether this snapshot was manually created + created_at: + type: string + format: dateTime + description: When the snapshot was created + expires_at: + type: string + format: dateTime + description: When the snapshot expires + timestamp: + type: string + format: dateTime + description: The point-in-time timestamp of the snapshot + metadata: + type: object + description: Metadata associated with a snapshot + properties: + deploy: + type: object + description: Deploy information associated with the snapshot + additionalProperties: true + source: + type: string + description: The source that created the snapshot + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/snapshots: + get: + operationId: listSiteDatabaseSnapshots + tags: + - database + description: Returns all snapshots for the site's database. + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response containing a list of database snapshots + properties: + snapshots: + type: array + items: + type: object + description: A point-in-time snapshot of a database branch + properties: + id: + type: string + description: The unique identifier of the snapshot + source_branch_id: + type: string + description: The ID of the branch that was snapshotted + manual: + type: boolean + description: Whether this snapshot was manually created + created_at: + type: string + format: dateTime + description: When the snapshot was created + expires_at: + type: string + format: dateTime + description: When the snapshot expires + timestamp: + type: string + format: dateTime + description: The point-in-time timestamp of the snapshot + metadata: + type: object + description: Metadata associated with a snapshot + properties: + deploy: + type: object + description: Deploy information associated with the snapshot + additionalProperties: true + source: + type: string + description: The source that created the snapshot + description: List of database snapshots + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/snapshot/{snapshot_id}: + delete: + operationId: deleteSiteDatabaseSnapshot + tags: + - database + description: Deletes a database snapshot. + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: snapshot_id + in: path + required: true + description: The snapshot ID + schema: + type: string + /sites/{site_id}/database/snapshot/{snapshot_id}/restore: + post: + operationId: restoreSiteDatabaseSnapshot + tags: + - database + description: >- + Restores a snapshot to a database branch. Defaults to the production + branch if no branch_name is specified. + requestBody: + content: + application/json: + schema: + type: object + description: Request body for restoring a database snapshot + properties: + branch_id: + type: string + description: >- + The ID of the branch to restore the snapshot to. Defaults to + "production" if not specified. + responses: + '200': + description: OK + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: snapshot_id + in: path + required: true + description: The snapshot ID to restore + schema: + type: string +components: + requestBodies: + setSiteDatabaseBranchComputeSettingsComputesettings: + content: + application/json: + schema: + type: object + description: >- + Request body for setting compute settings. All fields are + optional; only provided fields are updated. + properties: + min_cu: + type: number + format: double + minimum: 0.25 + maximum: 16 + description: >- + Minimum compute units (0.25 to 16.0). Must be less than or + equal to max_cu. + nullable: true + max_cu: + type: number + format: double + minimum: 0.25 + maximum: 16 + description: >- + Maximum compute units (0.25 to 16.0). Must be greater than or + equal to min_cu. max_cu - min_cu must not exceed 8.0. + nullable: true + sleep_timeout_seconds: + type: integer + format: int64 + minimum: -1 + description: >- + Seconds of inactivity before the compute endpoint is + suspended. Use -1 for always on, or a non-negative value. + nullable: true + required: true + x-stackQL-resources: + databases: + id: netlify.database.databases + name: databases + title: Databases + methods: + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1database/post' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1database/get' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1database/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/databases/methods/get' + insert: + - $ref: '#/components/x-stackQL-resources/databases/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/databases/methods/delete' + replace: [] + branches: + id: netlify.database.branches + name: branches + title: Branches + methods: + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1branch/post' + response: + mediaType: application/json + openAPIDocKey: '200' + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1branches/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.branches + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1branch~1{branch_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1branch~1{branch_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + reset: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: >- + #/paths/~1sites~1{site_id}~1database~1branch~1{branch_id}~1reset/post + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/branches/methods/get' + - $ref: '#/components/x-stackQL-resources/branches/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/branches/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/branches/methods/delete' + replace: [] + compute_settings: + id: netlify.database.compute_settings + name: compute_settings + title: Compute Settings + methods: + set_for_branch: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: >- + #/paths/~1sites~1{site_id}~1database~1branch~1{branch_id}~1compute~1settings/put + response: + mediaType: application/json + openAPIDocKey: '200' + set: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1compute~1settings/put' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1compute~1settings/get' + response: + mediaType: application/json + openAPIDocKey: '200' + clear: + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1compute~1settings/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/compute_settings/methods/get' + insert: [] + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/compute_settings/methods/clear' + replace: + - $ref: >- + #/components/x-stackQL-resources/compute_settings/methods/set_for_branch + - $ref: '#/components/x-stackQL-resources/compute_settings/methods/set' + migrations: + id: netlify.database.migrations + name: migrations + title: Migrations + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1migrations/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.migrations + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1migrations~1{name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + run: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1migrations~1{deploy_id}/post' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/migrations/methods/get' + - $ref: '#/components/x-stackQL-resources/migrations/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + snapshots: + id: netlify.database.snapshots + name: snapshots + title: Snapshots + methods: + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1snapshot/post' + response: + mediaType: application/json + openAPIDocKey: '201' + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1database~1snapshots/get' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.snapshots + delete: + operation: + $ref: >- + #/paths/~1sites~1{site_id}~1database~1snapshot~1{snapshot_id}/delete + response: + mediaType: application/json + openAPIDocKey: '204' + restore: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: >- + #/paths/~1sites~1{site_id}~1database~1snapshot~1{snapshot_id}~1restore/post + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/snapshots/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/snapshots/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/snapshots/methods/delete' + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/deploy.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/deploy.yaml deleted file mode 100644 index 3c36c8b..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/deploy.yaml +++ /dev/null @@ -1,576 +0,0 @@ -paths: - /deploys/{deploy_id}: - get: - parameters: - - in: path - name: deploy_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/deploy' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - deploy - operationId: getDeploy - /deploys/{deploy_id}/cancel: - post: - parameters: - - in: path - name: deploy_id - required: true - schema: - type: string - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/deploy' - description: Cancelled - default: - $ref: '#/components/responses/error' - tags: - - deploy - operationId: cancelSiteDeploy - /deploys/{deploy_id}/lock: - post: - parameters: - - in: path - name: deploy_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/deploy' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - deploy - operationId: lockDeploy - /deploys/{deploy_id}/unlock: - post: - parameters: - - in: path - name: deploy_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/deploy' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - deploy - operationId: unlockDeploy - /sites/{site_id}/deploys: - get: - parameters: &ref_0 - - in: path - name: site_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/deploy' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - deploy - operationId: listSiteDeploys - post: - parameters: *ref_0 - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/deploy' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - deploy - operationId: createSiteDeploy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/deployFiles' - required: true - /sites/{site_id}/deploys/{deploy_id}: - get: - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: deploy_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/deploy' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - deploy - operationId: getSiteDeploy - put: - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: deploy_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/deploy' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - deploy - operationId: updateSiteDeploy - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/deployFiles' - required: true - /sites/{site_id}/deploys/{deploy_id}/restore: - post: - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: deploy_id - required: true - schema: - type: string - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/deploy' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - deploy - operationId: restoreSiteDeploy - /sites/{site_id}/rollback: - put: - responses: - '204': - description: No content - default: - $ref: '#/components/responses/error' - tags: - - deploy - operationId: rollbackSiteDeploy - parameters: - - in: path - name: site_id - required: true - schema: - type: string -components: - schemas: - deploy: - properties: - admin_url: - type: string - branch: - type: string - build_id: - type: string - commit_ref: - type: string - commit_url: - type: string - context: - type: string - created_at: - format: dateTime - type: string - deploy_ssl_url: - type: string - deploy_url: - type: string - draft: - type: boolean - error_message: - type: string - framework: - type: string - function_schedules: - items: - $ref: '#/components/schemas/functionSchedule' - type: array - id: - type: string - locked: - type: boolean - name: - type: string - published_at: - format: dateTime - type: string - required: - items: - type: string - type: array - required_functions: - items: - type: string - type: array - review_id: - type: number - review_url: - type: string - screenshot_url: - type: string - site_capabilities: - properties: - large_media_enabled: - type: boolean - type: object - site_id: - type: string - skipped: - type: boolean - ssl_url: - type: string - state: - type: string - title: - type: string - updated_at: - format: dateTime - type: string - url: - type: string - user_id: - type: string - type: object - functionSchedule: - properties: - cron: - type: string - name: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - deployFiles: - properties: - async: - type: boolean - branch: - type: string - draft: - type: boolean - files: - type: object - framework: - type: string - function_schedules: - items: - $ref: '#/components/schemas/functionSchedule' - type: array - functions: - type: object - type: object - parameters: - page: - in: query - name: page - required: false - schema: - format: int32 - type: integer - perPage: - in: query - name: per_page - required: false - schema: - format: int32 - type: integer - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - deploys: - id: netlify.deploy.deploys - name: deploys - title: Deploys - methods: - getDeploy: - operation: - $ref: '#/paths/~1deploys~1{deploy_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/deploys/methods/getDeploy' - insert: [] - update: [] - delete: [] - deploys_cancel: - id: netlify.deploy.deploys_cancel - name: deploys_cancel - title: Deploys_cancel - methods: - cancelSiteDeploy: - operation: - $ref: '#/paths/~1deploys~1{deploy_id}~1cancel/post' - response: - mediaType: application/json - openAPIDocKey: '201' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] - deploys_lock: - id: netlify.deploy.deploys_lock - name: deploys_lock - title: Deploys_lock - methods: - lockDeploy: - operation: - $ref: '#/paths/~1deploys~1{deploy_id}~1lock/post' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] - deploys_unlock: - id: netlify.deploy.deploys_unlock - name: deploys_unlock - title: Deploys_unlock - methods: - unlockDeploy: - operation: - $ref: '#/paths/~1deploys~1{deploy_id}~1unlock/post' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] - sites_deploys: - id: netlify.deploy.sites_deploys - name: sites_deploys - title: Sites_deploys - methods: - listSiteDeploys: - operation: - $ref: '#/paths/~1sites~1{site_id}~1deploys/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createSiteDeploy: - operation: - $ref: '#/paths/~1sites~1{site_id}~1deploys/post' - response: - mediaType: application/json - openAPIDocKey: '200' - getSiteDeploy: - operation: - $ref: '#/paths/~1sites~1{site_id}~1deploys~1{deploy_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - updateSiteDeploy: - operation: - $ref: '#/paths/~1sites~1{site_id}~1deploys~1{deploy_id}/put' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_deploys/methods/getSiteDeploy' - - $ref: '#/components/x-stackQL-resources/sites_deploys/methods/listSiteDeploys' - insert: - - $ref: '#/components/x-stackQL-resources/sites_deploys/methods/createSiteDeploy' - update: [] - delete: [] - sites_deploys_restore: - id: netlify.deploy.sites_deploys_restore - name: sites_deploys_restore - title: Sites_deploys_restore - methods: - restoreSiteDeploy: - operation: - $ref: '#/paths/~1sites~1{site_id}~1deploys~1{deploy_id}~1restore/post' - response: - mediaType: application/json - openAPIDocKey: '201' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] - sites_rollback: - id: netlify.deploy.sites_rollback - name: sites_rollback - title: Sites_rollback - methods: - rollbackSiteDeploy: - operation: - $ref: '#/paths/~1sites~1{site_id}~1rollback/put' - response: - mediaType: application/json - openAPIDocKey: '204' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: deploy - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - deploy - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/deploy_key.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/deploy_key.yaml deleted file mode 100644 index 0e7e33a..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/deploy_key.yaml +++ /dev/null @@ -1,214 +0,0 @@ -paths: - /deploy_keys: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/deployKey' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - deployKey - operationId: listDeployKeys - post: - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/deployKey' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - deployKey - operationId: createDeployKey - /deploy_keys/{key_id}: - delete: - responses: - '204': - description: Not Content - default: - $ref: '#/components/responses/error' - tags: - - deployKey - operationId: deleteDeployKey - parameters: &ref_0 - - in: path - name: key_id - required: true - schema: - type: string - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/deployKey' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - deployKey - operationId: getDeployKey - parameters: *ref_0 -components: - schemas: - deployKey: - properties: - created_at: - format: dateTime - type: string - id: - type: string - public_key: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - deploy_keys: - id: netlify.deploy_key.deploy_keys - name: deploy_keys - title: Deploy_keys - methods: - listDeployKeys: - operation: - $ref: '#/paths/~1deploy_keys/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createDeployKey: - operation: - $ref: '#/paths/~1deploy_keys/post' - response: - mediaType: application/json - openAPIDocKey: '201' - deleteDeployKey: - operation: - $ref: '#/paths/~1deploy_keys~1{key_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - getDeployKey: - operation: - $ref: '#/paths/~1deploy_keys~1{key_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/deploy_keys/methods/getDeployKey' - - $ref: '#/components/x-stackQL-resources/deploy_keys/methods/listDeployKeys' - insert: - - $ref: '#/components/x-stackQL-resources/deploy_keys/methods/createDeployKey' - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/deploy_keys/methods/deleteDeployKey' -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: deployKey - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - deploy_key - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/deployed_branch.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/deployed_branch.yaml deleted file mode 100644 index eeb678c..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/deployed_branch.yaml +++ /dev/null @@ -1,161 +0,0 @@ -paths: - /sites/{site_id}/deployed-branches: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/deployedBranch' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - deployedBranch - operationId: listSiteDeployedBranches - parameters: - - in: path - name: site_id - required: true - schema: - type: string -components: - schemas: - deployedBranch: - properties: - deploy_id: - type: string - id: - type: string - name: - type: string - slug: - type: string - ssl_url: - type: string - url: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - sites_deployed_branches: - id: netlify.deployed_branch.sites_deployed_branches - name: sites_deployed_branches - title: Sites_deployed_branches - methods: - listSiteDeployedBranches: - operation: - $ref: '#/paths/~1sites~1{site_id}~1deployed-branches/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_deployed_branches/methods/listSiteDeployedBranches' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: deployedBranch - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - deployed_branch - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/deploys.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/deploys.yaml new file mode 100644 index 0000000..425f8b3 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/deploys.yaml @@ -0,0 +1,2213 @@ +openapi: 3.0.0 +info: + title: deploys API + description: netlify deploys API + version: 2.57.0 +paths: + /sites/{site_id}/deploys: + get: + operationId: listSiteDeploys + tags: + - deploy + parameters: + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy-previews + in: query + schema: + type: boolean + - name: production + in: query + schema: + type: boolean + - name: state + in: query + schema: + type: string + enum: + - new + - pending_review + - accepted + - rejected + - enqueued + - building + - uploading + - uploaded + - preparing + - prepared + - processing + - processed + - ready + - error + - retrying + - name: branch + in: query + schema: + type: string + - name: latest-published + in: query + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createSiteDeploy + tags: + - deploy + parameters: + - name: title + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy-previews + in: query + schema: + type: boolean + - name: production + in: query + schema: + type: boolean + - name: state + in: query + schema: + type: string + enum: + - new + - pending_review + - accepted + - rejected + - enqueued + - building + - uploading + - uploaded + - preparing + - prepared + - processing + - processed + - ready + - error + - retrying + - name: branch + in: query + schema: + type: string + - name: latest-published + in: query + schema: + type: boolean + requestBody: + $ref: '#/components/requestBodies/createSiteDeployDeploy' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/deploys/{deploy_id}: + get: + operationId: getSiteDeploy + tags: + - deploy + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + put: + operationId: updateSiteDeploy + tags: + - deploy + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy_id + in: path + required: true + schema: + type: string + - name: commit_ref + in: query + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/createSiteDeployDeploy' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSiteDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/cancel: + post: + operationId: cancelSiteDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '201': + description: Cancelled + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/deploys/{deploy_id}/restore: + post: + operationId: restoreSiteDeploy + tags: + - deploy + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/rollback: + put: + operationId: rollbackSiteDeploy + tags: + - deploy + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /deploys/{deploy_id}: + get: + operationId: getDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/validations_report: + patch: + operationId: updateDeployValidations + tags: + - deploy + description: Updates the deploy validations report for a deploy. + x-internal: true + x-controller: api/v1/deploys + x-action: validations_report + parameters: + - name: deploy_id + description: The ID of the deploy + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + properties: + secrets_scan: + type: string + description: (opaque JSON object) + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + description: The id of the deploy validations report + deploy_id: + type: string + description: The id of the deploy + secret_scan_result: + type: object + properties: + scannedFilesCount: + type: integer + description: The number of files scanned + secretsScanMatches: + type: array + items: + type: string + description: The list of secrets scan matches + /deploys/{deploy_id}/lock: + post: + operationId: lockDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/unlock: + post: + operationId: unlockDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/files/{path}: + put: + operationId: uploadDeployFile + tags: + - file + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + - name: path + in: path + required: true + schema: + type: string + - name: size + in: query + schema: + type: integer + requestBody: + content: + application/octet-stream: + schema: + $ref: '#/components/schemas/stackqlDeploysUploadFileBody' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + path: + type: string + sha: + type: string + mime_type: + type: string + size: + type: integer + format: int64 + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/functions/{name}: + put: + operationId: uploadDeployFunction + tags: + - function + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + - name: name + in: path + required: true + schema: + type: string + - name: runtime + in: query + schema: + type: string + - name: invocation_mode + in: query + schema: + type: string + - name: timeout + in: query + schema: + type: integer + - name: size + in: query + schema: + type: integer + - name: X-Nf-Retry-Count + in: header + schema: + type: integer + requestBody: + content: + application/octet-stream: + schema: + $ref: '#/components/schemas/stackqlDeploysUploadFunctionBody' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + sha: + type: string + region: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/edge_functions/{code_sha}: + put: + operationId: uploadDeployEdgeFunction + tags: + - edgeFunction + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + - name: code_sha + in: path + required: true + schema: + type: string + - name: X-Nf-Retry-Count + in: header + schema: + type: integer + requestBody: + content: + application/octet-stream: + schema: + $ref: '#/components/schemas/stackqlDeploysUploadEdgeFunctionBody' + required: true + responses: + '200': + description: OK + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploy_keys: + get: + operationId: listDeployKeys + tags: + - deployKey + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + public_key: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createDeployKey + tags: + - deployKey + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + public_key: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploy_keys/{key_id}: + get: + operationId: getDeployKey + tags: + - deployKey + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + public_key: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: key_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteDeployKey + tags: + - deployKey + responses: + '204': + description: Not Content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: key_id + in: path + required: true + schema: + type: string +components: + requestBodies: + createSiteDeployDeploy: + content: + application/json: + schema: + type: object + description: | + Deploy files can be provided in two ways: + 1. As a JSON object using 'files' (a hash mapping file paths to SHA1 digests), OR + 2. As a zip file using one of these methods: + - Set Content-Type to 'application/zip' and send the zip file as the raw request body + - Include the zip file content in the 'zip' field of this JSON object with Content-Type 'application/json' + properties: + files: + type: string + description: A hash mapping file paths to SHA1 digests of the file contents. (opaque JSON object) + zip: + type: string + format: binary + description: | + A zip file containing the site files to deploy. Alternative to 'files'. + To use this field, set Content-Type to 'application/json' and include the zip content here. + Alternatively, you can set Content-Type to 'application/zip' and send the zip as the raw request body (not as JSON). + draft: + type: boolean + async: + type: boolean + functions: + type: string + description: (opaque JSON object) + edge_functions: + type: string + description: |- + A hash mapping edge-function bundle formats to the code_sha of each bundle. The + response's required_edge_functions lists which of these still need to be uploaded. + (opaque JSON object) + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_config: + type: object + additionalProperties: + type: object + properties: + display_name: + type: string + generator: + type: string + build_data: + type: string + description: (opaque JSON object) + memory: + type: integer + description: | + The function's memory allocation in MB. Mutually exclusive with `vcpu`. + routes: + type: array + items: + type: object + properties: + pattern: + type: string + literal: + type: string + expression: + type: string + methods: + type: array + items: + type: string + enum: + - GET + - POST + - PUT + - PATCH + - DELETE + - OPTIONS + prefer_static: + type: boolean + excluded_routes: + type: array + items: + type: object + properties: + pattern: + type: string + literal: + type: string + expression: + type: string + priority: + type: integer + region: + type: string + traffic_rules: + type: object + properties: + action: + type: object + properties: + type: + type: string + config: + type: object + properties: + to: + type: string + rate_limit_config: + type: object + properties: + algorithm: + type: string + enum: + - sliding_window + window_size: + type: integer + window_limit: + type: integer + aggregate: + type: object + properties: + keys: + type: array + items: + type: object + properties: + type: + type: string + enum: + - ip + - domain + vcpu: + type: number + format: float + description: | + Number of vCPUs to provision for the function. Allowed range is + 0.5–2. + event_subscriptions: + type: array + items: + type: string + branch: + type: string + framework: + type: string + framework_version: + type: string + environment: + description: | + A list of deploy-specific environment variable data. Data specified this way applies only + to this specific deploy and is merged into any existing environment variables set on the + account and site. + + Deploy-specific environment variable data takes precedence over account and site + environment variable data: For example, a deploy-specific variable with the key `NODE_ENV` + will take priority over any existing site- and account-level environment variable data + with the key `NODE_ENV`. + + Environment variable data may be provided at one of two times: + + - When creating a new Deploy with deploy files (most common) + - When finalizing an existing Deploy with deploy files + + Once set, environment variables for a specific deploy cannot be modified. Subsequent + attempts to modify environment variable data for a deploy will be ignored. + type: array + items: + type: object + required: + - key + - value + - scopes + - is_secret + properties: + key: + type: string + value: + type: string + is_secret: + type: boolean + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + required: true + uploadDeployFileFileBody: + content: + application/octet-stream: + schema: + type: string + format: binary + required: true + schemas: + stackqlDeploysUploadFileBody: + type: object + required: + - file_body + properties: + file_body: + type: string + x-stackQL-stringOnly: true + description: Raw file contents sent as the application/octet-stream request body. + stackqlDeploysUploadFunctionBody: + type: object + required: + - file_body + properties: + file_body: + type: string + x-stackQL-stringOnly: true + description: Raw zipped function bundle sent as the application/octet-stream request body. + stackqlDeploysUploadEdgeFunctionBody: + type: object + required: + - file_body + properties: + file_body: + type: string + x-stackQL-stringOnly: true + description: Raw edge function bundle sent as the application/octet-stream request body. + x-stackQL-resources: + deploys: + id: netlify.deploys.deploys + name: deploys + title: Deploys + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1deploys/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1deploys/post' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1deploys~1{deploy_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1deploys~1{deploy_id}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1deploys~1{deploy_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + cancel: + operation: + $ref: '#/paths/~1deploys~1{deploy_id}~1cancel/post' + response: + mediaType: application/json + openAPIDocKey: '201' + restore: + operation: + $ref: '#/paths/~1sites~1{site_id}~1deploys~1{deploy_id}~1restore/post' + response: + mediaType: application/json + openAPIDocKey: '201' + rollback: + operation: + $ref: '#/paths/~1sites~1{site_id}~1rollback/put' + response: + mediaType: application/json + openAPIDocKey: '204' + get_by_id: + operation: + $ref: '#/paths/~1deploys~1{deploy_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + delete_by_id: + operation: + $ref: '#/paths/~1deploys~1{deploy_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + update_validations_report: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1deploys~1{deploy_id}~1validations_report/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + lock: + operation: + $ref: '#/paths/~1deploys~1{deploy_id}~1lock/post' + response: + mediaType: application/json + openAPIDocKey: '200' + unlock: + operation: + $ref: '#/paths/~1deploys~1{deploy_id}~1unlock/post' + response: + mediaType: application/json + openAPIDocKey: '200' + upload_file: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1deploys~1{deploy_id}~1files~1{path}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + mediaType: application/octet-stream + required: + - file_body + schema_override: + $ref: '#/components/schemas/stackqlDeploysUploadFileBody' + transform: + type: golang_template_json_v0.1.0 + body: '{{ .file_body }}' + upload_function: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1deploys~1{deploy_id}~1functions~1{name}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + mediaType: application/octet-stream + required: + - file_body + schema_override: + $ref: '#/components/schemas/stackqlDeploysUploadFunctionBody' + transform: + type: golang_template_json_v0.1.0 + body: '{{ .file_body }}' + upload_edge_function: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1deploys~1{deploy_id}~1edge_functions~1{code_sha}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + mediaType: application/octet-stream + required: + - file_body + schema_override: + $ref: '#/components/schemas/stackqlDeploysUploadEdgeFunctionBody' + transform: + type: golang_template_json_v0.1.0 + body: '{{ .file_body }}' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/deploys/methods/get' + - $ref: '#/components/x-stackQL-resources/deploys/methods/list' + - $ref: '#/components/x-stackQL-resources/deploys/methods/get_by_id' + insert: + - $ref: '#/components/x-stackQL-resources/deploys/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/deploys/methods/delete' + - $ref: '#/components/x-stackQL-resources/deploys/methods/delete_by_id' + replace: + - $ref: '#/components/x-stackQL-resources/deploys/methods/update' + deploy_keys: + id: netlify.deploys.deploy_keys + name: deploy_keys + title: Deploy Keys + methods: + list: + operation: + $ref: '#/paths/~1deploy_keys/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + operation: + $ref: '#/paths/~1deploy_keys/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1deploy_keys~1{key_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1deploy_keys~1{key_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/deploy_keys/methods/get' + - $ref: '#/components/x-stackQL-resources/deploy_keys/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/deploy_keys/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/deploy_keys/methods/delete' + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/dev_servers.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/dev_servers.yaml new file mode 100644 index 0000000..8a0ac55 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/dev_servers.yaml @@ -0,0 +1,705 @@ +openapi: 3.0.0 +info: + title: dev_servers API + description: netlify dev_servers API + version: 2.57.0 +paths: + /sites/{site_id}/dev_servers: + get: + operationId: listSiteDevServers + tags: + - devServer + parameters: + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + branch: + type: string + url: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + starting_at: + type: string + format: dateTime + error_at: + type: string + format: dateTime + live_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createSiteDevServer + tags: + - devServer + parameters: + - name: branch + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + branch: + type: string + url: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + starting_at: + type: string + format: dateTime + error_at: + type: string + format: dateTime + live_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSiteDevServers + tags: + - devServer + parameters: + - name: branch + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '202': + description: OK + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/dev_servers/{dev_server_id}: + get: + operationId: getSiteDevServer + tags: + - devServer + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + branch: + type: string + url: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + starting_at: + type: string + format: dateTime + error_at: + type: string + format: dateTime + live_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: dev_server_id + in: path + required: true + schema: + type: string + /sites/{site_id}/dev_servers/{dev_server_id}/activity: + post: + x-internal: true + operationId: markDevServerActivity + tags: + - devServer + responses: + '200': + description: OK + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: dev_server_id + in: path + required: true + schema: + type: string + /sites/{site_id}/dev_servers/{dev_server_id}/state: + post: + operationId: updateDevServerState + tags: + - devServer + requestBody: + content: + application/json: + schema: + type: object + required: + - state + properties: + state: + type: string + enum: + - starting + - live + - error + - done + task_id: + type: string + error: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + branch: + type: string + url: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + starting_at: + type: string + format: dateTime + error_at: + type: string + format: dateTime + live_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + '409': + description: Conflict + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: dev_server_id + in: path + required: true + schema: + type: string + /sites/{site_id}/dev_server_hooks: + get: + operationId: listSiteDevServerHooks + tags: + - devServerHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + type: + type: string + enum: + - new_dev_server + - content_refresh + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + post: + operationId: createSiteDevServerHook + tags: + - devServerHook + requestBody: + $ref: '#/components/requestBodies/createSiteDevServerHookDevserverhook' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + type: + type: string + enum: + - new_dev_server + - content_refresh + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/dev_server_hooks/{id}: + get: + operationId: getSiteDevServerHook + tags: + - devServerHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + type: + type: string + enum: + - new_dev_server + - content_refresh + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + put: + operationId: updateSiteDevServerHook + tags: + - devServerHook + requestBody: + $ref: '#/components/requestBodies/createSiteDevServerHookDevserverhook' + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + delete: + operationId: deleteSiteDevServerHook + tags: + - devServerHook + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string +components: + requestBodies: + createSiteDevServerHookDevserverhook: + content: + application/json: + schema: + type: object + properties: + title: + type: string + branch: + type: string + type: + type: string + enum: + - new_dev_server + - content_refresh + required: true + schemas: {} + x-stackQL-resources: + dev_servers: + id: netlify.dev_servers.dev_servers + name: dev_servers + title: Dev Servers + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1dev_servers/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + operation: + $ref: '#/paths/~1sites~1{site_id}~1dev_servers/post' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1dev_servers/delete' + response: + mediaType: application/json + openAPIDocKey: '202' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1dev_servers~1{dev_server_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + mark_activity: + operation: + $ref: >- + #/paths/~1sites~1{site_id}~1dev_servers~1{dev_server_id}~1activity/post + response: + mediaType: application/json + openAPIDocKey: '200' + update_state: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: >- + #/paths/~1sites~1{site_id}~1dev_servers~1{dev_server_id}~1state/post + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/dev_servers/methods/get' + - $ref: '#/components/x-stackQL-resources/dev_servers/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/dev_servers/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/dev_servers/methods/delete' + replace: [] + dev_server_hooks: + id: netlify.dev_servers.dev_server_hooks + name: dev_server_hooks + title: Dev Server Hooks + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1dev_server_hooks/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1dev_server_hooks/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1dev_server_hooks~1{id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1dev_server_hooks~1{id}/put' + response: + mediaType: application/json + openAPIDocKey: '204' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1dev_server_hooks~1{id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/dev_server_hooks/methods/get' + - $ref: '#/components/x-stackQL-resources/dev_server_hooks/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/dev_server_hooks/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/dev_server_hooks/methods/delete' + replace: + - $ref: '#/components/x-stackQL-resources/dev_server_hooks/methods/update' +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/dns.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/dns.yaml new file mode 100644 index 0000000..73275f3 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/dns.yaml @@ -0,0 +1,811 @@ +openapi: 3.0.0 +info: + title: dns API + description: netlify dns API + version: 2.57.0 +paths: + /dns_zones: + post: + operationId: createDnsZone + tags: + - dnsZone + requestBody: + content: + application/json: + schema: + type: object + properties: + account_slug: + type: string + site_id: + type: string + name: + type: string + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + get: + operationId: getDnsZones + tags: + - dnsZone + parameters: + - name: account_slug + in: query + required: false + schema: + type: string + responses: + '200': + description: get all DNS zones the user has access to + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /dns_zones/{zone_id}: + get: + operationId: getDnsZone + tags: + - dnsZone + responses: + '200': + description: get a single DNS zone + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteDnsZone + tags: + - dnsZone + responses: + '204': + description: delete a single DNS zone + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + /dns_zones/{zone_id}/transfer: + put: + operationId: transferDnsZone + tags: + - dnsZone + responses: + '200': + description: transfer a DNS zone to another account + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + - name: account_id + in: query + description: the account of the dns zone + required: true + schema: + type: string + - name: transfer_account_id + in: query + description: the account you want to transfer the dns zone to + required: true + schema: + type: string + - name: transfer_user_id + in: query + description: the user you want to transfer the dns zone to + required: true + schema: + type: string + /dns_zones/{zone_id}/dns_records: + get: + operationId: getDnsRecords + tags: + - dnsZone + responses: + '200': + description: get all DNS records for a single DNS zone + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + post: + operationId: createDnsRecord + tags: + - dnsZone + requestBody: + content: + application/json: + schema: + type: object + properties: + type: + type: string + hostname: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + weight: + type: integer + format: int64 + port: + type: integer + format: int64 + flag: + type: integer + format: int64 + tag: + type: string + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + /dns_zones/{zone_id}/dns_records/{dns_record_id}: + get: + operationId: getIndividualDnsRecord + tags: + - dnsZone + responses: + '200': + description: get a single DNS record + content: + application/json: + schema: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + - name: dns_record_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteDnsRecord + tags: + - dnsZone + responses: + '204': + description: record deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + - name: dns_record_id + in: path + required: true + schema: + type: string +components: + schemas: {} + x-stackQL-resources: + dns_zones: + id: netlify.dns.dns_zones + name: dns_zones + title: Dns Zones + methods: + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1dns_zones/post' + response: + mediaType: application/json + openAPIDocKey: '201' + list: + operation: + $ref: '#/paths/~1dns_zones/get' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1dns_zones~1{zone_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1dns_zones~1{zone_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + transfer: + operation: + $ref: '#/paths/~1dns_zones~1{zone_id}~1transfer/put' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/dns_zones/methods/get' + - $ref: '#/components/x-stackQL-resources/dns_zones/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/dns_zones/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/dns_zones/methods/delete' + replace: [] + dns_records: + id: netlify.dns.dns_records + name: dns_records + title: Dns Records + methods: + list: + operation: + $ref: '#/paths/~1dns_zones~1{zone_id}~1dns_records/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1dns_zones~1{zone_id}~1dns_records/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1dns_zones~1{zone_id}~1dns_records~1{dns_record_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: >- + #/paths/~1dns_zones~1{zone_id}~1dns_records~1{dns_record_id}/delete + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/dns_records/methods/get' + - $ref: '#/components/x-stackQL-resources/dns_records/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/dns_records/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/dns_records/methods/delete' + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/dns_zone.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/dns_zone.yaml deleted file mode 100644 index 1090f1a..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/dns_zone.yaml +++ /dev/null @@ -1,557 +0,0 @@ -paths: - /dns_zones: - get: - parameters: - - in: query - name: account_slug - required: false - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/dnsZones' - description: get all DNS zones the user has access to - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: getDnsZones - post: - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/dnsZone' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: createDnsZone - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/dnsZoneSetup' - required: true - /dns_zones/{zone_id}: - delete: - responses: - '204': - description: delete a single DNS zone - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: deleteDnsZone - parameters: &ref_0 - - in: path - name: zone_id - required: true - schema: - type: string - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/dnsZone' - description: get a single DNS zone - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: getDnsZone - parameters: *ref_0 - /dns_zones/{zone_id}/dns_records: - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/dnsRecords' - description: get all DNS records for a single DNS zone - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: getDnsRecords - parameters: &ref_1 - - in: path - name: zone_id - required: true - schema: - type: string - post: - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/dnsRecord' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: createDnsRecord - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/dnsRecordCreate' - required: true - parameters: *ref_1 - /dns_zones/{zone_id}/dns_records/{dns_record_id}: - delete: - responses: - '204': - description: record deleted - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: deleteDnsRecord - parameters: &ref_2 - - in: path - name: zone_id - required: true - schema: - type: string - - in: path - name: dns_record_id - required: true - schema: - type: string - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/dnsRecord' - description: get a single DNS record - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: getIndividualDnsRecord - parameters: *ref_2 - /dns_zones/{zone_id}/transfer: - put: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/dnsZone' - description: transfer a DNS zone to another account - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: transferDnsZone - parameters: - - in: path - name: zone_id - required: true - schema: - type: string - - description: the account of the dns zone - in: query - name: account_id - required: true - schema: - type: string - - description: the account you want to transfer the dns zone to - in: query - name: transfer_account_id - required: true - schema: - type: string - - description: the user you want to transfer the dns zone to - in: query - name: transfer_user_id - required: true - schema: - type: string - /sites/{site_id}/dns: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/dnsZone' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: getDNSForSite - parameters: &ref_3 - - in: path - name: site_id - required: true - schema: - type: string - put: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/dnsZone' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - dnsZone - operationId: configureDNSForSite - parameters: *ref_3 -components: - schemas: - dnsZones: - items: - $ref: '#/components/schemas/dnsZone' - type: array - dnsZone: - properties: - account_id: - type: string - account_name: - type: string - account_slug: - type: string - created_at: - format: dateTime - type: string - dedicated: - type: boolean - dns_servers: - items: - type: string - type: array - domain: - type: string - errors: - items: - type: string - type: array - id: - type: string - ipv6_enabled: - type: boolean - name: - type: string - records: - items: - $ref: '#/components/schemas/dnsRecord' - type: array - site_id: - type: string - supported_record_types: - items: - type: string - type: array - updated_at: - format: dateTime - type: string - user_id: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - dnsZoneSetup: - properties: - account_slug: - type: string - name: - type: string - site_id: - type: string - type: object - dnsRecord: - properties: - dns_zone_id: - type: string - flag: - type: integer - hostname: - type: string - id: - type: string - managed: - type: boolean - priority: - format: int64 - type: integer - site_id: - type: string - tag: - type: string - ttl: - format: int64 - type: integer - type: - type: string - value: - type: string - type: object - dnsRecords: - items: - $ref: '#/components/schemas/dnsRecord' - type: array - dnsRecordCreate: - properties: - flag: - format: int64 - type: integer - hostname: - type: string - port: - format: int64 - type: integer - priority: - format: int64 - type: integer - tag: - type: string - ttl: - format: int64 - type: integer - type: - type: string - value: - type: string - weight: - format: int64 - type: integer - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - dns_zones: - id: netlify.dns_zone.dns_zones - name: dns_zones - title: Dns_zones - methods: - getDnsZones: - operation: - $ref: '#/paths/~1dns_zones/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createDnsZone: - operation: - $ref: '#/paths/~1dns_zones/post' - response: - mediaType: application/json - openAPIDocKey: '201' - deleteDnsZone: - operation: - $ref: '#/paths/~1dns_zones~1{zone_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - getDnsZone: - operation: - $ref: '#/paths/~1dns_zones~1{zone_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/dns_zones/methods/getDnsZone' - - $ref: '#/components/x-stackQL-resources/dns_zones/methods/getDnsZones' - insert: - - $ref: '#/components/x-stackQL-resources/dns_zones/methods/createDnsZone' - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/dns_zones/methods/deleteDnsZone' - dns_zones_dns_records: - id: netlify.dns_zone.dns_zones_dns_records - name: dns_zones_dns_records - title: Dns_zones_dns_records - methods: - getDnsRecords: - operation: - $ref: '#/paths/~1dns_zones~1{zone_id}~1dns_records/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createDnsRecord: - operation: - $ref: '#/paths/~1dns_zones~1{zone_id}~1dns_records/post' - response: - mediaType: application/json - openAPIDocKey: '201' - deleteDnsRecord: - operation: - $ref: '#/paths/~1dns_zones~1{zone_id}~1dns_records~1{dns_record_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - getIndividualDnsRecord: - operation: - $ref: '#/paths/~1dns_zones~1{zone_id}~1dns_records~1{dns_record_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/dns_zones_dns_records/methods/getIndividualDnsRecord' - - $ref: '#/components/x-stackQL-resources/dns_zones_dns_records/methods/getDnsRecords' - insert: - - $ref: '#/components/x-stackQL-resources/dns_zones_dns_records/methods/createDnsRecord' - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/dns_zones_dns_records/methods/deleteDnsRecord' - dns_zones_transfer: - id: netlify.dns_zone.dns_zones_transfer - name: dns_zones_transfer - title: Dns_zones_transfer - methods: - transferDnsZone: - operation: - $ref: '#/paths/~1dns_zones~1{zone_id}~1transfer/put' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] - sites_dns: - id: netlify.dns_zone.sites_dns - name: sites_dns - title: Sites_dns - methods: - getDNSForSite: - operation: - $ref: '#/paths/~1sites~1{site_id}~1dns/get' - response: - mediaType: application/json - openAPIDocKey: '200' - configureDNSForSite: - operation: - $ref: '#/paths/~1sites~1{site_id}~1dns/put' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_dns/methods/getDNSForSite' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: dnsZone - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - dns_zone - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/env.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/env.yaml new file mode 100644 index 0000000..a797da6 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/env.yaml @@ -0,0 +1,1335 @@ +openapi: 3.0.0 +info: + title: env API + description: netlify env API + version: 2.57.0 +paths: + /accounts/{account_id}/env: + get: + tags: + - environmentVariables + operationId: getEnvVars + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: context_name + description: Filter by deploy context + required: false + in: query + schema: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - name: scope + description: Filter by scope + required: false + in: query + schema: + type: string + enum: + - builds + - functions + - runtime + - post-processing + - name: site_id + description: If specified, only return environment variables set on this site + required: false + in: query + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + env_values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Returns all environment variables for an account or site. An account corresponds to a team in the Netlify UI. + post: + tags: + - environmentVariables + operationId: createEnvVars + description: Creates new environment variables. Granular scopes are available on Pro plans and above. + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, create an environment variable on the site level, not the account level + required: false + in: query + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/stackqlEnvVarsCreateBody' + required: true + responses: + '201': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /accounts/{account_id}/env/{key}: + get: + tags: + - environmentVariables + operationId: getEnvVar + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: key + description: The environment variable key (case-sensitive) + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, return the environment variable for a specific site (no merging is performed) + required: false + in: query + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + env_values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Returns an individual environment variable. + put: + tags: + - environmentVariables + operationId: updateEnvVar + description: Updates an existing environment variable and all of its values. Existing values will be replaced by values provided. + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: key + description: The existing environment variable key name (case-sensitive) + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, update an environment variable set on this site + required: false + in: query + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/stackqlEnvVarsUpdateBody' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + patch: + tags: + - environmentVariables + operationId: setEnvVarValue + description: Updates or creates a new value for an existing environment variable. + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: key + description: The existing environment variable key name (case-sensitive) + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, update an environment variable set on this site + in: query + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + properties: + context: + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. `branch` must be provided with a value in `context_parameter`. + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + context_parameter: + description: An additional parameter for custom branches. Currently, this is used for providing a branch name when `context=branch`. + type: string + value: + description: The environment variable's unencrypted value + type: string + x-stackQL-stringOnly: true + responses: + '201': + description: Created (success) + content: + application/json: + schema: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + tags: + - environmentVariables + operationId: deleteEnvVar + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: key + description: The environment variable key (case-sensitive) + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, delete the environment variable from this site + required: false + in: query + schema: + type: string + responses: + '204': + description: No Content (success) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Deletes an environment variable + /accounts/{account_id}/env/{key}/value/{id}: + delete: + tags: + - environmentVariables + operationId: deleteEnvVarValue + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: id + description: The environment variable value's ID + required: true + in: path + schema: + type: string + - name: key + description: The environment variable key name (case-sensitive) + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, delete the value from an environment variable on this site + required: false + in: query + schema: + type: string + responses: + '204': + description: No Content (success) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Deletes a specific environment variable value. + /sites/{site_id}/env: + get: + tags: + - environmentVariables + operationId: getSiteEnvVars + parameters: + - name: context_name + description: Filter by deploy context + required: false + in: query + schema: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - name: scope + description: Filter by scope + required: false + in: query + schema: + type: string + enum: + - builds + - functions + - runtime + - post_processing + - name: site_id + description: Scope response to site_id + required: true + in: path + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + env_values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Returns all environment variables for a site. This convenience method behaves the same as `getEnvVars` but doesn't require an `account_id` as input. +components: + schemas: + stackqlEnvVarInput: + type: object + required: + - key + - values + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to (Pro plans and above) + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify and never displayed in the UI + values: + type: array + items: + type: object + properties: + value: + type: string + description: The environment variable's unencrypted value + x-stackQL-stringOnly: true + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used + context_parameter: + type: string + description: An additional parameter for custom branches (the branch name when context=branch) + stackqlEnvVarsCreateBody: + type: object + required: + - env_vars + properties: + env_vars: + type: array + description: Array of environment variables to create, each with `key`, optional `scopes` (Pro plans and above), optional `is_secret` and `values` (array of `{value, context, context_parameter}`). The whole array is sent as the request body. + items: + $ref: '#/components/schemas/stackqlEnvVarInput' + stackqlEnvVarsUpdateBody: + type: object + required: + - env_key + - env_values + properties: + env_key: + type: string + description: The environment variable key (must equal the `key` in the WHERE clause; the API requires it in both the path and the body, and a column named `key` is routed to the path). + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to (Pro plans and above) + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify and never displayed in the UI + env_values: + type: array + description: 'The variable''s values per deploy context (sent as the API''s `values` field): array of `{value, context, context_parameter}`.' + items: + type: object + properties: + value: + type: string + description: The environment variable's unencrypted value + x-stackQL-stringOnly: true + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used + context_parameter: + type: string + description: An additional parameter for custom branches (the branch name when context=branch) + stackqlEnvVarsListResponse: + type: array + items: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + env_values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + stackqlEnvVarsListForSiteResponse: + type: array + items: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + env_values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + stackqlEnvVarsGetResponse: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + env_values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + x-stackQL-resources: + env_vars: + id: netlify.env.env_vars + name: env_vars + title: Env Vars + methods: + list: + operation: + $ref: '#/paths/~1accounts~1{account_id}~1env/get' + response: + mediaType: application/json + openAPIDocKey: '200' + overrideMediaType: application/json + schema_override: + $ref: '#/components/schemas/stackqlEnvVarsListResponse' + transform: + type: golang_template_json_v0.3.0 + body: '{{ if eq (kindOf .) "slice" }}[{{ range $i, $e := . }}{{ if $i }},{{ end }}{"env_values": {{ toJson (index $e "values") }}{{ range $k, $v := $e }}{{ if ne $k "values" }}, {{ toJson $k }}: {{ toJson $v }}{{ end }}{{ end }}}{{ end }}]{{ else }}{{ $e := . }}{"env_values": {{ toJson (index $e "values") }}{{ range $k, $v := $e }}{{ if ne $k "values" }}, {{ toJson $k }}: {{ toJson $v }}{{ end }}{{ end }}}{{ end }}' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1accounts~1{account_id}~1env/post' + response: + mediaType: application/json + openAPIDocKey: '201' + request: + mediaType: application/json + required: + - env_vars + schema_override: + $ref: '#/components/schemas/stackqlEnvVarsCreateBody' + transform: + type: golang_template_json_v0.3.0 + body: '{{ toJson .env_vars }}' + get: + operation: + $ref: '#/paths/~1accounts~1{account_id}~1env~1{key}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + overrideMediaType: application/json + schema_override: + $ref: '#/components/schemas/stackqlEnvVarsGetResponse' + transform: + type: golang_template_json_v0.3.0 + body: '{{ if eq (kindOf .) "slice" }}[{{ range $i, $e := . }}{{ if $i }},{{ end }}{"env_values": {{ toJson (index $e "values") }}{{ range $k, $v := $e }}{{ if ne $k "values" }}, {{ toJson $k }}: {{ toJson $v }}{{ end }}{{ end }}}{{ end }}]{{ else }}{{ $e := . }}{"env_values": {{ toJson (index $e "values") }}{{ range $k, $v := $e }}{{ if ne $k "values" }}, {{ toJson $k }}: {{ toJson $v }}{{ end }}{{ end }}}{{ end }}' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1accounts~1{account_id}~1env~1{key}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + request: + mediaType: application/json + required: + - env_key + - env_values + schema_override: + $ref: '#/components/schemas/stackqlEnvVarsUpdateBody' + transform: + type: golang_template_json_v0.3.0 + body: '{{"{"}}"key": {{ toJson .env_key }}, {{ if .scopes }}"scopes": {{ toJson .scopes }}, {{ end }}{{ if .is_secret }}"is_secret": {{ toJson .is_secret }}, {{ end }}"values": {{ toJson .env_values }}}' + set_value: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1accounts~1{account_id}~1env~1{key}/patch' + response: + mediaType: application/json + openAPIDocKey: '201' + delete: + operation: + $ref: '#/paths/~1accounts~1{account_id}~1env~1{key}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + delete_value: + operation: + $ref: '#/paths/~1accounts~1{account_id}~1env~1{key}~1value~1{id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + list_for_site: + operation: + $ref: '#/paths/~1sites~1{site_id}~1env/get' + response: + mediaType: application/json + openAPIDocKey: '200' + overrideMediaType: application/json + schema_override: + $ref: '#/components/schemas/stackqlEnvVarsListForSiteResponse' + transform: + type: golang_template_json_v0.3.0 + body: '{{ if eq (kindOf .) "slice" }}[{{ range $i, $e := . }}{{ if $i }},{{ end }}{"env_values": {{ toJson (index $e "values") }}{{ range $k, $v := $e }}{{ if ne $k "values" }}, {{ toJson $k }}: {{ toJson $v }}{{ end }}{{ end }}}{{ end }}]{{ else }}{{ $e := . }}{"env_values": {{ toJson (index $e "values") }}{{ range $k, $v := $e }}{{ if ne $k "values" }}, {{ toJson $k }}: {{ toJson $v }}{{ end }}{{ end }}}{{ end }}' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/env_vars/methods/get' + - $ref: '#/components/x-stackQL-resources/env_vars/methods/list' + - $ref: '#/components/x-stackQL-resources/env_vars/methods/list_for_site' + insert: + - $ref: '#/components/x-stackQL-resources/env_vars/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/env_vars/methods/set_value' + delete: + - $ref: '#/components/x-stackQL-resources/env_vars/methods/delete_value' + - $ref: '#/components/x-stackQL-resources/env_vars/methods/delete' + replace: + - $ref: '#/components/x-stackQL-resources/env_vars/methods/update' +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/file.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/file.yaml deleted file mode 100644 index 37094c7..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/file.yaml +++ /dev/null @@ -1,248 +0,0 @@ -paths: - /deploys/{deploy_id}/files/{path}: - put: - parameters: - - in: path - name: deploy_id - required: true - schema: - type: string - - in: path - name: path - required: true - schema: - type: string - - in: query - name: size - schema: - type: integer - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/file' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - file - operationId: uploadDeployFile - requestBody: - content: - application/json: - schema: - format: binary - type: string - application/octet-stream: - schema: - format: binary - type: string - required: true - /sites/{site_id}/files: - get: - parameters: - - in: path - name: site_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/file' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - file - operationId: listSiteFiles - /sites/{site_id}/files/{file_path}: - get: - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: file_path - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/file' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - file - operationId: getSiteFileByPathName -components: - schemas: - file: - properties: - id: - type: string - mime_type: - type: string - path: - type: string - sha: - type: string - size: - format: int64 - type: integer - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - deploys_files: - id: netlify.file.deploys_files - name: deploys_files - title: Deploys_files - methods: - uploadDeployFile: - operation: - $ref: '#/paths/~1deploys~1{deploy_id}~1files~1{path}/put' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] - sites_files: - id: netlify.file.sites_files - name: sites_files - title: Sites_files - methods: - listSiteFiles: - operation: - $ref: '#/paths/~1sites~1{site_id}~1files/get' - response: - mediaType: application/json - openAPIDocKey: '200' - getSiteFileByPathName: - operation: - $ref: '#/paths/~1sites~1{site_id}~1files~1{file_path}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_files/methods/getSiteFileByPathName' - - $ref: '#/components/x-stackQL-resources/sites_files/methods/listSiteFiles' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: file - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - file - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/form.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/form.yaml deleted file mode 100644 index abd3537..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/form.yaml +++ /dev/null @@ -1,197 +0,0 @@ -paths: - /sites/{site_id}/forms: - get: - parameters: - - in: path - name: site_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/form' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - form - operationId: listSiteForms - /sites/{site_id}/forms/{form_id}: - delete: - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: form_id - required: true - schema: - type: string - responses: - '204': - description: Deleted - default: - $ref: '#/components/responses/error' - tags: - - form - operationId: deleteSiteForm -components: - schemas: - form: - properties: - paths: - items: - type: string - type: array - created_at: - format: dateTime - type: string - fields: - items: - type: object - type: array - id: - type: string - name: - type: string - site_id: - type: string - submission_count: - format: int32 - type: integer - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - sites_forms: - id: netlify.form.sites_forms - name: sites_forms - title: Sites_forms - methods: - listSiteForms: - operation: - $ref: '#/paths/~1sites~1{site_id}~1forms/get' - response: - mediaType: application/json - openAPIDocKey: '200' - deleteSiteForm: - operation: - $ref: '#/paths/~1sites~1{site_id}~1forms~1{form_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_forms/methods/listSiteForms' - insert: [] - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/sites_forms/methods/deleteSiteForm' -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: form - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - form - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/forms.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/forms.yaml new file mode 100644 index 0000000..08ba3b3 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/forms.yaml @@ -0,0 +1,431 @@ +openapi: 3.0.0 +info: + title: forms API + description: netlify forms API + version: 2.57.0 +paths: + /sites/{site_id}/forms: + get: + operationId: listSiteForms + tags: + - form + parameters: + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + name: + type: string + paths: + type: array + items: + type: string + submission_count: + type: integer + format: int32 + fields: + type: array + items: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/forms/{form_id}: + delete: + operationId: deleteSiteForm + tags: + - form + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: form_id + in: path + required: true + schema: + type: string + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/submissions: + get: + operationId: listSiteSubmissions + tags: + - submission + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + number: + type: integer + format: int32 + email: + type: string + name: + type: string + first_name: + type: string + last_name: + type: string + company: + type: string + summary: + type: string + body: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + site_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /forms/{form_id}/submissions: + get: + operationId: listFormSubmissions + tags: + - submission + parameters: + - name: form_id + in: path + required: true + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + number: + type: integer + format: int32 + email: + type: string + name: + type: string + first_name: + type: string + last_name: + type: string + company: + type: string + summary: + type: string + body: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + site_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /submissions/{submission_id}: + get: + operationId: listFormSubmission + tags: + - submission + parameters: + - name: query + in: query + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: submission_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + number: + type: integer + format: int32 + email: + type: string + name: + type: string + first_name: + type: string + last_name: + type: string + company: + type: string + summary: + type: string + body: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + site_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSubmission + tags: + - submission + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: submission_id + in: path + required: true + schema: + type: string +components: + schemas: {} + x-stackQL-resources: + forms: + id: netlify.forms.forms + name: forms + title: Forms + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1forms/get' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1forms~1{form_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/forms/methods/list' + insert: [] + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/forms/methods/delete' + replace: [] + submissions: + id: netlify.forms.submissions + name: submissions + title: Submissions + methods: + list_for_site: + operation: + $ref: '#/paths/~1sites~1{site_id}~1submissions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + list: + operation: + $ref: '#/paths/~1forms~1{form_id}~1submissions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1submissions~1{submission_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1submissions~1{submission_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/submissions/methods/list_for_site' + - $ref: '#/components/x-stackQL-resources/submissions/methods/list' + - $ref: '#/components/x-stackQL-resources/submissions/methods/get' + insert: [] + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/submissions/methods/delete' + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/function.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/function.yaml deleted file mode 100644 index d48b06b..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/function.yaml +++ /dev/null @@ -1,176 +0,0 @@ -paths: - /deploys/{deploy_id}/functions/{name}: - put: - parameters: - - in: path - name: deploy_id - required: true - schema: - type: string - - in: path - name: name - required: true - schema: - type: string - - in: query - name: runtime - schema: - type: string - - in: query - name: size - schema: - type: integer - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/function' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - function - operationId: uploadDeployFunction - requestBody: - content: - application/json: - schema: - format: binary - type: string - application/octet-stream: - schema: - format: binary - type: string - required: true -components: - schemas: - function: - properties: - id: - type: string - name: - type: string - sha: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - deploys_functions: - id: netlify.function.deploys_functions - name: deploys_functions - title: Deploys_functions - methods: - uploadDeployFunction: - operation: - $ref: '#/paths/~1deploys~1{deploy_id}~1functions~1{name}/put' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: function - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - function - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/functions.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/functions.yaml new file mode 100644 index 0000000..d6e3893 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/functions.yaml @@ -0,0 +1,94 @@ +openapi: 3.0.0 +info: + title: functions API + description: netlify functions API + version: 2.57.0 +paths: + /sites/{site_id}/functions: + get: + operationId: searchSiteFunctions + tags: + - function + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: filter + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + branch: + type: string + created_at: + type: string + format: dateTime + functions: + type: array + items: + type: string + description: (opaque JSON object) + id: + type: string + log_type: + type: string + provider: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false +components: + schemas: {} + x-stackQL-resources: + functions: + id: netlify.functions.functions + name: functions + title: Functions + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1functions/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/functions/methods/list' + insert: [] + update: [] + delete: [] + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/hook.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/hook.yaml deleted file mode 100644 index 8a87b77..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/hook.yaml +++ /dev/null @@ -1,305 +0,0 @@ -paths: - /hooks: - get: - parameters: - - in: query - name: site_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/hook' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - hook - operationId: listHooksBySiteId - post: - parameters: - - in: query - name: site_id - required: true - schema: - type: string - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/hook' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - hook - operationId: createHookBySiteId - requestBody: - $ref: '#/components/requestBodies/hook' - /hooks/{hook_id}: - delete: - responses: - '204': - description: No content - tags: - - hook - operationId: deleteHook - parameters: &ref_0 - - in: path - name: hook_id - required: true - schema: - type: string - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/hook' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - hook - operationId: getHook - parameters: *ref_0 - put: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/hook' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - hook - operationId: updateHook - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/hook' - required: true - parameters: *ref_0 - /hooks/{hook_id}/enable: - post: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/hook' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - hook - operationId: enableHook - parameters: - - in: path - name: hook_id - required: true - schema: - type: string -components: - schemas: - hook: - properties: - created_at: - format: dateTime - type: string - data: - type: object - disabled: - type: boolean - event: - type: string - id: - type: string - site_id: - type: string - type: - type: string - updated_at: - format: dateTime - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: - hook: - content: - application/json: - schema: - $ref: '#/components/schemas/hook' - required: true - headers: {} - links: {} - x-stackQL-resources: - hooks: - id: netlify.hook.hooks - name: hooks - title: Hooks - methods: - listHooksBySiteId: - operation: - $ref: '#/paths/~1hooks/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createHookBySiteId: - operation: - $ref: '#/paths/~1hooks/post' - response: - mediaType: application/json - openAPIDocKey: '201' - deleteHook: - operation: - $ref: '#/paths/~1hooks~1{hook_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - getHook: - operation: - $ref: '#/paths/~1hooks~1{hook_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - updateHook: - operation: - $ref: '#/paths/~1hooks~1{hook_id}/put' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/hooks/methods/getHook' - - $ref: '#/components/x-stackQL-resources/hooks/methods/listHooksBySiteId' - insert: - - $ref: '#/components/x-stackQL-resources/hooks/methods/createHookBySiteId' - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/hooks/methods/deleteHook' - hooks_enable: - id: netlify.hook.hooks_enable - name: hooks_enable - title: Hooks_enable - methods: - enableHook: - operation: - $ref: '#/paths/~1hooks~1{hook_id}~1enable/post' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: hook - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - hook - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/hook_type.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/hook_type.yaml deleted file mode 100644 index c4ecbc5..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/hook_type.yaml +++ /dev/null @@ -1,153 +0,0 @@ -paths: - /hooks/types: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/hookType' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - hookType - operationId: listHookTypes -components: - schemas: - hookType: - properties: - events: - items: - type: string - type: array - fields: - items: - type: object - type: array - name: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - hooks_types: - id: netlify.hook_type.hooks_types - name: hooks_types - title: Hooks_types - methods: - listHookTypes: - operation: - $ref: '#/paths/~1hooks~1types/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/hooks_types/methods/listHookTypes' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: hookType - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - hook_type - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/hooks.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/hooks.yaml new file mode 100644 index 0000000..20a2a32 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/hooks.yaml @@ -0,0 +1,445 @@ +openapi: 3.0.0 +info: + title: hooks API + description: netlify hooks API + version: 2.57.0 +paths: + /hooks: + get: + operationId: listHooksBySiteId + tags: + - hook + parameters: + - name: site_id + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createHookBySiteId + tags: + - hook + parameters: + - name: site_id + in: query + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/createHookBySiteIdHook' + responses: + '201': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /hooks/{hook_id}: + get: + operationId: getHook + tags: + - hook + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: hook_id + in: path + required: true + schema: + type: string + put: + operationId: updateHook + tags: + - hook + requestBody: + $ref: '#/components/requestBodies/createHookBySiteIdHook' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: hook_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteHook + tags: + - hook + responses: + '204': + description: No content + parameters: + - name: hook_id + in: path + required: true + schema: + type: string + /hooks/{hook_id}/enable: + post: + operationId: enableHook + tags: + - hook + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: hook_id + in: path + required: true + schema: + type: string + /hooks/types: + get: + operationId: listHookTypes + tags: + - hookType + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + name: + type: string + events: + type: array + items: + type: string + fields: + type: array + items: + type: string + description: (opaque JSON object) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false +components: + requestBodies: + createHookBySiteIdHook: + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + required: true + schemas: {} + x-stackQL-resources: + hooks: + id: netlify.hooks.hooks + name: hooks + title: Hooks + methods: + list: + operation: + $ref: '#/paths/~1hooks/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1hooks/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1hooks~1{hook_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1hooks~1{hook_id}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1hooks~1{hook_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + enable: + operation: + $ref: '#/paths/~1hooks~1{hook_id}~1enable/post' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/hooks/methods/get' + - $ref: '#/components/x-stackQL-resources/hooks/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/hooks/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/hooks/methods/delete' + replace: + - $ref: '#/components/x-stackQL-resources/hooks/methods/update' + hook_types: + id: netlify.hooks.hook_types + name: hook_types + title: Hook Types + methods: + list: + operation: + $ref: '#/paths/~1hooks~1types/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/hook_types/methods/list' + insert: [] + update: [] + delete: [] + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/member.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/member.yaml deleted file mode 100644 index 65b8b50..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/member.yaml +++ /dev/null @@ -1,182 +0,0 @@ -paths: - /{account_slug}/members: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/member' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - member - operationId: listMembersForAccount - parameters: &ref_0 - - in: path - name: account_slug - required: true - schema: - type: string - post: - parameters: *ref_0 - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/member' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - member - operationId: addMemberToAccount -components: - schemas: - member: - properties: - avatar: - type: string - email: - type: string - full_name: - type: string - id: - type: string - role: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - members: - id: netlify.member.members - name: members - title: Members - methods: - listMembersForAccount: - operation: - $ref: '#/paths/~1{account_slug}~1members/get' - response: - mediaType: application/json - openAPIDocKey: '200' - addMemberToAccount: - operation: - $ref: '#/paths/~1{account_slug}~1members/post' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/members/methods/listMembersForAccount' - insert: - - $ref: '#/components/x-stackQL-resources/members/methods/addMemberToAccount' - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: member - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - member - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/metadata.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/metadata.yaml deleted file mode 100644 index 4e0d486..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/metadata.yaml +++ /dev/null @@ -1,168 +0,0 @@ -paths: - /sites/{site_id}/metadata: - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/metadata' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - metadata - operationId: getSiteMetadata - parameters: &ref_0 - - in: path - name: site_id - required: true - schema: - type: string - put: - responses: - '204': - description: No content - default: - $ref: '#/components/responses/error' - tags: - - metadata - operationId: updateSiteMetadata - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/metadata' - required: true - parameters: *ref_0 -components: - schemas: - metadata: - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - sites: - id: netlify.metadata.sites - name: sites - title: Sites - methods: - getSiteMetadata: - operation: - $ref: '#/paths/~1sites~1{site_id}~1metadata/get' - response: - mediaType: application/json - openAPIDocKey: '200' - updateSiteMetadata: - operation: - $ref: '#/paths/~1sites~1{site_id}~1metadata/put' - response: - mediaType: application/json - openAPIDocKey: '204' - sqlVerbs: - select: [] - # - $ref: '#/components/x-stackQL-resources/sites/methods/getSiteMetadata' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: metadata - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - metadata - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/oauth.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/oauth.yaml new file mode 100644 index 0000000..e1a9dfc --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/oauth.yaml @@ -0,0 +1,221 @@ +openapi: 3.0.0 +info: + title: oauth API + description: netlify oauth API + version: 2.57.0 +paths: + /oauth/tickets: + post: + operationId: createTicket + tags: + - ticket + parameters: + - name: client_id + in: query + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + properties: + message: + type: string + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + client_id: + type: string + authorized: + type: boolean + created_at: + type: string + format: dateTime + '401': + description: OAuth application not found + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + '422': + description: Validation error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /oauth/tickets/{ticket_id}: + get: + operationId: showTicket + tags: + - ticket + parameters: + - name: ticket_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + type: object + properties: + id: + type: string + client_id: + type: string + authorized: + type: boolean + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /oauth/tickets/{ticket_id}/exchange: + post: + operationId: exchangeTicket + tags: + - accessToken + parameters: + - name: ticket_id + in: path + required: true + schema: + type: string + responses: + '201': + description: ok + content: + application/json: + schema: + type: object + properties: + id: + type: string + access_token: + type: string + user_id: + type: string + user_email: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false +components: + x-stackQL-resources: + tickets: + id: netlify.oauth.tickets + name: tickets + title: Tickets + methods: + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1oauth~1tickets/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1oauth~1tickets~1{ticket_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + exchange: + operation: + $ref: '#/paths/~1oauth~1tickets~1{ticket_id}~1exchange/post' + response: + mediaType: application/json + openAPIDocKey: '201' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/tickets/methods/get' + insert: + - $ref: '#/components/x-stackQL-resources/tickets/methods/create' + update: [] + delete: [] + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/payment_method.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/payment_method.yaml deleted file mode 100644 index 49d6c5c..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/payment_method.yaml +++ /dev/null @@ -1,166 +0,0 @@ -paths: - /billing/payment_methods: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/paymentMethod' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - paymentMethod - operationId: listPaymentMethodsForUser -components: - schemas: - paymentMethod: - properties: - created_at: - format: dateTime - type: string - data: - properties: - card_type: - type: string - email: - type: string - last4: - type: string - type: object - id: - type: string - method_name: - type: string - state: - type: string - type: - type: string - updated_at: - format: dateTime - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - billing_payment_methods: - id: netlify.payment_method.billing_payment_methods - name: billing_payment_methods - title: Billing_payment_methods - methods: - listPaymentMethodsForUser: - operation: - $ref: '#/paths/~1billing~1payment_methods/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/billing_payment_methods/methods/listPaymentMethodsForUser' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: paymentMethod - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - payment_method - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/service.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/service.yaml deleted file mode 100644 index 2f9de99..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/service.yaml +++ /dev/null @@ -1,244 +0,0 @@ -paths: - /services/: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/service' - type: array - description: services - default: - $ref: '#/components/responses/error' - tags: - - service - operationId: getServices - parameters: - - in: query - name: search - schema: - type: string - /services/{addonName}: - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/service' - description: services - default: - $ref: '#/components/responses/error' - tags: - - service - operationId: showService - parameters: - - in: path - name: addonName - required: true - schema: - type: string - /services/{addonName}/manifest: - get: - responses: - '201': - content: - application/json: - schema: - type: object - description: retrieving from provider - default: - $ref: '#/components/responses/error' - tags: - - service - operationId: showServiceManifest - parameters: - - in: path - name: addonName - required: true - schema: - type: string -components: - schemas: - service: - properties: - tags: - items: - type: string - type: array - created_at: - format: dateTime - type: string - description: - type: string - environments: - items: - type: string - type: array - events: - items: - type: object - type: array - icon: - type: string - id: - type: string - long_description: - type: string - manifest_url: - type: string - name: - type: string - service_path: - type: string - slug: - type: string - updated_at: - format: dateTime - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - services: - id: netlify.service.services - name: services - title: Services - methods: - getServices: - operation: - $ref: '#/paths/~1services~1/get' - response: - mediaType: application/json - openAPIDocKey: '200' - showService: - operation: - $ref: '#/paths/~1services~1{addonName}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/services/methods/getServices' - insert: [] - update: [] - delete: [] - services_manifest: - id: netlify.service.services_manifest - name: services_manifest - title: Services_manifest - methods: - showServiceManifest: - operation: - $ref: '#/paths/~1services~1{addonName}~1manifest/get' - response: - mediaType: application/json - openAPIDocKey: '201' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: service - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - service - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/service_instance.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/service_instance.yaml deleted file mode 100644 index 033f6c4..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/service_instance.yaml +++ /dev/null @@ -1,300 +0,0 @@ -paths: - /sites/{site_id}/service-instances: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/serviceInstance' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - serviceInstance - operationId: listServiceInstancesForSite - parameters: - - in: path - name: site_id - required: true - schema: - type: string - /sites/{site_id}/services/{addon}/instances: - post: - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/serviceInstance' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - serviceInstance - operationId: createServiceInstance - requestBody: - content: - application/json: - schema: - type: object - required: true - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: addon - required: true - schema: - type: string - /sites/{site_id}/services/{addon}/instances/{instance_id}: - delete: - responses: - '204': - description: Deleted - default: - $ref: '#/components/responses/error' - tags: - - serviceInstance - operationId: deleteServiceInstance - parameters: &ref_0 - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: addon - required: true - schema: - type: string - - in: path - name: instance_id - required: true - schema: - type: string - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/serviceInstance' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - serviceInstance - operationId: showServiceInstance - parameters: *ref_0 - put: - responses: - '204': - description: No Content - default: - $ref: '#/components/responses/error' - tags: - - serviceInstance - operationId: updateServiceInstance - requestBody: - content: - application/json: - schema: - type: object - required: true - parameters: *ref_0 -components: - schemas: - serviceInstance: - properties: - auth_url: - type: string - config: - type: object - created_at: - format: dateTime - type: string - env: - type: object - external_attributes: - type: object - id: - type: string - service_name: - type: string - service_path: - type: string - service_slug: - type: string - snippets: - items: - type: object - type: array - updated_at: - format: dateTime - type: string - url: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - sites_service_instances: - id: netlify.service_instance.sites_service_instances - name: sites_service_instances - title: Sites_service_instances - methods: - listServiceInstancesForSite: - operation: - $ref: '#/paths/~1sites~1{site_id}~1service-instances/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_service_instances/methods/listServiceInstancesForSite' - insert: [] - update: [] - delete: [] - sites_services_instances: - id: netlify.service_instance.sites_services_instances - name: sites_services_instances - title: Sites_services_instances - methods: - createServiceInstance: - operation: - $ref: '#/paths/~1sites~1{site_id}~1services~1{addon}~1instances/post' - response: - mediaType: application/json - openAPIDocKey: '201' - deleteServiceInstance: - operation: - $ref: '#/paths/~1sites~1{site_id}~1services~1{addon}~1instances~1{instance_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - showServiceInstance: - operation: - $ref: '#/paths/~1sites~1{site_id}~1services~1{addon}~1instances~1{instance_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - updateServiceInstance: - operation: - $ref: '#/paths/~1sites~1{site_id}~1services~1{addon}~1instances~1{instance_id}/put' - response: - mediaType: application/json - openAPIDocKey: '204' - sqlVerbs: - select: [] - insert: - - $ref: '#/components/x-stackQL-resources/sites_services_instances/methods/createServiceInstance' - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/sites_services_instances/methods/deleteServiceInstance' -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: serviceInstance - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - service_instance - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/services.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/services.yaml new file mode 100644 index 0000000..95599a0 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/services.yaml @@ -0,0 +1,647 @@ +openapi: 3.0.0 +info: + title: services API + description: netlify services API + version: 2.57.0 +paths: + /sites/{site_id}/service-instances: + get: + operationId: listServiceInstancesForSite + tags: + - serviceInstance + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + url: + type: string + config: + type: string + description: (opaque JSON object) + external_attributes: + type: string + description: (opaque JSON object) + service_slug: + type: string + service_path: + type: string + service_name: + type: string + env: + type: string + description: (opaque JSON object) + snippets: + type: array + items: + type: string + description: (opaque JSON object) + auth_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/services/{addon}/instances: + post: + operationId: createServiceInstance + tags: + - serviceInstance + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/stackqlServiceInstancesCreateBody' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + url: + type: string + config: + type: string + description: (opaque JSON object) + external_attributes: + type: string + description: (opaque JSON object) + service_slug: + type: string + service_path: + type: string + service_name: + type: string + env: + type: string + description: (opaque JSON object) + snippets: + type: array + items: + type: string + description: (opaque JSON object) + auth_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: addon + in: path + required: true + schema: + type: string + /sites/{site_id}/services/{addon}/instances/{instance_id}: + get: + operationId: showServiceInstance + tags: + - serviceInstance + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + url: + type: string + config: + type: string + description: (opaque JSON object) + external_attributes: + type: string + description: (opaque JSON object) + service_slug: + type: string + service_path: + type: string + service_name: + type: string + env: + type: string + description: (opaque JSON object) + snippets: + type: array + items: + type: string + description: (opaque JSON object) + auth_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: addon + in: path + required: true + schema: + type: string + - name: instance_id + in: path + required: true + schema: + type: string + put: + operationId: updateServiceInstance + tags: + - serviceInstance + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/stackqlServiceInstancesUpdateBody' + required: true + responses: + '204': + description: No Content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: addon + in: path + required: true + schema: + type: string + - name: instance_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteServiceInstance + tags: + - serviceInstance + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: addon + in: path + required: true + schema: + type: string + - name: instance_id + in: path + required: true + schema: + type: string + /services/: + get: + operationId: getServices + tags: + - service + responses: + '200': + description: services + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + service_path: + type: string + long_description: + type: string + description: + type: string + events: + type: array + items: + type: string + description: (opaque JSON object) + tags: + type: array + items: + type: string + icon: + type: string + manifest_url: + type: string + environments: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: search + in: query + schema: + type: string + /services/{addon_name}: + get: + operationId: showService + tags: + - service + responses: + '200': + description: services + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + service_path: + type: string + long_description: + type: string + description: + type: string + events: + type: array + items: + type: string + description: (opaque JSON object) + tags: + type: array + items: + type: string + icon: + type: string + manifest_url: + type: string + environments: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: addon_name + in: path + required: true + schema: + type: string + /services/{addon_name}/manifest: + get: + operationId: showServiceManifest + tags: + - service + responses: + '201': + description: retrieving from provider + content: + application/json: + schema: + type: string + description: (opaque JSON object) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: addon_name + in: path + required: true + schema: + type: string +components: + requestBodies: + updateSiteMetadataMetadata: + content: + application/json: + schema: + type: string + description: (opaque JSON object) + required: true + schemas: + stackqlServiceInstancesCreateBody: + type: object + required: + - config + properties: + config: + type: object + additionalProperties: true + description: Add-on specific configuration object; sent verbatim as the request body. + stackqlServiceInstancesUpdateBody: + type: object + required: + - config + properties: + config: + type: object + additionalProperties: true + description: Add-on specific configuration object; sent verbatim as the request body. + stackqlServiceManifestsGetResponse: + type: object + properties: + manifest: + type: object + additionalProperties: true + description: The add-on service manifest (opaque JSON). + x-stackQL-resources: + service_instances: + id: netlify.services.service_instances + name: service_instances + title: Service Instances + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1service-instances/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1services~1{addon}~1instances/post' + response: + mediaType: application/json + openAPIDocKey: '201' + request: + mediaType: application/json + required: + - config + schema_override: + $ref: '#/components/schemas/stackqlServiceInstancesCreateBody' + transform: + type: golang_template_json_v0.3.0 + body: '{{ toJson .config }}' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1services~1{addon}~1instances~1{instance_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1services~1{addon}~1instances~1{instance_id}/put' + response: + mediaType: application/json + openAPIDocKey: '204' + request: + mediaType: application/json + required: + - config + schema_override: + $ref: '#/components/schemas/stackqlServiceInstancesUpdateBody' + transform: + type: golang_template_json_v0.3.0 + body: '{{ toJson .config }}' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1services~1{addon}~1instances~1{instance_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/service_instances/methods/get' + - $ref: '#/components/x-stackQL-resources/service_instances/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/service_instances/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/service_instances/methods/delete' + replace: + - $ref: '#/components/x-stackQL-resources/service_instances/methods/update' + services: + id: netlify.services.services + name: services + title: Services + methods: + list: + operation: + $ref: '#/paths/~1services~1/get' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1services~1{addon_name}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/services/methods/get' + - $ref: '#/components/x-stackQL-resources/services/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + service_manifests: + id: netlify.services.service_manifests + name: service_manifests + title: Service Manifests + methods: + get: + operation: + $ref: '#/paths/~1services~1{addon_name}~1manifest/get' + response: + mediaType: application/json + openAPIDocKey: '201' + overrideMediaType: application/json + schema_override: + $ref: '#/components/schemas/stackqlServiceManifestsGetResponse' + transform: + type: golang_template_json_v0.3.0 + body: '{"manifest": {{ toJson . }}}' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/service_manifests/methods/get' + insert: [] + update: [] + delete: [] + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/site.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/site.yaml deleted file mode 100644 index 802a7e9..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/site.yaml +++ /dev/null @@ -1,613 +0,0 @@ -paths: - /sites: - get: - parameters: - - in: query - name: name - schema: - type: string - - in: query - name: filter - schema: - enum: - - all - - owner - - guest - type: string - - $ref: '#/components/parameters/page' - - $ref: '#/components/parameters/perPage' - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/site' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - site - operationId: listSites - post: - parameters: - - in: query - name: configure_dns - schema: - type: boolean - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/site' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - site - operationId: createSite - requestBody: - $ref: '#/components/requestBodies/siteSetup' - /sites/{site_id}: - delete: - responses: - '204': - description: Deleted - default: - $ref: '#/components/responses/error' - tags: - - site - operationId: deleteSite - parameters: &ref_0 - - in: path - name: site_id - required: true - schema: - type: string - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/site' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - site - operationId: getSite - parameters: *ref_0 - patch: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/site' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - site - operationId: updateSite - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/siteSetup' - required: true - parameters: *ref_0 - /sites/{site_id}/unlink_repo: - put: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/site' - description: OK - '404': - description: Site not found - tags: - - site - description: |- - [Beta] Unlinks the repo from the site. - - This action will also: - - Delete associated deploy keys - - Delete outgoing webhooks for the repo - - Delete the site's build hooks - operationId: unlinkSiteRepo - parameters: - - in: path - name: site_id - required: true - schema: - type: string - /{account_slug}/sites: - get: - parameters: - - in: query - name: name - schema: - type: string - - in: path - name: account_slug - required: true - schema: - type: string - - $ref: '#/components/parameters/page' - - $ref: '#/components/parameters/perPage' - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/site' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - site - operationId: listSitesForAccount - post: - parameters: - - in: query - name: configure_dns - schema: - type: boolean - - in: path - name: account_slug - required: true - schema: - type: string - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/site' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - site - operationId: createSiteInTeam - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/siteSetup' -components: - schemas: - site: - properties: - account_name: - type: string - account_slug: - type: string - admin_url: - type: string - build_image: - type: string - build_settings: - $ref: '#/components/schemas/repoInfo' - capabilities: - additionalProperties: - type: object - type: object - created_at: - format: dateTime - type: string - custom_domain: - type: string - default_hooks_data: - properties: - access_token: - type: string - type: object - deploy_hook: - type: string - deploy_url: - type: string - domain_aliases: - items: - type: string - type: array - force_ssl: - type: boolean - git_provider: - type: string - id: - type: string - id_domain: - type: string - managed_dns: - type: boolean - name: - type: string - notification_email: - type: string - password: - type: string - plan: - type: string - prerender: - type: string - processing_settings: - properties: - css: - $ref: '#/components/schemas/minifyOptions' - html: - properties: - pretty_urls: - type: boolean - type: object - images: - properties: - optimize: - type: boolean - type: object - js: - $ref: '#/components/schemas/minifyOptions' - skip: - type: boolean - type: object - published_deploy: - $ref: '#/components/schemas/deploy' - screenshot_url: - type: string - session_id: - type: string - ssl: - type: boolean - ssl_url: - type: string - state: - type: string - updated_at: - format: dateTime - type: string - url: - type: string - user_id: - type: string - type: object - repoInfo: - properties: - allowed_branches: - items: - type: string - type: array - cmd: - type: string - deploy_key_id: - type: string - dir: - type: string - env: - additionalProperties: - type: string - type: object - functions_dir: - type: string - id: - type: integer - installation_id: - type: integer - private_logs: - type: boolean - provider: - type: string - public_repo: - type: boolean - repo_branch: - type: string - repo_path: - type: string - repo_url: - type: string - stop_builds: - type: boolean - type: object - minifyOptions: - properties: - bundle: - type: boolean - minify: - type: boolean - type: object - deploy: - properties: - admin_url: - type: string - branch: - type: string - build_id: - type: string - commit_ref: - type: string - commit_url: - type: string - context: - type: string - created_at: - format: dateTime - type: string - deploy_ssl_url: - type: string - deploy_url: - type: string - draft: - type: boolean - error_message: - type: string - framework: - type: string - function_schedules: - items: - $ref: '#/components/schemas/functionSchedule' - type: array - id: - type: string - locked: - type: boolean - name: - type: string - published_at: - format: dateTime - type: string - required: - items: - type: string - type: array - required_functions: - items: - type: string - type: array - review_id: - type: number - review_url: - type: string - screenshot_url: - type: string - site_capabilities: - properties: - large_media_enabled: - type: boolean - type: object - site_id: - type: string - skipped: - type: boolean - ssl_url: - type: string - state: - type: string - title: - type: string - updated_at: - format: dateTime - type: string - url: - type: string - user_id: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - functionSchedule: - properties: - cron: - type: string - name: - type: string - type: object - siteSetup: - allOf: - - $ref: '#/components/schemas/site' - - properties: - repo: - $ref: '#/components/schemas/repoInfo' - type: object - parameters: - page: - in: query - name: page - required: false - schema: - format: int32 - type: integer - perPage: - in: query - name: per_page - required: false - schema: - format: int32 - type: integer - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: - siteSetup: - content: - application/json: - schema: - $ref: '#/components/schemas/siteSetup' - required: true - headers: {} - links: {} - x-stackQL-resources: - sites: - id: netlify.site.sites - name: sites - title: Sites - methods: - listSites: - operation: - $ref: '#/paths/~1sites/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createSite: - operation: - $ref: '#/paths/~1sites/post' - response: - mediaType: application/json - openAPIDocKey: '201' - deleteSite: - operation: - $ref: '#/paths/~1sites~1{site_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - getSite: - operation: - $ref: '#/paths/~1sites~1{site_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - updateSite: - operation: - $ref: '#/paths/~1sites~1{site_id}/patch' - response: - mediaType: application/json - openAPIDocKey: '200' - listSitesForAccount: - operation: - $ref: '#/paths/~1{account_slug}~1sites/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createSiteInTeam: - operation: - $ref: '#/paths/~1{account_slug}~1sites/post' - response: - mediaType: application/json - openAPIDocKey: '201' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites/methods/getSite' - - $ref: '#/components/x-stackQL-resources/sites/methods/listSitesForAccount' - - $ref: '#/components/x-stackQL-resources/sites/methods/listSites' - insert: - - $ref: '#/components/x-stackQL-resources/sites/methods/createSiteInTeam' - - $ref: '#/components/x-stackQL-resources/sites/methods/createSite' - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/sites/methods/deleteSite' - sites_unlink_repo: - id: netlify.site.sites_unlink_repo - name: sites_unlink_repo - title: Sites_unlink_repo - methods: - unlinkSiteRepo: - operation: - $ref: '#/paths/~1sites~1{site_id}~1unlink_repo/put' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: site - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - site - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/sites.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/sites.yaml new file mode 100644 index 0000000..2b1db73 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/sites.yaml @@ -0,0 +1,4171 @@ +openapi: 3.0.0 +info: + title: sites API + description: netlify sites API + version: 2.57.0 +paths: + /sites: + get: + operationId: listSites + tags: + - site + parameters: + - name: name + in: query + schema: + type: string + - name: filter + in: query + schema: + type: string + enum: + - all + - owner + - guest + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables.' + post: + operationId: createSite + tags: + - site + parameters: + - name: configure_dns + in: query + schema: + type: boolean + requestBody: + $ref: '#/components/requestBodies/createSiteSite' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site.' + /sites/{site_id}: + get: + operationId: getSite + tags: + - site + parameters: + - name: feature_flags + x-internal: true + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables.' + patch: + operationId: updateSite + tags: + - site + requestBody: + $ref: '#/components/requestBodies/createSiteSite' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [updateEnvVar](#tag/environmentVariables/operation/updateEnvVar) to update a site''s environment variables.' + parameters: + - name: site_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteSite + tags: + - site + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/ssl: + post: + operationId: provisionSiteTLSCertificate + tags: + - sniCertificate + description: |- + Provisions or updates a TLS certificate for the site. + + **Creating a certificate (site has no certificate):** + - Omit certificate params to initiate Let's Encrypt provisioning + - Provide certificate, key, and ca_certificates to upload a custom certificate + + **Updating a certificate (site already has a certificate):** + - REQUIRES certificate, key, and ca_certificates to replace with a new custom certificate + - Use POST /api/v1/sites/{site_id}/ssl/renew to renew an existing Let's Encrypt certificate + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: certificate + in: query + description: PEM-encoded certificate. Required when updating an existing certificate. + schema: + type: string + - name: key + in: query + description: PEM-encoded private key. Required when updating an existing certificate. + schema: + type: string + - name: ca_certificates + in: query + description: PEM-encoded CA certificate chain. Required when updating an existing certificate. + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + state: + type: string + domains: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + expires_at: + type: string + format: dateTime + '422': + description: 'Unprocessable Entity. Returns errors such as: "certificate parameter is required when updating an existing certificate" (when updating without params), "No custom domain configured", or "bad dns for custom domain"' + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + get: + operationId: showSiteTLSCertificate + tags: + - sniCertificate + parameters: + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + state: + type: string + domains: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + expires_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/ssl/certificates: + get: + operationId: getAllCertificates + tags: + - sniCertificate + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: domain + in: query + required: true + schema: + type: string + responses: + '200': + description: Array of SNI Certificates + content: + application/json: + schema: + type: array + items: + type: object + properties: + state: + type: string + domains: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + expires_at: + type: string + format: dateTime + '404': + description: Not Found + '422': + description: Unprocessable Entity + /sites/{site_id}/files: + get: + operationId: listSiteFiles + tags: + - file + parameters: + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + path: + type: string + sha: + type: string + mime_type: + type: string + size: + type: integer + format: int64 + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/assets: + get: + operationId: listSiteAssets + tags: + - asset + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + creator_id: + type: string + name: + type: string + state: + type: string + content_type: + type: string + url: + type: string + key: + type: string + visibility: + type: string + size: + type: integer + format: int64 + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + post: + operationId: createSiteAsset + tags: + - asset + parameters: + - name: name + in: query + required: true + schema: + type: string + - name: size + in: query + required: true + schema: + type: integer + format: int64 + - name: content_type + in: query + required: true + schema: + type: string + - name: visibility + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + form: + type: object + properties: + url: + type: string + fields: + type: object + additionalProperties: + type: string + asset: + type: object + properties: + id: + type: string + site_id: + type: string + creator_id: + type: string + name: + type: string + state: + type: string + content_type: + type: string + url: + type: string + key: + type: string + visibility: + type: string + size: + type: integer + format: int64 + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/assets/{asset_id}: + get: + operationId: getSiteAssetInfo + tags: + - asset + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + creator_id: + type: string + name: + type: string + state: + type: string + content_type: + type: string + url: + type: string + key: + type: string + visibility: + type: string + size: + type: integer + format: int64 + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: asset_id + in: path + required: true + schema: + type: string + put: + operationId: updateSiteAsset + tags: + - asset + parameters: + - name: state + in: query + required: true + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + - name: asset_id + in: path + required: true + schema: + type: string + responses: + '200': + description: Updated + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + creator_id: + type: string + name: + type: string + state: + type: string + content_type: + type: string + url: + type: string + key: + type: string + visibility: + type: string + size: + type: integer + format: int64 + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSiteAsset + tags: + - asset + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: asset_id + in: path + required: true + schema: + type: string + /sites/{site_id}/assets/{asset_id}/public_signature: + get: + operationId: getSiteAssetPublicSignature + tags: + - assetPublicSignature + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: asset_id + in: path + required: true + schema: + type: string + /sites/{site_id}/files/{file_path}: + get: + operationId: getSiteFileByPathName + tags: + - file + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: file_path + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + path: + type: string + sha: + type: string + mime_type: + type: string + size: + type: integer + format: int64 + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /purge: + post: + operationId: purgeCache + description: Purges cached content from Netlify's CDN. Supports purging by Cache-Tag. + tags: + - purge + requestBody: + content: + application/json: + schema: + type: object + properties: + site_id: + type: string + site_slug: + type: string + cache_tags: + type: array + items: + type: string + required: true + responses: + '202': + description: OK + '400': + description: Invalid request parameters + '404': + description: Site not found + /sites/{site_id}/snippets: + get: + operationId: listSiteSnippets + tags: + - snippet + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: integer + format: int32 + site_id: + type: string + title: + type: string + general: + type: string + general_position: + type: string + goal: + type: string + goal_position: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + post: + operationId: createSiteSnippet + tags: + - snippet + requestBody: + $ref: '#/components/requestBodies/createSiteSnippetSnippet' + responses: + '201': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: integer + format: int32 + site_id: + type: string + title: + type: string + general: + type: string + general_position: + type: string + goal: + type: string + goal_position: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/snippets/{snippet_id}: + get: + operationId: getSiteSnippet + tags: + - snippet + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: integer + format: int32 + site_id: + type: string + title: + type: string + general: + type: string + general_position: + type: string + goal: + type: string + goal_position: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: snippet_id + in: path + required: true + schema: + type: string + put: + operationId: updateSiteSnippet + tags: + - snippet + requestBody: + $ref: '#/components/requestBodies/createSiteSnippetSnippet' + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: snippet_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteSiteSnippet + tags: + - snippet + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: snippet_id + in: path + required: true + schema: + type: string + /sites/{site_id}/metadata: + get: + operationId: getSiteMetadata + tags: + - metadata + responses: + '200': + description: OK + content: + application/json: + schema: + type: string + description: (opaque JSON object) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + put: + operationId: updateSiteMetadata + tags: + - metadata + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/stackqlSiteMetadataUpdateBody' + required: true + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/deployed-branches: + get: + operationId: listSiteDeployedBranches + tags: + - deployedBranch + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + deploy_id: + type: string + name: + type: string + slug: + type: string + url: + type: string + ssl_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/unlink_repo: + put: + operationId: unlinkSiteRepo + tags: + - site + description: |- + [Beta] Unlinks the repo from the site. + + This action will also: + - Delete associated deploy keys + - Delete outgoing webhooks for the repo + - Delete the site's build hooks + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + '404': + description: Site not found + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/enable: + put: + operationId: enableSite + tags: + - site + description: Re-enables a site that was previously disabled by the user. Sites that were disabled for usage exceeded or marked as spam cannot be re-enabled via this endpoint. + responses: + '204': + description: No content + '422': + description: Cannot enable this site + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/disable: + put: + operationId: disableSite + tags: + - site + description: Disables a site, preventing it from serving content. The site can be re-enabled later using the enable endpoint. + parameters: + - name: reason + in: query + required: true + description: Reason for disabling the site + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/dns: + get: + operationId: getDNSForSite + tags: + - dnsZone + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + put: + operationId: configureDNSForSite + tags: + - dnsZone + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /{account_slug}/sites: + post: + operationId: createSiteInTeam + tags: + - site + parameters: + - name: configure_dns + in: query + schema: + type: boolean + - name: account_slug + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + repo: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site.' + get: + operationId: listSitesForAccount + tags: + - site + parameters: + - name: name + in: query + schema: + type: string + - name: account_slug + in: path + required: true + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables.' +components: + requestBodies: + createSiteSite: + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + repo: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + required: true + createSiteSnippetSnippet: + content: + application/json: + schema: + type: object + properties: + id: + type: integer + format: int32 + site_id: + type: string + title: + type: string + general: + type: string + general_position: + type: string + goal: + type: string + goal_position: + type: string + required: true + updateSiteMetadataMetadata: + content: + application/json: + schema: + type: string + description: (opaque JSON object) + required: true + schemas: + stackqlSiteMetadataUpdateBody: + type: object + required: + - metadata + properties: + metadata: + type: object + additionalProperties: true + description: Arbitrary JSON object stored as the site metadata; sent verbatim as the request body. + stackqlSiteMetadataGetResponse: + type: object + properties: + metadata: + type: object + additionalProperties: true + description: The site metadata object (opaque JSON). + x-stackQL-resources: + sites: + id: netlify.sites.sites + name: sites + title: Sites + methods: + list: + operation: + $ref: '#/paths/~1sites/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}/patch' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + purge_cache: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1purge/post' + response: + mediaType: application/json + openAPIDocKey: '202' + unlink_repo: + operation: + $ref: '#/paths/~1sites~1{site_id}~1unlink_repo/put' + response: + mediaType: application/json + openAPIDocKey: '200' + enable: + operation: + $ref: '#/paths/~1sites~1{site_id}~1enable/put' + response: + mediaType: application/json + openAPIDocKey: '204' + disable: + operation: + $ref: '#/paths/~1sites~1{site_id}~1disable/put' + response: + mediaType: application/json + openAPIDocKey: '204' + create_in_team: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1{account_slug}~1sites/post' + response: + mediaType: application/json + openAPIDocKey: '201' + list_for_account: + operation: + $ref: '#/paths/~1{account_slug}~1sites/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/sites/methods/get' + - $ref: '#/components/x-stackQL-resources/sites/methods/list_for_account' + - $ref: '#/components/x-stackQL-resources/sites/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/sites/methods/create_in_team' + - $ref: '#/components/x-stackQL-resources/sites/methods/create' + update: + - $ref: '#/components/x-stackQL-resources/sites/methods/update' + delete: + - $ref: '#/components/x-stackQL-resources/sites/methods/delete' + replace: [] + ssl_certificates: + id: netlify.sites.ssl_certificates + name: ssl_certificates + title: Ssl Certificates + methods: + provision: + operation: + $ref: '#/paths/~1sites~1{site_id}~1ssl/post' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1ssl/get' + response: + mediaType: application/json + openAPIDocKey: '200' + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1ssl~1certificates/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/ssl_certificates/methods/get' + - $ref: '#/components/x-stackQL-resources/ssl_certificates/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/ssl_certificates/methods/provision' + update: [] + delete: [] + replace: [] + site_files: + id: netlify.sites.site_files + name: site_files + title: Site Files + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1files/get' + response: + mediaType: application/json + openAPIDocKey: '200' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1files~1{file_path}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/site_files/methods/get' + - $ref: '#/components/x-stackQL-resources/site_files/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + site_assets: + id: netlify.sites.site_assets + name: site_assets + title: Site Assets + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1assets/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + operation: + $ref: '#/paths/~1sites~1{site_id}~1assets/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1assets~1{asset_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + operation: + $ref: '#/paths/~1sites~1{site_id}~1assets~1{asset_id}/put' + response: + mediaType: application/json + openAPIDocKey: '200' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1assets~1{asset_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/site_assets/methods/get' + - $ref: '#/components/x-stackQL-resources/site_assets/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/site_assets/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/site_assets/methods/delete' + replace: + - $ref: '#/components/x-stackQL-resources/site_assets/methods/update' + site_asset_public_signatures: + id: netlify.sites.site_asset_public_signatures + name: site_asset_public_signatures + title: Site Asset Public Signatures + methods: + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1assets~1{asset_id}~1public_signature/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/site_asset_public_signatures/methods/get' + insert: [] + update: [] + delete: [] + replace: [] + snippets: + id: netlify.sites.snippets + name: snippets + title: Snippets + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1snippets/get' + response: + mediaType: application/json + openAPIDocKey: '200' + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1snippets/post' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1snippets~1{snippet_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1snippets~1{snippet_id}/put' + response: + mediaType: application/json + openAPIDocKey: '204' + delete: + operation: + $ref: '#/paths/~1sites~1{site_id}~1snippets~1{snippet_id}/delete' + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/snippets/methods/get' + - $ref: '#/components/x-stackQL-resources/snippets/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/snippets/methods/create' + update: [] + delete: + - $ref: '#/components/x-stackQL-resources/snippets/methods/delete' + replace: + - $ref: '#/components/x-stackQL-resources/snippets/methods/update' + site_metadata: + id: netlify.sites.site_metadata + name: site_metadata + title: Site Metadata + methods: + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1metadata/get' + response: + mediaType: application/json + openAPIDocKey: '200' + overrideMediaType: application/json + schema_override: + $ref: '#/components/schemas/stackqlSiteMetadataGetResponse' + transform: + type: golang_template_json_v0.3.0 + body: '{"metadata": {{ toJson . }}}' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1metadata/put' + response: + mediaType: application/json + openAPIDocKey: '204' + request: + mediaType: application/json + required: + - metadata + schema_override: + $ref: '#/components/schemas/stackqlSiteMetadataUpdateBody' + transform: + type: golang_template_json_v0.3.0 + body: '{{ toJson .metadata }}' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/site_metadata/methods/get' + insert: [] + update: [] + delete: [] + replace: + - $ref: '#/components/x-stackQL-resources/site_metadata/methods/update' + deployed_branches: + id: netlify.sites.deployed_branches + name: deployed_branches + title: Deployed Branches + methods: + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1deployed-branches/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/deployed_branches/methods/list' + insert: [] + update: [] + delete: [] + replace: [] + site_dns: + id: netlify.sites.site_dns + name: site_dns + title: Site Dns + methods: + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1dns/get' + response: + mediaType: application/json + openAPIDocKey: '200' + configure: + operation: + $ref: '#/paths/~1sites~1{site_id}~1dns/put' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/site_dns/methods/get' + insert: [] + update: [] + delete: [] + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/sni_certificate.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/sni_certificate.yaml deleted file mode 100644 index ce1d2b2..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/sni_certificate.yaml +++ /dev/null @@ -1,198 +0,0 @@ -paths: - /sites/{site_id}/ssl: - get: - parameters: - - in: path - name: site_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/sniCertificate' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - sniCertificate - operationId: showSiteTLSCertificate - post: - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - in: query - name: certificate - schema: - type: string - - in: query - name: key - schema: - type: string - - in: query - name: ca_certificates - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/sniCertificate' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - sniCertificate - operationId: provisionSiteTLSCertificate -components: - schemas: - sniCertificate: - properties: - created_at: - format: dateTime - type: string - domains: - items: - type: string - type: array - expires_at: - format: dateTime - type: string - state: - type: string - updated_at: - format: dateTime - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - sites_ssl: - id: netlify.sni_certificate.sites_ssl - name: sites_ssl - title: Sites_ssl - methods: - showSiteTLSCertificate: - operation: - $ref: '#/paths/~1sites~1{site_id}~1ssl/get' - response: - mediaType: application/json - openAPIDocKey: '200' - provisionSiteTLSCertificate: - operation: - $ref: '#/paths/~1sites~1{site_id}~1ssl/post' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: sniCertificate - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - sni_certificate - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/snippet.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/snippet.yaml deleted file mode 100644 index 3898ebb..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/snippet.yaml +++ /dev/null @@ -1,262 +0,0 @@ -paths: - /sites/{site_id}/snippets: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/snippet' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - snippet - operationId: listSiteSnippets - parameters: &ref_0 - - in: path - name: site_id - required: true - schema: - type: string - post: - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/snippet' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - snippet - operationId: createSiteSnippet - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/snippet' - required: true - parameters: *ref_0 - /sites/{site_id}/snippets/{snippet_id}: - delete: - responses: - '204': - description: No content - default: - $ref: '#/components/responses/error' - tags: - - snippet - operationId: deleteSiteSnippet - parameters: &ref_1 - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: snippet_id - required: true - schema: - type: string - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/snippet' - description: OK - default: - $ref: '#/components/responses/error' - tags: - - snippet - operationId: getSiteSnippet - parameters: *ref_1 - put: - responses: - '204': - description: No content - default: - $ref: '#/components/responses/error' - tags: - - snippet - operationId: updateSiteSnippet - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/snippet' - required: true - parameters: *ref_1 -components: - schemas: - snippet: - properties: - general: - type: string - general_position: - type: string - goal: - type: string - goal_position: - type: string - id: - format: int32 - type: integer - site_id: - type: string - title: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - sites_snippets: - id: netlify.snippet.sites_snippets - name: sites_snippets - title: Sites_snippets - methods: - listSiteSnippets: - operation: - $ref: '#/paths/~1sites~1{site_id}~1snippets/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createSiteSnippet: - operation: - $ref: '#/paths/~1sites~1{site_id}~1snippets/post' - response: - mediaType: application/json - openAPIDocKey: '201' - deleteSiteSnippet: - operation: - $ref: '#/paths/~1sites~1{site_id}~1snippets~1{snippet_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - getSiteSnippet: - operation: - $ref: '#/paths/~1sites~1{site_id}~1snippets~1{snippet_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - updateSiteSnippet: - operation: - $ref: '#/paths/~1sites~1{site_id}~1snippets~1{snippet_id}/put' - response: - mediaType: application/json - openAPIDocKey: '204' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_snippets/methods/getSiteSnippet' - - $ref: '#/components/x-stackQL-resources/sites_snippets/methods/listSiteSnippets' - insert: - - $ref: '#/components/x-stackQL-resources/sites_snippets/methods/createSiteSnippet' - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/sites_snippets/methods/deleteSiteSnippet' -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: snippet - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - snippet - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/split_test.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/split_test.yaml deleted file mode 100644 index 9040417..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/split_test.yaml +++ /dev/null @@ -1,338 +0,0 @@ -paths: - /sites/{site_id}/traffic_splits: - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/splitTests' - description: split_tests - default: - $ref: '#/components/responses/error' - tags: - - splitTest - operationId: getSplitTests - parameters: &ref_0 - - in: path - name: site_id - required: true - schema: - type: string - post: - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/splitTest' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - splitTest - operationId: createSplitTest - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/splitTestSetup' - required: true - parameters: *ref_0 - /sites/{site_id}/traffic_splits/{split_test_id}: - get: - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/splitTest' - description: split_test - default: - $ref: '#/components/responses/error' - tags: - - splitTest - operationId: getSplitTest - parameters: &ref_1 - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: split_test_id - required: true - schema: - type: string - put: - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/splitTest' - description: Created - default: - $ref: '#/components/responses/error' - tags: - - splitTest - operationId: updateSplitTest - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/splitTestSetup' - required: true - parameters: *ref_1 - /sites/{site_id}/traffic_splits/{split_test_id}/publish: - post: - responses: - '204': - description: enable - default: - $ref: '#/components/responses/error' - tags: - - splitTest - operationId: enableSplitTest - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: split_test_id - required: true - schema: - type: string - /sites/{site_id}/traffic_splits/{split_test_id}/unpublish: - post: - responses: - '204': - description: disabled - default: - $ref: '#/components/responses/error' - tags: - - splitTest - operationId: disableSplitTest - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - in: path - name: split_test_id - required: true - schema: - type: string -components: - schemas: - splitTests: - items: - $ref: '#/components/schemas/splitTest' - type: array - splitTest: - properties: - active: - type: boolean - branches: - items: - type: object - type: array - created_at: - format: dateTime - type: string - id: - type: string - name: - type: string - path: - type: string - site_id: - type: string - unpublished_at: - format: dateTime - type: string - updated_at: - format: dateTime - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - splitTestSetup: - properties: - branch_tests: - type: object - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - sites_traffic_splits: - id: netlify.split_test.sites_traffic_splits - name: sites_traffic_splits - title: Sites_traffic_splits - methods: - getSplitTests: - operation: - $ref: '#/paths/~1sites~1{site_id}~1traffic_splits/get' - response: - mediaType: application/json - openAPIDocKey: '200' - createSplitTest: - operation: - $ref: '#/paths/~1sites~1{site_id}~1traffic_splits/post' - response: - mediaType: application/json - openAPIDocKey: '201' - getSplitTest: - operation: - $ref: '#/paths/~1sites~1{site_id}~1traffic_splits~1{split_test_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - updateSplitTest: - operation: - $ref: '#/paths/~1sites~1{site_id}~1traffic_splits~1{split_test_id}/put' - response: - mediaType: application/json - openAPIDocKey: '201' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_traffic_splits/methods/getSplitTest' - - $ref: '#/components/x-stackQL-resources/sites_traffic_splits/methods/getSplitTests' - insert: - - $ref: '#/components/x-stackQL-resources/sites_traffic_splits/methods/createSplitTest' - update: [] - delete: [] - sites_traffic_splits_publish: - id: netlify.split_test.sites_traffic_splits_publish - name: sites_traffic_splits_publish - title: Sites_traffic_splits_publish - methods: - enableSplitTest: - operation: - $ref: '#/paths/~1sites~1{site_id}~1traffic_splits~1{split_test_id}~1publish/post' - response: - mediaType: application/json - openAPIDocKey: '204' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] - sites_traffic_splits_unpublish: - id: netlify.split_test.sites_traffic_splits_unpublish - name: sites_traffic_splits_unpublish - title: Sites_traffic_splits_unpublish - methods: - disableSplitTest: - operation: - $ref: '#/paths/~1sites~1{site_id}~1traffic_splits~1{split_test_id}~1unpublish/post' - response: - mediaType: application/json - openAPIDocKey: '204' - sqlVerbs: - select: [] - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: splitTest - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - split_test - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/split_tests.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/split_tests.yaml new file mode 100644 index 0000000..0673e33 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/split_tests.yaml @@ -0,0 +1,403 @@ +openapi: 3.0.0 +info: + title: split_tests API + description: netlify split_tests API + version: 2.57.0 +paths: + /sites/{site_id}/traffic_splits: + post: + operationId: createSplitTest + tags: + - splitTest + requestBody: + $ref: '#/components/requestBodies/createSplitTestBranchTests' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + name: + type: string + path: + type: string + branches: + type: array + items: + type: string + description: (opaque JSON object) + active: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + unpublished_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + get: + operationId: getSplitTests + tags: + - splitTest + responses: + '200': + description: split_tests + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + name: + type: string + path: + type: string + branches: + type: array + items: + type: string + description: (opaque JSON object) + active: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + unpublished_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/traffic_splits/{split_test_id}: + put: + operationId: updateSplitTest + tags: + - splitTest + requestBody: + $ref: '#/components/requestBodies/createSplitTestBranchTests' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + name: + type: string + path: + type: string + branches: + type: array + items: + type: string + description: (opaque JSON object) + active: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + unpublished_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: split_test_id + in: path + required: true + schema: + type: string + get: + operationId: getSplitTest + tags: + - splitTest + responses: + '200': + description: split_test + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + name: + type: string + path: + type: string + branches: + type: array + items: + type: string + description: (opaque JSON object) + active: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + unpublished_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: split_test_id + in: path + required: true + schema: + type: string + /sites/{site_id}/traffic_splits/{split_test_id}/publish: + post: + operationId: enableSplitTest + tags: + - splitTest + responses: + '204': + description: enable + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: split_test_id + in: path + required: true + schema: + type: string + /sites/{site_id}/traffic_splits/{split_test_id}/unpublish: + post: + operationId: disableSplitTest + tags: + - splitTest + responses: + '204': + description: disabled + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: split_test_id + in: path + required: true + schema: + type: string +components: + requestBodies: + createSplitTestBranchTests: + content: + application/json: + schema: + type: object + properties: + branch_tests: + type: string + description: (opaque JSON object) + required: true + schemas: {} + x-stackQL-resources: + split_tests: + id: netlify.split_tests.split_tests + name: split_tests + title: Split Tests + methods: + create: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1traffic_splits/post' + response: + mediaType: application/json + openAPIDocKey: '201' + list: + operation: + $ref: '#/paths/~1sites~1{site_id}~1traffic_splits/get' + response: + mediaType: application/json + openAPIDocKey: '200' + update: + config: + requestBodyTranslate: + algorithm: naive + operation: + $ref: '#/paths/~1sites~1{site_id}~1traffic_splits~1{split_test_id}/put' + response: + mediaType: application/json + openAPIDocKey: '201' + get: + operation: + $ref: '#/paths/~1sites~1{site_id}~1traffic_splits~1{split_test_id}/get' + response: + mediaType: application/json + openAPIDocKey: '200' + publish: + operation: + $ref: >- + #/paths/~1sites~1{site_id}~1traffic_splits~1{split_test_id}~1publish/post + response: + mediaType: application/json + openAPIDocKey: '204' + unpublish: + operation: + $ref: >- + #/paths/~1sites~1{site_id}~1traffic_splits~1{split_test_id}~1unpublish/post + response: + mediaType: application/json + openAPIDocKey: '204' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/split_tests/methods/get' + - $ref: '#/components/x-stackQL-resources/split_tests/methods/list' + insert: + - $ref: '#/components/x-stackQL-resources/split_tests/methods/create' + update: [] + delete: [] + replace: + - $ref: '#/components/x-stackQL-resources/split_tests/methods/update' +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/submission.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/submission.yaml deleted file mode 100644 index 7ee293d..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/submission.yaml +++ /dev/null @@ -1,288 +0,0 @@ -paths: - /forms/{form_id}/submissions: - get: - parameters: - - in: path - name: form_id - required: true - schema: - type: string - - $ref: '#/components/parameters/page' - - $ref: '#/components/parameters/perPage' - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/submission' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - submission - operationId: listFormSubmissions - /sites/{site_id}/submissions: - get: - parameters: - - in: path - name: site_id - required: true - schema: - type: string - - $ref: '#/components/parameters/page' - - $ref: '#/components/parameters/perPage' - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/submission' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - submission - operationId: listSiteSubmissions - /submissions/{submission_id}: - delete: - responses: - '204': - description: Deleted - default: - $ref: '#/components/responses/error' - tags: - - submission - operationId: deleteSubmission - parameters: &ref_0 - - in: path - name: submission_id - required: true - schema: - type: string - get: - parameters: *ref_0 - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/submission' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - submission - operationId: listFormSubmission -components: - schemas: - submission: - properties: - body: - type: string - company: - type: string - created_at: - format: dateTime - type: string - data: - type: object - email: - type: string - first_name: - type: string - id: - type: string - last_name: - type: string - name: - type: string - number: - format: int32 - type: integer - site_url: - type: string - summary: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: - page: - in: query - name: page - required: false - schema: - format: int32 - type: integer - perPage: - in: query - name: per_page - required: false - schema: - format: int32 - type: integer - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - forms_submissions: - id: netlify.submission.forms_submissions - name: forms_submissions - title: Forms_submissions - methods: - listFormSubmissions: - operation: - $ref: '#/paths/~1forms~1{form_id}~1submissions/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/forms_submissions/methods/listFormSubmissions' - insert: [] - update: [] - delete: [] - sites_submissions: - id: netlify.submission.sites_submissions - name: sites_submissions - title: Sites_submissions - methods: - listSiteSubmissions: - operation: - $ref: '#/paths/~1sites~1{site_id}~1submissions/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/sites_submissions/methods/listSiteSubmissions' - insert: [] - update: [] - delete: [] - submissions: - id: netlify.submission.submissions - name: submissions - title: Submissions - methods: - deleteSubmission: - operation: - $ref: '#/paths/~1submissions~1{submission_id}/delete' - response: - mediaType: application/json - openAPIDocKey: '204' - listFormSubmission: - operation: - $ref: '#/paths/~1submissions~1{submission_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/submissions/methods/listFormSubmission' - insert: [] - update: [] - delete: - - $ref: '#/components/x-stackQL-resources/submissions/methods/deleteSubmission' -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: submission - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - submission - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/ticket.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/ticket.yaml deleted file mode 100644 index 17e6be6..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/ticket.yaml +++ /dev/null @@ -1,182 +0,0 @@ -paths: - /oauth/tickets: - post: - parameters: - - in: query - name: client_id - required: true - schema: - type: string - responses: - '201': - content: - application/json: - schema: - $ref: '#/components/schemas/ticket' - description: ok - default: - $ref: '#/components/responses/error' - tags: - - ticket - operationId: createTicket - /oauth/tickets/{ticket_id}: - get: - parameters: - - in: path - name: ticket_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/ticket' - description: ok - default: - $ref: '#/components/responses/error' - tags: - - ticket - operationId: showTicket -components: - schemas: - ticket: - properties: - authorized: - type: boolean - client_id: - type: string - created_at: - format: dateTime - type: string - id: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - oauth_tickets: - id: netlify.ticket.oauth_tickets - name: oauth_tickets - title: Oauth_tickets - methods: - createTicket: - operation: - $ref: '#/paths/~1oauth~1tickets/post' - response: - mediaType: application/json - openAPIDocKey: '201' - showTicket: - operation: - $ref: '#/paths/~1oauth~1tickets~1{ticket_id}/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: [] - insert: - - $ref: '#/components/x-stackQL-resources/oauth_tickets/methods/createTicket' - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: ticket - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - ticket - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/user.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/user.yaml deleted file mode 100644 index 30c8285..0000000 --- a/provider-dev/openapi/src/netlify/v00.00.00000/services/user.yaml +++ /dev/null @@ -1,173 +0,0 @@ -paths: - /user: - get: - responses: - '200': - content: - application/json: - schema: - items: - $ref: '#/components/schemas/user' - type: array - description: OK - default: - $ref: '#/components/responses/error' - tags: - - user - operationId: getCurrentUser -components: - schemas: - user: - properties: - affiliate_id: - type: string - avatar_url: - type: string - created_at: - format: dateTime - type: string - email: - type: string - full_name: - type: string - id: - type: string - last_login: - format: dateTime - type: string - login_providers: - items: - type: string - type: array - onboarding_progress: - properties: - slides: - type: string - type: object - site_count: - format: int64 - type: integer - uid: - type: string - type: object - error: - properties: - code: - format: int64 - type: integer - message: - nullable: false - type: string - required: - - message - type: object - parameters: {} - responses: - error: - content: - application/json: - schema: - $ref: '#/components/schemas/error' - description: error - securitySchemes: {} - callbacks: {} - examples: {} - requestBodies: {} - headers: {} - links: {} - x-stackQL-resources: - user: - id: netlify.user.user - name: user - title: User - methods: - getCurrentUser: - operation: - $ref: '#/paths/~1user/get' - response: - mediaType: application/json - openAPIDocKey: '200' - sqlVerbs: - select: - - $ref: '#/components/x-stackQL-resources/user/methods/getCurrentUser' - insert: [] - update: [] - delete: [] -openapi: 3.0.0 -servers: - - url: https://api.netlify.com/api/v1 -security: - - netlifyAuth: [] -tags: - - name: ticket - x-displayName: Ticket - - name: accessToken - x-displayName: Access token - - name: user - x-displayName: User - - name: accountMembership - x-displayName: Accounts - - name: member - x-displayName: Member - - name: accountType - x-displayName: Access type - - name: paymentMethod - x-displayName: Payment method - - name: auditLog - x-displayName: Audit log - - name: site - x-displayName: Site - - name: file - x-displayName: File - - name: metadata - x-displayName: Metadata - - name: snippet - x-displayName: Snippet - - name: dnsZone - x-displayName: DNS zone - - name: sniCertificate - x-displayName: SNI certificate - - name: deploy - x-displayName: Deploy - - name: deployedBranch - x-displayName: Deployed branch - - name: deployKey - x-displayName: Deploy key - - name: build - x-displayName: Build - - name: buildLogMsg - x-displayName: Build log message - - name: hook - x-displayName: Hook - - name: hookType - x-displayName: Hook type - - name: buildHook - x-displayName: Build hook - - name: service - x-displayName: Service - - name: serviceInstance - x-displayName: Service instance - - name: function - x-displayName: Function - - name: form - x-displayName: Form - - name: submission - x-displayName: Form submission - - name: splitTest - x-displayName: Split test - - name: asset - x-displayName: Asset - - name: assetPublicSignature - x-displayName: Asset public signature -externalDocs: - description: Online documentation - url: https://www.netlify.com/docs/api/ -info: - description: user - termsOfService: https://www.netlify.com/legal/terms-of-use/ - title: Netlify's API documentation - user - version: 2.9.0 - x-logo: - altText: Netlify - href: https://www.netlify.com/docs/ - url: netlify-logo.png diff --git a/provider-dev/openapi/src/netlify/v00.00.00000/services/users.yaml b/provider-dev/openapi/src/netlify/v00.00.00000/services/users.yaml new file mode 100644 index 0000000..1a8eae6 --- /dev/null +++ b/provider-dev/openapi/src/netlify/v00.00.00000/services/users.yaml @@ -0,0 +1,94 @@ +openapi: 3.0.0 +info: + title: users API + description: netlify users API + version: 2.57.0 +paths: + /user: + get: + operationId: getCurrentUser + tags: + - user + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + uid: + type: string + full_name: + type: string + avatar_url: + type: string + email: + type: string + affiliate_id: + type: string + site_count: + type: integer + format: int64 + created_at: + type: string + format: dateTime + last_login: + type: string + format: dateTime + login_providers: + type: array + items: + type: string + onboarding_progress: + type: object + properties: + slides: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false +components: + x-stackQL-resources: + users: + id: netlify.users.users + name: users + title: Users + methods: + get_current: + operation: + $ref: '#/paths/~1user/get' + response: + mediaType: application/json + openAPIDocKey: '200' + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/users/methods/get_current' + insert: [] + update: [] + delete: [] + replace: [] +servers: + - url: https://api.netlify.com/api/v1 +x-stackQL-config: + pagination: + requestToken: + key: '' + location: request + responseToken: + key: Link + location: header diff --git a/provider-dev/scripts/.gitkeep b/provider-dev/scripts/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/provider-dev/scripts/map_operations.mjs b/provider-dev/scripts/map_operations.mjs new file mode 100644 index 0000000..b548269 --- /dev/null +++ b/provider-dev/scripts/map_operations.mjs @@ -0,0 +1,340 @@ +#!/usr/bin/env node +// map_operations.mjs +// +// Fills in stackql_resource_name / stackql_method_name / stackql_verb / +// stackql_object_key for operations in provider-dev/config/all_services.csv +// that `generate-mappings` (analyze) left unmapped after a spec refresh. +// Mappings are recorded here as data so a refresh is a reviewed diff rather +// than a hand edit of the CSV. Rows that are already mapped are left alone +// (the checked-in CSV is the durable record of the operation -> resource +// wiring; changing an existing row is a deliberate, reviewed edit). +// +// The script also prunes rows for operations Netlify has retired, resyncs +// rows whose path moved upstream, and reports mapped rows that disagree with +// this table so drift between the two is visible. It FAILS if any live +// operation is still unmapped - add it to the table below and re-run. +// +// Usage: node provider-dev/scripts/map_operations.mjs [--csv provider-dev/config/all_services.csv] [--source-dir provider-dev/source] + +import { readFileSync, writeFileSync, readdirSync } from 'fs'; +import { resolve, join, extname } from 'path'; +import yaml from 'js-yaml'; + +const csvArgIdx = process.argv.indexOf('--csv'); +const csvPath = resolve(csvArgIdx === -1 ? 'provider-dev/config/all_services.csv' : process.argv[csvArgIdx + 1]); +const srcArgIdx = process.argv.indexOf('--source-dir'); +const sourceDir = resolve(srcArgIdx === -1 ? 'provider-dev/source' : process.argv[srcArgIdx + 1]); + +// Collect every operationId present in the split specs. `analyze` carries +// previously mapped rows forward even when the operation has been removed +// upstream, so rows not in this set are pruned (and reported). +const liveOps = new Map(); +for (const f of readdirSync(sourceDir)) { + if (!['.yaml', '.yml'].includes(extname(f).toLowerCase())) continue; + const doc = yaml.load(readFileSync(join(sourceDir, f), 'utf8')); + for (const [p, pathItem] of Object.entries(doc?.paths ?? {})) { + for (const [verb, op] of Object.entries(pathItem ?? {})) { + if (op && typeof op === 'object' && typeof op.operationId === 'string') { + liveOps.set(op.operationId, { filename: f, path: p, verb }); + } + } + } +} + +// operationId -> [resource, method, verb, objectKey] +// +// Conventions: +// - resources are plural snake_case nouns; lifecycle operations (enable, +// cancel, lock, restore, purge, ...) are `exec` methods on the resource +// they act on rather than resources of their own, so almost every +// resource is selectable +// - GET collection -> select `list`, GET single -> select `get`, POST -> +// insert `create`, PATCH -> update, PUT -> replace, DELETE -> delete +// - within a resource, methods mapped to the same SQL verb must have +// distinct required-parameter signatures (site-scoped vs id-scoped +// variants are named `*_for_site` / `*_by_id`) +// - objectKey is only set where the API wraps the collection in an +// envelope (the database service); every other list endpoint returns a +// bare array which stackql iterates natively +const M = { + // ---------------------------------------------------------------- sites + listSites: ['sites', 'list', 'select', ''], + listSitesForAccount: ['sites', 'list_for_account', 'select', ''], + getSite: ['sites', 'get', 'select', ''], + createSite: ['sites', 'create', 'insert', ''], + createSiteInTeam: ['sites', 'create_in_team', 'insert', ''], + updateSite: ['sites', 'update', 'update', ''], + deleteSite: ['sites', 'delete', 'delete', ''], + unlinkSiteRepo: ['sites', 'unlink_repo', 'exec', ''], + enableSite: ['sites', 'enable', 'exec', ''], + disableSite: ['sites', 'disable', 'exec', ''], + purgeCache: ['sites', 'purge_cache', 'exec', ''], + showSiteTLSCertificate: ['ssl_certificates', 'get', 'select', ''], + getAllCertificates: ['ssl_certificates', 'list', 'select', ''], + provisionSiteTLSCertificate: ['ssl_certificates', 'provision', 'insert', ''], + getSiteMetadata: ['site_metadata', 'get', 'select', ''], + updateSiteMetadata: ['site_metadata', 'update', 'replace', ''], + listSiteFiles: ['site_files', 'list', 'select', ''], + getSiteFileByPathName: ['site_files', 'get', 'select', ''], + listSiteAssets: ['site_assets', 'list', 'select', ''], + getSiteAssetInfo: ['site_assets', 'get', 'select', ''], + createSiteAsset: ['site_assets', 'create', 'insert', ''], + updateSiteAsset: ['site_assets', 'update', 'replace', ''], + deleteSiteAsset: ['site_assets', 'delete', 'delete', ''], + getSiteAssetPublicSignature: ['site_asset_public_signatures', 'get', 'select', ''], + listSiteSnippets: ['snippets', 'list', 'select', ''], + getSiteSnippet: ['snippets', 'get', 'select', ''], + createSiteSnippet: ['snippets', 'create', 'insert', ''], + updateSiteSnippet: ['snippets', 'update', 'replace', ''], + deleteSiteSnippet: ['snippets', 'delete', 'delete', ''], + listSiteDeployedBranches: ['deployed_branches', 'list', 'select', ''], + getDNSForSite: ['site_dns', 'get', 'select', ''], + configureDNSForSite: ['site_dns', 'configure', 'exec', ''], + + // -------------------------------------------------------------- deploys + listSiteDeploys: ['deploys', 'list', 'select', ''], + getSiteDeploy: ['deploys', 'get', 'select', ''], + getDeploy: ['deploys', 'get_by_id', 'select', ''], + createSiteDeploy: ['deploys', 'create', 'insert', ''], + updateSiteDeploy: ['deploys', 'update', 'replace', ''], + deleteSiteDeploy: ['deploys', 'delete', 'delete', ''], + deleteDeploy: ['deploys', 'delete_by_id', 'delete', ''], + cancelSiteDeploy: ['deploys', 'cancel', 'exec', ''], + restoreSiteDeploy: ['deploys', 'restore', 'exec', ''], + rollbackSiteDeploy: ['deploys', 'rollback', 'exec', ''], + lockDeploy: ['deploys', 'lock', 'exec', ''], + unlockDeploy: ['deploys', 'unlock', 'exec', ''], + updateDeployValidations: ['deploys', 'update_validations_report', 'exec', ''], + uploadDeployFile: ['deploys', 'upload_file', 'exec', ''], + uploadDeployFunction: ['deploys', 'upload_function', 'exec', ''], + uploadDeployEdgeFunction: ['deploys', 'upload_edge_function', 'exec', ''], + listDeployKeys: ['deploy_keys', 'list', 'select', ''], + getDeployKey: ['deploy_keys', 'get', 'select', ''], + createDeployKey: ['deploy_keys', 'create', 'insert', ''], + deleteDeployKey: ['deploy_keys', 'delete', 'delete', ''], + + // --------------------------------------------------------------- builds + listSiteBuilds: ['builds', 'list', 'select', ''], + getSiteBuild: ['builds', 'get', 'select', ''], + createSiteBuild: ['builds', 'create', 'insert', ''], + notifyBuildStart: ['builds', 'notify_start', 'exec', ''], + updateSiteBuildLog: ['builds', 'update_log', 'exec', ''], + getAccountBuildStatus: ['build_status', 'get', 'select', ''], + listSiteBuildHooks: ['build_hooks', 'list', 'select', ''], + getSiteBuildHook: ['build_hooks', 'get', 'select', ''], + createSiteBuildHook: ['build_hooks', 'create', 'insert', ''], + updateSiteBuildHook: ['build_hooks', 'update', 'replace', ''], + deleteSiteBuildHook: ['build_hooks', 'delete', 'delete', ''], + + // ------------------------------------------------------------------ env + getEnvVars: ['env_vars', 'list', 'select', ''], + getSiteEnvVars: ['env_vars', 'list_for_site', 'select', ''], + getEnvVar: ['env_vars', 'get', 'select', ''], + createEnvVars: ['env_vars', 'create', 'insert', ''], + updateEnvVar: ['env_vars', 'update', 'replace', ''], + setEnvVarValue: ['env_vars', 'set_value', 'update', ''], + deleteEnvVar: ['env_vars', 'delete', 'delete', ''], + deleteEnvVarValue: ['env_vars', 'delete_value', 'delete', ''], + + // ------------------------------------------------------------------ dns + getDnsZones: ['dns_zones', 'list', 'select', ''], + getDnsZone: ['dns_zones', 'get', 'select', ''], + createDnsZone: ['dns_zones', 'create', 'insert', ''], + deleteDnsZone: ['dns_zones', 'delete', 'delete', ''], + transferDnsZone: ['dns_zones', 'transfer', 'exec', ''], + getDnsRecords: ['dns_records', 'list', 'select', ''], + getIndividualDnsRecord: ['dns_records', 'get', 'select', ''], + createDnsRecord: ['dns_records', 'create', 'insert', ''], + deleteDnsRecord: ['dns_records', 'delete', 'delete', ''], + + // ------------------------------------------------------------ functions + searchSiteFunctions: ['functions', 'list', 'select', ''], + + // ---------------------------------------------------------------- forms + listSiteForms: ['forms', 'list', 'select', ''], + deleteSiteForm: ['forms', 'delete', 'delete', ''], + listFormSubmissions: ['submissions', 'list', 'select', ''], + listSiteSubmissions: ['submissions', 'list_for_site', 'select', ''], + listFormSubmission: ['submissions', 'get', 'select', ''], + deleteSubmission: ['submissions', 'delete', 'delete', ''], + + // ---------------------------------------------------------------- hooks + listHooksBySiteId: ['hooks', 'list', 'select', ''], + getHook: ['hooks', 'get', 'select', ''], + createHookBySiteId: ['hooks', 'create', 'insert', ''], + updateHook: ['hooks', 'update', 'replace', ''], + deleteHook: ['hooks', 'delete', 'delete', ''], + enableHook: ['hooks', 'enable', 'exec', ''], + listHookTypes: ['hook_types', 'list', 'select', ''], + + // ------------------------------------------------------------- accounts + listAccountsForUser: ['accounts', 'list', 'select', ''], + getAccount: ['accounts', 'get', 'select', ''], + createAccount: ['accounts', 'create', 'insert', ''], + updateAccount: ['accounts', 'update', 'replace', ''], + cancelAccount: ['accounts', 'cancel', 'delete', ''], + listMembersForAccount: ['members', 'list', 'select', ''], + getAccountMember: ['members', 'get', 'select', ''], + addMemberToAccount: ['members', 'add', 'insert', ''], + updateAccountMember: ['members', 'update', 'replace', ''], + removeAccountMember: ['members', 'remove', 'delete', ''], + listAccountTypesForUser: ['account_types', 'list', 'select', ''], + listPaymentMethodsForUser: ['payment_methods', 'list', 'select', ''], + listAccountAuditEvents: ['audit_events', 'list', 'select', ''], + + // ---------------------------------------------------------------- users + getCurrentUser: ['users', 'get_current', 'select', ''], + + // ---------------------------------------------------------------- oauth + createTicket: ['tickets', 'create', 'insert', ''], + showTicket: ['tickets', 'get', 'select', ''], + exchangeTicket: ['tickets', 'exchange', 'exec', ''], + + // ------------------------------------------------------------- services + getServices: ['services', 'list', 'select', ''], + showService: ['services', 'get', 'select', ''], + showServiceManifest: ['service_manifests', 'get', 'select', ''], + listServiceInstancesForSite: ['service_instances', 'list', 'select', ''], + showServiceInstance: ['service_instances', 'get', 'select', ''], + createServiceInstance: ['service_instances', 'create', 'insert', ''], + updateServiceInstance: ['service_instances', 'update', 'replace', ''], + deleteServiceInstance: ['service_instances', 'delete', 'delete', ''], + + // ---------------------------------------------------------- split_tests + getSplitTests: ['split_tests', 'list', 'select', ''], + getSplitTest: ['split_tests', 'get', 'select', ''], + createSplitTest: ['split_tests', 'create', 'insert', ''], + updateSplitTest: ['split_tests', 'update', 'replace', ''], + enableSplitTest: ['split_tests', 'publish', 'exec', ''], + disableSplitTest: ['split_tests', 'unpublish', 'exec', ''], + + // ---------------------------------------------------------- dev_servers + listSiteDevServers: ['dev_servers', 'list', 'select', ''], + getSiteDevServer: ['dev_servers', 'get', 'select', ''], + createSiteDevServer: ['dev_servers', 'create', 'insert', ''], + deleteSiteDevServers: ['dev_servers', 'delete', 'delete', ''], + markDevServerActivity: ['dev_servers', 'mark_activity', 'exec', ''], + updateDevServerState: ['dev_servers', 'update_state', 'exec', ''], + listSiteDevServerHooks: ['dev_server_hooks', 'list', 'select', ''], + getSiteDevServerHook: ['dev_server_hooks', 'get', 'select', ''], + createSiteDevServerHook: ['dev_server_hooks', 'create', 'insert', ''], + updateSiteDevServerHook: ['dev_server_hooks', 'update', 'replace', ''], + deleteSiteDevServerHook: ['dev_server_hooks', 'delete', 'delete', ''], + + // -------------------------------------------------------- agent_runners + listAgentRunners: ['agent_runners', 'list', 'select', ''], + getAgentRunner: ['agent_runners', 'get', 'select', ''], + createAgentRunner: ['agent_runners', 'create', 'insert', ''], + updateAgentRunner: ['agent_runners', 'update', 'update', ''], + deleteAgentRunner: ['agent_runners', 'delete', 'delete', ''], + archiveAgentRunner: ['agent_runners', 'archive', 'exec', ''], + agentRunnerPullRequest: ['agent_runners', 'create_pull_request', 'exec', ''], + agentRunnerCommitToBranch: ['agent_runners', 'commit_to_branch', 'exec', ''], + createAgentRunnerUploadUrl: ['agent_runners', 'create_upload_url', 'exec', ''], + listAgentRunnerSessions: ['agent_runner_sessions', 'list', 'select', ''], + getAgentRunnerSession: ['agent_runner_sessions', 'get', 'select', ''], + createAgentRunnerSession: ['agent_runner_sessions', 'create', 'insert', ''], + updateAgentRunnerSession: ['agent_runner_sessions', 'update', 'update', ''], + deleteAgentRunnerSession: ['agent_runner_sessions', 'delete', 'delete', ''], + listSiteAgentRunnerHooks: ['agent_runner_hooks', 'list', 'select', ''], + getSiteAgentRunnerHook: ['agent_runner_hooks', 'get', 'select', ''], + createSiteAgentRunnerHook: ['agent_runner_hooks', 'create', 'insert', ''], + updateSiteAgentRunnerHook: ['agent_runner_hooks', 'update', 'replace', ''], + deleteSiteAgentRunnerHook: ['agent_runner_hooks', 'delete', 'delete', ''], + + // ----------------------------------------------------------- ai_gateway + getAIGatewayProviders: ['providers', 'get', 'select', ''], + getAIGatewayToken: ['tokens', 'get_for_site', 'select', ''], + getAccountAIGatewayToken: ['tokens', 'get_for_account', 'select', ''], + + // ------------------------------------------------------------- database + getSiteDatabase: ['databases', 'get', 'select', ''], + createSiteDatabase: ['databases', 'create', 'insert', ''], + deleteSiteDatabase: ['databases', 'delete', 'delete', ''], + listSiteDatabaseBranches: ['branches', 'list', 'select', '$.branches'], + getSiteDatabaseBranch: ['branches', 'get', 'select', ''], + createSiteDatabaseBranch: ['branches', 'create', 'insert', ''], + deleteSiteDatabaseBranch: ['branches', 'delete', 'delete', ''], + resetSiteDatabaseBranch: ['branches', 'reset', 'exec', ''], + getSiteDatabaseComputeSettings: ['compute_settings', 'get', 'select', ''], + setSiteDatabaseComputeSettings: ['compute_settings', 'set', 'replace', ''], + setSiteDatabaseBranchComputeSettings: ['compute_settings', 'set_for_branch', 'replace', ''], + clearSiteDatabaseComputeSettings: ['compute_settings', 'clear', 'delete', ''], + listSiteDatabaseMigrations: ['migrations', 'list', 'select', '$.migrations'], + getSiteDatabaseMigration: ['migrations', 'get', 'select', ''], + runSiteDatabaseMigrations: ['migrations', 'run', 'exec', ''], + listSiteDatabaseSnapshots: ['snapshots', 'list', 'select', '$.snapshots'], + createSiteDatabaseSnapshot: ['snapshots', 'create', 'insert', ''], + deleteSiteDatabaseSnapshot: ['snapshots', 'delete', 'delete', ''], + restoreSiteDatabaseSnapshot: ['snapshots', 'restore', 'exec', ''], +}; + +// Minimal CSV record parser that respects double-quoted fields. Netlify's +// op_description values contain commas AND embedded newlines, so records are +// parsed from the whole text rather than line by line. +function parseRecords(text) { + const records = []; + let row = []; + let cur = ''; + let q = false; + for (let i = 0; i < text.length; i++) { + const ch = text[i]; + if (q) { + if (ch === '"' && text[i + 1] === '"') { cur += '"'; i++; } + else if (ch === '"') q = false; + else cur += ch; + } else if (ch === '"') q = true; + else if (ch === ',') { row.push(cur); cur = ''; } + else if (ch === '\n' || ch === '\r') { + if (ch === '\r' && text[i + 1] === '\n') i++; + row.push(cur); cur = ''; + if (row.length > 1 || row[0] !== '') records.push(row); + row = []; + } else cur += ch; + } + if (cur !== '' || row.length) { row.push(cur); records.push(row); } + return records; +} +function fmt(v) { + return /[",\r\n]/.test(v) ? `"${v.replace(/"/g, '""')}"` : v; +} + +const text = readFileSync(csvPath, 'utf8'); +const records = parseRecords(text); +const header = records[0].map(fmt).join(','); +const out = [header]; +let applied = 0; +const stillUnmapped = []; +const pruned = []; +const resynced = []; +const driftFromTable = []; +for (const c of records.slice(1)) { + const opId = c[2]; + const live = liveOps.get(opId); + if (!live) { + pruned.push(opId); + continue; + } + if (c[0] !== live.filename || c[1] !== live.path || c[4] !== live.verb) { + resynced.push(`${opId}: ${c[0]} ${c[4].toUpperCase()} ${c[1]} -> ${live.filename} ${live.verb.toUpperCase()} ${live.path}`); + c[0] = live.filename; c[1] = live.path; c[4] = live.verb; + } + const m = M[opId]; + // analyze prefills stackql_method_name with the formatted operationId and + // stackql_verb from the HTTP verb, so "unmapped" is an empty resource name. + if (c[8] !== 'skip_this_resource' && (!c[8] || !c[9] || !c[10])) { + if (m) { + [c[8], c[9], c[10], c[11]] = m; + applied++; + } else { + stillUnmapped.push(opId); + } + } else if (m && (c[8] !== m[0] || c[9] !== m[1] || c[10] !== m[2] || (c[11] || '') !== m[3])) { + driftFromTable.push(`${opId}: csv=${c[8]}.${c[9]}/${c[10]}/${c[11] || '-'} table=${m[0]}.${m[1]}/${m[2]}/${m[3] || '-'}`); + } + out.push(c.map(fmt).join(',')); +} +writeFileSync(csvPath, out.join('\n') + '\n'); +const unused = Object.keys(M).filter(k => !liveOps.has(k)); +console.log(JSON.stringify({ applied, pruned, resynced, driftFromTable, stillUnmapped, unusedMappings: unused }, null, 2)); +if (stillUnmapped.length) process.exit(1); diff --git a/provider-dev/scripts/post_normalize.mjs b/provider-dev/scripts/post_normalize.mjs new file mode 100644 index 0000000..6ef6772 --- /dev/null +++ b/provider-dev/scripts/post_normalize.mjs @@ -0,0 +1,97 @@ +#!/usr/bin/env node +// post_normalize.mjs +// +// Reverts the bare-array envelope that `@stackql/provider-utils` normalize +// (pass 1f, "wrapBareArrayResponses") applies to every operation whose 2xx +// response is a top-level `type: array`. +// +// Why this is needed for GitHub: +// +// 1. GitHub operationIds are `tag/op-id` (e.g. `issues/list-suggestions`). +// Normalize derives the wrapper key and the wrapper schema name from the +// operationId, producing `objectKey: $.issues/list_suggestions` and +// `$ref: '#/components/schemas/Issues/list-suggestionsResponse'`. The +// slash breaks both the JSONPath and the JSON pointer, so the generated +// provider would not resolve. +// 2. stackql iterates bare-array JSON responses natively. The published +// github provider has always shipped ~260 bare-array list endpoints +// (repos, issues, contributors, releases, ...) with no objectKey and no +// transform, and they work. The golang-template transform the wrap +// emits adds runtime cost and risk for no functional gain here. +// +// The revert is exact: the synthesised wrapper schema holds the original +// array schema under `properties[]`, so we put that back as the +// response schema, delete the wrapper schema, and drop the marker. The pass +// is idempotent - re-running on already-unwrapped specs is a no-op. +// +// Usage: node provider-dev/scripts/post_normalize.mjs [--api-dir provider-dev/source] [--verbose] + +import { readdirSync, readFileSync, writeFileSync } from 'fs'; +import { join, extname, resolve } from 'path'; +import yaml from 'js-yaml'; + +const MARKER = 'x-stackql-bare-array-wrap'; +const OPS = new Set(['get', 'put', 'post', 'delete', 'patch', 'head', 'options', 'trace']); + +function getArg(flag, fallback) { + const i = process.argv.indexOf(flag); + if (i === -1) return fallback; + return process.argv[i + 1] ?? fallback; +} + +const apiDir = resolve(getArg('--api-dir', 'provider-dev/source')); +const verbose = process.argv.includes('--verbose'); + +let filesTouched = 0; +let unwrapped = 0; +const problems = []; + +for (const f of readdirSync(apiDir)) { + const ext = extname(f).toLowerCase(); + if (ext !== '.yaml' && ext !== '.yml') continue; + const full = join(apiDir, f); + const doc = yaml.load(readFileSync(full, 'utf8')); + if (!doc || typeof doc !== 'object' || !doc.paths) continue; + + let changed = false; + const schemas = doc.components?.schemas ?? {}; + + for (const [p, pathItem] of Object.entries(doc.paths)) { + if (!pathItem || typeof pathItem !== 'object') continue; + for (const [verb, op] of Object.entries(pathItem)) { + if (!OPS.has(verb) || !op || typeof op !== 'object') continue; + const wrap = op[MARKER]; + if (!wrap || typeof wrap !== 'object') continue; + + const { wrapperKey, wrapperName, mediaType } = wrap; + const wrapper = schemas[wrapperName]; + const original = wrapper?.properties?.[wrapperKey]; + if (!original) { + problems.push(`${f} ${verb.toUpperCase()} ${p}: wrapper schema '${wrapperName}' / key '${wrapperKey}' not found`); + continue; + } + + // Restore the bare array schema on every 2xx response that refs the wrapper. + for (const [code, resp] of Object.entries(op.responses ?? {})) { + if (!/^2\d\d$/.test(code)) continue; + const mt = resp?.content?.[mediaType]; + if (mt?.schema?.$ref === `#/components/schemas/${wrapperName}`) { + mt.schema = original; + } + } + delete schemas[wrapperName]; + delete op[MARKER]; + unwrapped++; + changed = true; + if (verbose) console.log(`unwrapped ${f} ${verb.toUpperCase()} ${p} (${wrapperKey})`); + } + } + + if (changed) { + writeFileSync(full, yaml.dump(doc, { lineWidth: -1, noRefs: true })); + filesTouched++; + } +} + +console.log(JSON.stringify({ apiDir, filesTouched, unwrapped, problems }, null, 2)); +if (problems.length) process.exit(1); diff --git a/provider-dev/scripts/post_process.mjs b/provider-dev/scripts/post_process.mjs new file mode 100644 index 0000000..d82736a --- /dev/null +++ b/provider-dev/scripts/post_process.mjs @@ -0,0 +1,419 @@ +#!/usr/bin/env node +// post_process.mjs +// +// Applies the handful of adjustments the generator cannot express to the +// generated provider under provider-dev/openapi/src/netlify//. +// Every rule is data in the tables below; the script is idempotent (re-runs +// on an already-processed tree are no-ops) and fails loudly if a rule +// targets a method that no longer exists. +// +// Why these exist (see NOTES.md for the evidence): +// +// 1. Request bodies that are not a flat object. The generator wires every +// POST/PUT/PATCH with `requestBodyTranslate.algorithm: naive`, which +// maps SQL columns 1:1 onto the top-level properties of the request body +// schema. A bare-array body (createEnvVars), an opaque object body +// (site metadata, add-on instance config) or a binary body (deploy file +// / function uploads) has no top-level properties, so no column can be +// routed to the body. Each such method gets a synthetic request schema +// with a single column and a request `transform` that emits that column +// as the wire body. The naive translator builds its matchers from the +// OPERATION's request body schema (not from `request.schema_override` - +// verified on the wire: with only the override in place the column is +// never routed and stackql sends `null`), so the operation's requestBody +// is rewritten to the synthetic schema as well. +// +// 2. Opaque object responses. normalize lowers `type: object` schemas with +// no properties to `type: string` so nested opaque objects become JSON +// columns, but a top-level opaque response then has no columns at all +// and `DESCRIBE` / `SELECT` fail. Each such method gets a response +// `schema_override` with a single JSON column and a response +// `transform` that wraps the payload under that column. +// +// 3. Reserved-word field names. The env var object carries its context +// values in a field named `values`, which the stackql SQL parser rejects +// even when quoted, so the column could neither be selected by name nor +// set in a REPLACE. The env_vars read methods rename `values` to +// `env_values` in the response (transform + renamed response schema) and +// the REPLACE method accepts `env_values` and emits `values` on the wire. +// +// 4. String body values that must stay strings. any-sdk parses every string +// body value as JSON when it can (type-blind), so a raw file body or an +// env var value that happens to look like JSON would be sent as an +// object. `x-stackQL-stringOnly: true` on the property opts out. +// +// Usage: node provider-dev/scripts/post_process.mjs [--provider-dir provider-dev/openapi/src/netlify/v00.00.00000] [--verbose] + +import { readFileSync, writeFileSync, existsSync } from 'fs'; +import { join, resolve } from 'path'; +import yaml from 'js-yaml'; + +function getArg(flag, fallback) { + const i = process.argv.indexOf(flag); + if (i === -1) return fallback; + return process.argv[i + 1] ?? fallback; +} +const providerDir = resolve(getArg('--provider-dir', 'provider-dev/openapi/src/netlify/v00.00.00000')); +const verbose = process.argv.includes('--verbose'); + +// v0.3.0 templates have toJson / kindOf; v0.1.0 does not (raw value only). +const JSON_TEMPLATE = 'golang_template_json_v0.3.0'; +const JSON_TEMPLATE_RAW = 'golang_template_json_v0.1.0'; + +const ENV_VAR_VALUE_ITEMS = { + type: 'object', + properties: { + value: { type: 'string', description: "The environment variable's unencrypted value", 'x-stackQL-stringOnly': true }, + context: { type: 'string', enum: ['all', 'dev', 'dev-server', 'branch-deploy', 'deploy-preview', 'production', 'branch'], description: 'The deploy context in which this value will be used' }, + context_parameter: { type: 'string', description: 'An additional parameter for custom branches (the branch name when context=branch)' }, + }, +}; +const ENV_VAR_SCOPES = { type: 'array', items: { type: 'string', enum: ['builds', 'functions', 'runtime', 'post-processing'] }, description: 'The scopes that this environment variable is set to (Pro plans and above)' }; + +// -------------------------------------------------------------------------- +// 1. request body rewrites: service -> resource -> method -> rule +// +// column the single SQL column / EXEC parameter that carries the body +// (null = the rule's `schema` IS the whole body schema) +// schema the JSON schema of that column (or of the whole body) +// body Go template producing the wire body from the parsed body map +// mediaType wire Content-Type (defaults to application/json) +// templateType transform type (defaults to JSON_TEMPLATE) +// -------------------------------------------------------------------------- +const REQUEST_RULES = { + env: { + env_vars: { + create: { + column: 'env_vars', + schema: { + type: 'array', + description: 'Array of environment variables to create, each with `key`, optional `scopes` (Pro plans and above), optional `is_secret` and `values` (array of `{value, context, context_parameter}`). The whole array is sent as the request body.', + items: { $ref: '#/components/schemas/stackqlEnvVarInput' }, + }, + body: '{{ toJson .env_vars }}', + }, + // REPLACE (PUT): the SQL surface takes `env_values`, the wire gets `values` + update: { + column: null, + schema: { + type: 'object', + required: ['env_key', 'env_values'], + properties: { + env_key: { type: 'string', description: 'The environment variable key (must equal the `key` in the WHERE clause; the API requires it in both the path and the body, and a column named `key` is routed to the path).' }, + scopes: ENV_VAR_SCOPES, + is_secret: { type: 'boolean', description: 'Secret values are only readable by code running on Netlify and never displayed in the UI' }, + env_values: { + type: 'array', + description: "The variable's values per deploy context (sent as the API's `values` field): array of `{value, context, context_parameter}`.", + items: ENV_VAR_VALUE_ITEMS, + }, + }, + }, + // `key` is also the path parameter, and a SET column that matches a + // parameter name is routed to the parameter rather than the body, while + // Netlify requires the key in the body too (400 "Invalid request + // structure" without it) - so the body key is a distinct `env_key`. + body: '{{"{"}}"key": {{ toJson .env_key }}, {{ if .scopes }}"scopes": {{ toJson .scopes }}, {{ end }}{{ if .is_secret }}"is_secret": {{ toJson .is_secret }}, {{ end }}"values": {{ toJson .env_values }}}', + }, + }, + }, + sites: { + site_metadata: { + update: { + column: 'metadata', + schema: { type: 'object', additionalProperties: true, description: 'Arbitrary JSON object stored as the site metadata; sent verbatim as the request body.' }, + body: '{{ toJson .metadata }}', + }, + }, + }, + services: { + service_instances: { + create: { + column: 'config', + schema: { type: 'object', additionalProperties: true, description: 'Add-on specific configuration object; sent verbatim as the request body.' }, + body: '{{ toJson .config }}', + }, + update: { + column: 'config', + schema: { type: 'object', additionalProperties: true, description: 'Add-on specific configuration object; sent verbatim as the request body.' }, + body: '{{ toJson .config }}', + }, + }, + }, + deploys: { + deploys: { + upload_file: { + column: 'file_body', + mediaType: 'application/octet-stream', + schema: { type: 'string', 'x-stackQL-stringOnly': true, description: 'Raw file contents sent as the application/octet-stream request body.' }, + body: '{{ .file_body }}', + templateType: JSON_TEMPLATE_RAW, + }, + upload_function: { + column: 'file_body', + mediaType: 'application/octet-stream', + schema: { type: 'string', 'x-stackQL-stringOnly': true, description: 'Raw zipped function bundle sent as the application/octet-stream request body.' }, + body: '{{ .file_body }}', + templateType: JSON_TEMPLATE_RAW, + }, + upload_edge_function: { + column: 'file_body', + mediaType: 'application/octet-stream', + schema: { type: 'string', 'x-stackQL-stringOnly': true, description: 'Raw edge function bundle sent as the application/octet-stream request body.' }, + body: '{{ .file_body }}', + templateType: JSON_TEMPLATE_RAW, + }, + }, + }, +}; + +// Shared schemas referenced from the request rules, added to +// components.schemas of the named service. +const EXTRA_SCHEMAS = { + env: { + stackqlEnvVarInput: { + type: 'object', + required: ['key', 'values'], + properties: { + key: { type: 'string', description: 'The environment variable key, like ALGOLIA_ID (case-sensitive)' }, + scopes: ENV_VAR_SCOPES, + is_secret: { type: 'boolean', description: 'Secret values are only readable by code running on Netlify and never displayed in the UI' }, + values: { type: 'array', items: ENV_VAR_VALUE_ITEMS }, + }, + }, + }, +}; + +// -------------------------------------------------------------------------- +// 2. opaque response rewrites: service -> resource -> method -> column +// -------------------------------------------------------------------------- +const RESPONSE_RULES = { + sites: { site_metadata: { get: { column: 'metadata', description: 'The site metadata object (opaque JSON).' } } }, + services: { service_manifests: { get: { column: 'manifest', description: 'The add-on service manifest (opaque JSON).' } } }, +}; + +// -------------------------------------------------------------------------- +// 3. reserved-word field renames on responses: service -> resource -> method +// -> { from, to }. Works for single-object and bare-array responses. +// -------------------------------------------------------------------------- +const RESPONSE_RENAME_RULES = { + env: { + env_vars: { + list: { from: 'values', to: 'env_values' }, + list_for_site: { from: 'values', to: 'env_values' }, + get: { from: 'values', to: 'env_values' }, + }, + }, +}; + +// -------------------------------------------------------------------------- +// 4. string-only request body properties (opt out of JSON coercion) +// service -> resource -> method -> [property, ...] +// -------------------------------------------------------------------------- +const STRING_ONLY_RULES = { + env: { env_vars: { set_value: ['value'] } }, +}; + +// -------------------------------------------------------------------------- + +function schemaName(resource, method, kind) { + const pascal = (s) => s.split('_').map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join(''); + return `stackql${pascal(resource)}${pascal(method)}${kind}`; +} + +function renameTemplate(from, to) { + const obj = `{${JSON.stringify(to)}: {{ toJson (index $e ${JSON.stringify(from)}) }}{{ range $k, $v := $e }}{{ if ne $k ${JSON.stringify(from)} }}, {{ toJson $k }}: {{ toJson $v }}{{ end }}{{ end }}}`; + return `{{ if eq (kindOf .) "slice" }}[{{ range $i, $e := . }}{{ if $i }},{{ end }}${obj}{{ end }}]{{ else }}{{ $e := . }}${obj}{{ end }}`; +} + +function renameSchemaProperty(schema, from, to) { + if (!schema || typeof schema !== 'object') return schema; + const target = schema.type === 'array' && schema.items ? schema.items : schema; + if (target.properties && target.properties[from] !== undefined) { + const props = {}; + for (const [k, v] of Object.entries(target.properties)) props[k === from ? to : k] = v; + target.properties = props; + if (Array.isArray(target.required)) target.required = target.required.map((r) => (r === from ? to : r)); + } + return schema; +} + +// Resolve a method's `operation.$ref` (a JSON pointer into `paths`, with +// `/` escaped as `~1`) to the operation object. +function resolveOperation(doc, m) { + const ref = m?.operation?.$ref; + if (!ref || !ref.startsWith('#/paths/')) return null; + const parts = ref.slice('#/paths/'.length).split('/').map((p) => p.replace(/~1/g, '/').replace(/~0/g, '~')); + const verb = parts.pop(); + const pathKey = parts.join('/'); + return doc.paths?.[pathKey]?.[verb] ?? null; +} + +// Resolve an operation's requestBody (following a components.requestBodies +// $ref) to its JSON schema object, following a schema $ref too. +function resolveRequestBodySchema(doc, op) { + let rb = op?.requestBody; + if (rb?.$ref) rb = doc.components?.requestBodies?.[rb.$ref.split('/').pop()]; + let schema = rb?.content?.['application/json']?.schema; + if (schema?.$ref) schema = doc.components?.schemas?.[schema.$ref.split('/').pop()]; + return schema ?? null; +} + +let changedFiles = 0; +let requestRewrites = 0; +let responseRewrites = 0; +let stringOnlyMarks = 0; +const problems = []; + +function loadService(service) { + const file = join(providerDir, 'services', `${service}.yaml`); + if (!existsSync(file)) { + problems.push(`service file not found: ${file}`); + return null; + } + return { file, doc: yaml.load(readFileSync(file, 'utf8')) }; +} + +function getMethod(doc, service, resource, method) { + const res = doc?.components?.['x-stackQL-resources']?.[resource]; + if (!res) { problems.push(`${service}: resource ${resource} not found`); return null; } + const m = res.methods?.[method]; + if (!m) { problems.push(`${service}: method ${resource}.${method} not found`); return null; } + return m; +} + +const services = new Set([ + ...Object.keys(REQUEST_RULES), ...Object.keys(RESPONSE_RULES), ...Object.keys(RESPONSE_RENAME_RULES), + ...Object.keys(STRING_ONLY_RULES), ...Object.keys(EXTRA_SCHEMAS), +]); + +for (const service of services) { + const loaded = loadService(service); + if (!loaded) continue; + const { file, doc } = loaded; + let changed = false; + doc.components = doc.components || {}; + doc.components.schemas = doc.components.schemas || {}; + + for (const [name, schema] of Object.entries(EXTRA_SCHEMAS[service] || {})) { + if (JSON.stringify(doc.components.schemas[name]) !== JSON.stringify(schema)) { + doc.components.schemas[name] = schema; + changed = true; + } + } + + // 1. request rewrites + for (const [resource, methods] of Object.entries(REQUEST_RULES[service] || {})) { + for (const [method, rule] of Object.entries(methods)) { + const m = getMethod(doc, service, resource, method); + if (!m) continue; + const op = resolveOperation(doc, m); + if (!op) { problems.push(`${service}: cannot resolve operation for ${resource}.${method}`); continue; } + const sname = schemaName(resource, method, 'Body'); + const schema = rule.column + ? { type: 'object', required: [rule.column], properties: { [rule.column]: rule.schema } } + : rule.schema; + const mediaType = rule.mediaType || 'application/json'; + const request = { + mediaType, + required: rule.column ? [rule.column] : (rule.schema.required || []), + schema_override: { $ref: `#/components/schemas/${sname}` }, + transform: { type: rule.templateType || JSON_TEMPLATE, body: rule.body }, + }; + const requestBody = { content: { [mediaType]: { schema: { $ref: `#/components/schemas/${sname}` } } }, required: true }; + const before = JSON.stringify([doc.components.schemas[sname], m.request, op.requestBody]); + doc.components.schemas[sname] = schema; + m.request = request; + op.requestBody = requestBody; + if (JSON.stringify([doc.components.schemas[sname], m.request, op.requestBody]) !== before) { + changed = true; + requestRewrites++; + if (verbose) console.log(`request rewrite ${service}.${resource}.${method} -> ${rule.column ? 'column ' + rule.column : 'whole body'}`); + } + } + } + + // 2. opaque response wraps + for (const [resource, methods] of Object.entries(RESPONSE_RULES[service] || {})) { + for (const [method, rule] of Object.entries(methods)) { + const m = getMethod(doc, service, resource, method); + if (!m) continue; + const sname = schemaName(resource, method, 'Response'); + const schema = { type: 'object', properties: { [rule.column]: { type: 'object', additionalProperties: true, description: rule.description } } }; + const response = { + ...(m.response || {}), + mediaType: 'application/json', + overrideMediaType: 'application/json', + schema_override: { $ref: `#/components/schemas/${sname}` }, + transform: { type: JSON_TEMPLATE, body: `{"${rule.column}": {{ toJson . }}}` }, + }; + const before = JSON.stringify([doc.components.schemas[sname], m.response]); + doc.components.schemas[sname] = schema; + m.response = response; + if (JSON.stringify([doc.components.schemas[sname], m.response]) !== before) { + changed = true; + responseRewrites++; + if (verbose) console.log(`response wrap ${service}.${resource}.${method} -> column ${rule.column}`); + } + } + } + + // 3. response field renames + for (const [resource, methods] of Object.entries(RESPONSE_RENAME_RULES[service] || {})) { + for (const [method, rule] of Object.entries(methods)) { + const m = getMethod(doc, service, resource, method); + if (!m) continue; + const op = resolveOperation(doc, m); + const code = m.response?.openAPIDocKey || '200'; + const content = op?.responses?.[code]?.content?.['application/json']; + if (!content?.schema) { problems.push(`${service}: no ${code} JSON response schema for ${resource}.${method}`); continue; } + const sname = schemaName(resource, method, 'Response'); + const renamed = renameSchemaProperty(JSON.parse(JSON.stringify(content.schema)), rule.from, rule.to); + const response = { + ...(m.response || {}), + mediaType: 'application/json', + overrideMediaType: 'application/json', + schema_override: { $ref: `#/components/schemas/${sname}` }, + transform: { type: JSON_TEMPLATE, body: renameTemplate(rule.from, rule.to) }, + }; + const before = JSON.stringify([doc.components.schemas[sname], m.response, content.schema]); + doc.components.schemas[sname] = renamed; + m.response = response; + // keep the operation's own response schema in step so DESCRIBE and the + // docs show the renamed column whichever schema is consulted + content.schema = renamed; + if (JSON.stringify([doc.components.schemas[sname], m.response, content.schema]) !== before) { + changed = true; + responseRewrites++; + if (verbose) console.log(`response rename ${service}.${resource}.${method}: ${rule.from} -> ${rule.to}`); + } + } + } + + // 4. string-only body properties + for (const [resource, methods] of Object.entries(STRING_ONLY_RULES[service] || {})) { + for (const [method, props] of Object.entries(methods)) { + const m = getMethod(doc, service, resource, method); + if (!m) continue; + const schema = resolveRequestBodySchema(doc, resolveOperation(doc, m)); + if (!schema?.properties) { problems.push(`${service}: no request body properties for ${resource}.${method}`); continue; } + for (const prop of props) { + if (!schema.properties[prop]) { problems.push(`${service}: ${resource}.${method} has no request property ${prop}`); continue; } + if (schema.properties[prop]['x-stackQL-stringOnly'] !== true) { + schema.properties[prop]['x-stackQL-stringOnly'] = true; + changed = true; + stringOnlyMarks++; + if (verbose) console.log(`string-only ${service}.${resource}.${method}.${prop}`); + } + } + } + } + + if (changed) { + writeFileSync(file, yaml.dump(doc, { lineWidth: -1, noRefs: true })); + changedFiles++; + } +} + +console.log(JSON.stringify({ providerDir, changedFiles, requestRewrites, responseRewrites, stringOnlyMarks, problems }, null, 2)); +if (problems.length) process.exit(1); diff --git a/provider-dev/scripts/preprocess.mjs b/provider-dev/scripts/preprocess.mjs new file mode 100644 index 0000000..0dbb54a --- /dev/null +++ b/provider-dev/scripts/preprocess.mjs @@ -0,0 +1,52 @@ +#!/usr/bin/env node +// Pre-processing for the raw Netlify Swagger 2.0 document: +// 1. convert Swagger 2.0 -> OpenAPI 3.0 (provider-utils split expects OAS3) +// 2. fix upstream path bugs (paths that repeat the /api/v1 base path) +// 3. drop operations tagged x-internal (not part of the public API surface) +// Usage: node provider-dev/scripts/preprocess.mjs +import fs from 'fs'; +import converter from 'swagger2openapi'; + +const [input, output] = process.argv.slice(2); +if (!input || !output) { + console.error('usage: preprocess.mjs '); + process.exit(1); +} + +const swagger = JSON.parse(fs.readFileSync(input, 'utf8')); +const basePath = swagger.basePath || ''; + +// 2. fix paths that duplicate the base path (e.g. /api/v1/sites/{site_id}/env) +for (const key of Object.keys(swagger.paths)) { + if (basePath && key.startsWith(basePath + '/')) { + const fixed = key.slice(basePath.length); + if (swagger.paths[fixed]) { + throw new Error(`cannot fix ${key}: ${fixed} already exists`); + } + swagger.paths[fixed] = swagger.paths[key]; + delete swagger.paths[key]; + console.log(`fixed path ${key} -> ${fixed}`); + } +} + +// 3. drop x-internal operations +let dropped = 0; +for (const [key, item] of Object.entries(swagger.paths)) { + for (const verb of ['get', 'post', 'put', 'patch', 'delete', 'head', 'options']) { + const op = item[verb]; + if (op && Array.isArray(op.tags) && op.tags.includes('x-internal')) { + console.log(`dropping x-internal ${verb.toUpperCase()} ${key} (${op.operationId})`); + delete item[verb]; + dropped++; + } + } + if (!Object.keys(item).some((k) => ['get', 'post', 'put', 'patch', 'delete', 'head', 'options'].includes(k))) { + delete swagger.paths[key]; + } +} + +// 1. convert to OpenAPI 3 +const { openapi } = await converter.convertObj(swagger, { patch: true, warnOnly: true, resolve: false }); +fs.writeFileSync(output, JSON.stringify(openapi, null, 2)); +const opCount = Object.values(openapi.paths).reduce((n, item) => n + Object.keys(item).filter((k) => ['get', 'post', 'put', 'patch', 'delete'].includes(k)).length, 0); +console.log(`wrote ${output}: openapi ${openapi.openapi}, ${Object.keys(openapi.paths).length} paths, ${opCount} operations, dropped ${dropped} internal operations`); diff --git a/provider-dev/scripts/svc-discriminator.mjs b/provider-dev/scripts/svc-discriminator.mjs new file mode 100644 index 0000000..a4338b6 --- /dev/null +++ b/provider-dev/scripts/svc-discriminator.mjs @@ -0,0 +1,98 @@ +// Service discriminator for the Netlify provider, used by `npm run split` +// (`--svc-discriminator function`). +// +// Signature: (path, operationId, tags, { providerName, pathItem, operation }) => serviceName +// +// Operations are grouped into StackQL services by API area rather than by the +// upstream tag (the spec has 35 tags, several with a single operation), so that +// closely related resources live together (deploys with deploy keys, sites with +// their SSL certificates, snippets, assets and so on). Every operation must be +// listed here - an unmapped operationId fails the split so a spec refresh that +// adds endpoints is a deliberate decision, not a silent default. + +const byOperationId = { + // sites + listSites: 'sites', createSite: 'sites', getSite: 'sites', updateSite: 'sites', deleteSite: 'sites', + createSiteInTeam: 'sites', listSitesForAccount: 'sites', unlinkSiteRepo: 'sites', enableSite: 'sites', disableSite: 'sites', + provisionSiteTLSCertificate: 'sites', showSiteTLSCertificate: 'sites', getAllCertificates: 'sites', + getSiteMetadata: 'sites', updateSiteMetadata: 'sites', + listSiteFiles: 'sites', getSiteFileByPathName: 'sites', + listSiteAssets: 'sites', createSiteAsset: 'sites', getSiteAssetInfo: 'sites', updateSiteAsset: 'sites', deleteSiteAsset: 'sites', + getSiteAssetPublicSignature: 'sites', + listSiteSnippets: 'sites', createSiteSnippet: 'sites', getSiteSnippet: 'sites', updateSiteSnippet: 'sites', deleteSiteSnippet: 'sites', + listSiteDeployedBranches: 'sites', + getDNSForSite: 'sites', configureDNSForSite: 'sites', + purgeCache: 'sites', + // deploys + listSiteDeploys: 'deploys', createSiteDeploy: 'deploys', getSiteDeploy: 'deploys', updateSiteDeploy: 'deploys', deleteSiteDeploy: 'deploys', + cancelSiteDeploy: 'deploys', restoreSiteDeploy: 'deploys', rollbackSiteDeploy: 'deploys', getDeploy: 'deploys', deleteDeploy: 'deploys', + updateDeployValidations: 'deploys', lockDeploy: 'deploys', unlockDeploy: 'deploys', + uploadDeployFile: 'deploys', uploadDeployFunction: 'deploys', uploadDeployEdgeFunction: 'deploys', + listDeployKeys: 'deploys', createDeployKey: 'deploys', getDeployKey: 'deploys', deleteDeployKey: 'deploys', + // builds + listSiteBuilds: 'builds', createSiteBuild: 'builds', getSiteBuild: 'builds', updateSiteBuildLog: 'builds', notifyBuildStart: 'builds', + getAccountBuildStatus: 'builds', + listSiteBuildHooks: 'builds', createSiteBuildHook: 'builds', getSiteBuildHook: 'builds', updateSiteBuildHook: 'builds', deleteSiteBuildHook: 'builds', + // env + getEnvVars: 'env', createEnvVars: 'env', getSiteEnvVars: 'env', getEnvVar: 'env', updateEnvVar: 'env', setEnvVarValue: 'env', + deleteEnvVar: 'env', deleteEnvVarValue: 'env', + // dns + createDnsZone: 'dns', getDnsZones: 'dns', getDnsZone: 'dns', deleteDnsZone: 'dns', transferDnsZone: 'dns', + getDnsRecords: 'dns', createDnsRecord: 'dns', getIndividualDnsRecord: 'dns', deleteDnsRecord: 'dns', + // functions + searchSiteFunctions: 'functions', + // forms + listSiteForms: 'forms', deleteSiteForm: 'forms', listSiteSubmissions: 'forms', listFormSubmissions: 'forms', + listFormSubmission: 'forms', deleteSubmission: 'forms', + // hooks + listHooksBySiteId: 'hooks', createHookBySiteId: 'hooks', getHook: 'hooks', updateHook: 'hooks', deleteHook: 'hooks', enableHook: 'hooks', + listHookTypes: 'hooks', + // accounts + listAccountsForUser: 'accounts', createAccount: 'accounts', getAccount: 'accounts', updateAccount: 'accounts', cancelAccount: 'accounts', + listMembersForAccount: 'accounts', addMemberToAccount: 'accounts', getAccountMember: 'accounts', updateAccountMember: 'accounts', removeAccountMember: 'accounts', + listAccountTypesForUser: 'accounts', listPaymentMethodsForUser: 'accounts', listAccountAuditEvents: 'accounts', + // users + getCurrentUser: 'users', + // oauth + createTicket: 'oauth', showTicket: 'oauth', exchangeTicket: 'oauth', + // services (add-ons) + getServices: 'services', showService: 'services', showServiceManifest: 'services', + listServiceInstancesForSite: 'services', createServiceInstance: 'services', showServiceInstance: 'services', + updateServiceInstance: 'services', deleteServiceInstance: 'services', + // split tests + createSplitTest: 'split_tests', getSplitTests: 'split_tests', updateSplitTest: 'split_tests', getSplitTest: 'split_tests', + enableSplitTest: 'split_tests', disableSplitTest: 'split_tests', + // dev servers + listSiteDevServers: 'dev_servers', createSiteDevServer: 'dev_servers', deleteSiteDevServers: 'dev_servers', getSiteDevServer: 'dev_servers', + markDevServerActivity: 'dev_servers', updateDevServerState: 'dev_servers', + listSiteDevServerHooks: 'dev_servers', createSiteDevServerHook: 'dev_servers', getSiteDevServerHook: 'dev_servers', + updateSiteDevServerHook: 'dev_servers', deleteSiteDevServerHook: 'dev_servers', + // agent runners + listAgentRunners: 'agent_runners', createAgentRunner: 'agent_runners', createAgentRunnerUploadUrl: 'agent_runners', getAgentRunner: 'agent_runners', + updateAgentRunner: 'agent_runners', deleteAgentRunner: 'agent_runners', archiveAgentRunner: 'agent_runners', + agentRunnerPullRequest: 'agent_runners', agentRunnerCommitToBranch: 'agent_runners', + listAgentRunnerSessions: 'agent_runners', createAgentRunnerSession: 'agent_runners', getAgentRunnerSession: 'agent_runners', + updateAgentRunnerSession: 'agent_runners', deleteAgentRunnerSession: 'agent_runners', + listSiteAgentRunnerHooks: 'agent_runners', createSiteAgentRunnerHook: 'agent_runners', getSiteAgentRunnerHook: 'agent_runners', + updateSiteAgentRunnerHook: 'agent_runners', deleteSiteAgentRunnerHook: 'agent_runners', + // ai gateway + getAIGatewayProviders: 'ai_gateway', getAIGatewayToken: 'ai_gateway', getAccountAIGatewayToken: 'ai_gateway', + // database (Netlify DB) + createSiteDatabase: 'database', getSiteDatabase: 'database', deleteSiteDatabase: 'database', + createSiteDatabaseBranch: 'database', listSiteDatabaseBranches: 'database', getSiteDatabaseBranch: 'database', deleteSiteDatabaseBranch: 'database', + resetSiteDatabaseBranch: 'database', setSiteDatabaseBranchComputeSettings: 'database', setSiteDatabaseComputeSettings: 'database', + getSiteDatabaseComputeSettings: 'database', clearSiteDatabaseComputeSettings: 'database', + listSiteDatabaseMigrations: 'database', getSiteDatabaseMigration: 'database', runSiteDatabaseMigrations: 'database', + createSiteDatabaseSnapshot: 'database', listSiteDatabaseSnapshots: 'database', deleteSiteDatabaseSnapshot: 'database', restoreSiteDatabaseSnapshot: 'database', +}; + +export default function discriminator(path, operationId, tags) { + const svc = byOperationId[operationId]; + if (!svc) { + throw new Error( + 'svc-discriminator: unmapped operation ' + operationId + ' (' + path + ') tags=' + tags.join(',') + + ' - add it to provider-dev/scripts/svc-discriminator.mjs' + ); + } + return svc; +} diff --git a/provider-dev/source/.gitkeep b/provider-dev/source/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/provider-dev/source/accounts.yaml b/provider-dev/source/accounts.yaml new file mode 100644 index 0000000..3eaec14 --- /dev/null +++ b/provider-dev/source/accounts.yaml @@ -0,0 +1,863 @@ +openapi: 3.0.0 +info: + title: accounts API + description: netlify accounts API + version: 2.57.0 +paths: + /{account_slug}/members: + get: + operationId: listMembersForAccount + tags: + - member + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar: + type: string + role: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_slug + in: path + required: true + schema: + type: string + post: + operationId: addMemberToAccount + tags: + - member + requestBody: + content: + application/json: + schema: + type: object + properties: + role: + type: string + enum: + - Owner + - Developer + - Billing Admin + - Reviewer + email: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar: + type: string + role: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_slug + in: path + required: true + schema: + type: string + /{account_slug}/members/{member_id}: + get: + operationId: getAccountMember + tags: + - member + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar: + type: string + role: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_slug + in: path + required: true + schema: + type: string + - name: member_id + in: path + required: true + schema: + type: string + put: + operationId: updateAccountMember + tags: + - member + requestBody: + content: + application/json: + schema: + type: object + properties: + role: + type: string + enum: + - Owner + - Developer + - Billing Admin + - Reviewer + site_access: + type: string + enum: + - all + - none + - selected + site_ids: + type: array + items: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar: + type: string + role: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_slug + in: path + required: true + schema: + type: string + - name: member_id + in: path + required: true + schema: + type: string + delete: + operationId: removeAccountMember + tags: + - member + responses: + '204': + description: Not Content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_slug + in: path + required: true + schema: + type: string + - name: member_id + in: path + required: true + schema: + type: string + /billing/payment_methods: + get: + operationId: listPaymentMethodsForUser + tags: + - paymentMethod + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + method_name: + type: string + type: + type: string + state: + type: string + data: + type: object + properties: + card_type: + type: string + last4: + type: string + email: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /accounts/types: + get: + operationId: listAccountTypesForUser + tags: + - accountType + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + capabilities: + type: string + description: (opaque JSON object) + monthly_dollar_price: + type: integer + yearly_dollar_price: + type: integer + monthly_seats_addon_dollar_price: + type: integer + yearly_seats_addon_dollar_price: + type: integer + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /accounts: + get: + operationId: listAccountsForUser + tags: + - accountMembership + parameters: + - name: minimal + x-internal: true + in: query + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + type: + type: string + capabilities: + type: object + properties: + sites: + type: object + properties: + included: + type: integer + used: + type: integer + collaborators: + type: object + properties: + included: + type: integer + used: + type: integer + billing_name: + type: string + billing_email: + type: string + billing_details: + type: string + billing_period: + type: string + payment_method_id: + type: string + type_name: + type: string + type_id: + type: string + owner_ids: + type: array + items: + type: string + roles_allowed: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createAccount + tags: + - accountMembership + requestBody: + content: + application/json: + schema: + type: object + required: + - name + - type_id + properties: + name: + type: string + type_id: + type: string + payment_method_id: + type: string + period: + type: string + enum: + - monthly + - yearly + extra_seats_block: + type: integer + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + type: + type: string + capabilities: + type: object + properties: + sites: + type: object + properties: + included: + type: integer + used: + type: integer + collaborators: + type: object + properties: + included: + type: integer + used: + type: integer + billing_name: + type: string + billing_email: + type: string + billing_details: + type: string + billing_period: + type: string + payment_method_id: + type: string + type_name: + type: string + type_id: + type: string + owner_ids: + type: array + items: + type: string + roles_allowed: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /accounts/{account_id}: + get: + operationId: getAccount + tags: + - accountMembership + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + type: + type: string + capabilities: + type: object + properties: + sites: + type: object + properties: + included: + type: integer + used: + type: integer + collaborators: + type: object + properties: + included: + type: integer + used: + type: integer + billing_name: + type: string + billing_email: + type: string + billing_details: + type: string + billing_period: + type: string + payment_method_id: + type: string + type_name: + type: string + type_id: + type: string + owner_ids: + type: array + items: + type: string + roles_allowed: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_id + in: path + required: true + schema: + type: string + put: + operationId: updateAccount + tags: + - accountMembership + requestBody: + content: + application/json: + schema: + type: object + properties: + name: + type: string + slug: + type: string + type_id: + type: string + extra_seats_block: + type: integer + billing_name: + type: string + billing_email: + type: string + billing_details: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + type: + type: string + capabilities: + type: object + properties: + sites: + type: object + properties: + included: + type: integer + used: + type: integer + collaborators: + type: object + properties: + included: + type: integer + used: + type: integer + billing_name: + type: string + billing_email: + type: string + billing_details: + type: string + billing_period: + type: string + payment_method_id: + type: string + type_name: + type: string + type_id: + type: string + owner_ids: + type: array + items: + type: string + roles_allowed: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_id + in: path + required: true + schema: + type: string + delete: + operationId: cancelAccount + tags: + - accountMembership + responses: + '204': + description: Not Content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_id + in: path + required: true + schema: + type: string + /accounts/{account_id}/audit: + get: + operationId: listAccountAuditEvents + tags: + - auditLog + parameters: + - name: query + in: query + schema: + type: string + - name: log_type + in: query + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: account_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + account_id: + type: string + payload: + type: object + properties: + actor_id: + type: string + actor_name: + type: string + actor_email: + type: string + action: + type: string + timestamp: + type: string + format: dateTime + log_type: + type: string + additionalProperties: + type: string + description: (opaque JSON object) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false +components: + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/agent_runners.yaml b/provider-dev/source/agent_runners.yaml new file mode 100644 index 0000000..961789e --- /dev/null +++ b/provider-dev/source/agent_runners.yaml @@ -0,0 +1,1467 @@ +openapi: 3.0.0 +info: + title: agent_runners API + description: netlify agent_runners API + version: 2.57.0 +paths: + /agent_runners: + get: + operationId: listAgentRunners + tags: + - agentRunner + parameters: + - name: account_id + in: query + required: true + schema: + type: string + - name: site_id + in: query + required: true + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: state + in: query + schema: + type: string + enum: + - live + - error + - name: title + in: query + schema: + type: string + - name: branch + in: query + schema: + type: string + - name: result_branch + in: query + schema: + type: string + - name: from + in: query + schema: + type: integer + - name: to + in: query + schema: + type: integer + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + parent_agent_runner_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + branch: + type: string + result_branch: + type: string + pr_url: + type: string + pr_branch: + type: string + pr_state: + type: string + pr_number: + type: integer + pr_is_being_created: + type: boolean + pr_error: + type: string + current_task: + type: string + result_diff: + type: string + sha: + type: string + merge_commit_sha: + type: string + merge_commit_error: + type: string + merge_commit_is_being_created: + type: boolean + base_deploy_id: + type: string + attached_file_keys: + type: array + items: + type: string + active_session_created_at: + type: string + format: dateTime + latest_session_deploy_id: + type: string + latest_session_deploy_url: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createAgentRunner + tags: + - agentRunner + parameters: + - name: site_id + in: query + required: true + schema: + type: string + - name: deploy_id + in: query + schema: + type: string + - name: branch + in: query + schema: + type: string + - name: prompt + in: query + schema: + type: string + - name: agent + in: query + schema: + type: string + - name: model + in: query + schema: + type: string + - name: parent_agent_runner_id + in: query + schema: + type: string + - name: dev_server_image + in: query + schema: + type: string + - name: file_keys + in: query + style: form + explode: false + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + parent_agent_runner_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + branch: + type: string + result_branch: + type: string + pr_url: + type: string + pr_branch: + type: string + pr_state: + type: string + pr_number: + type: integer + pr_is_being_created: + type: boolean + pr_error: + type: string + current_task: + type: string + result_diff: + type: string + sha: + type: string + merge_commit_sha: + type: string + merge_commit_error: + type: string + merge_commit_is_being_created: + type: boolean + base_deploy_id: + type: string + attached_file_keys: + type: array + items: + type: string + active_session_created_at: + type: string + format: dateTime + latest_session_deploy_id: + type: string + latest_session_deploy_url: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + '404': + description: Not Found + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /agent_runners/upload_url: + post: + x-internal: true + operationId: createAgentRunnerUploadUrl + tags: + - agentRunner + parameters: + - name: account_id + in: query + required: true + schema: + type: string + - name: filename + in: query + required: true + schema: + type: string + - name: content_type + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + '400': + description: Bad Request + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /agent_runners/{agent_runner_id}: + get: + operationId: getAgentRunner + tags: + - agentRunner + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + parent_agent_runner_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + branch: + type: string + result_branch: + type: string + pr_url: + type: string + pr_branch: + type: string + pr_state: + type: string + pr_number: + type: integer + pr_is_being_created: + type: boolean + pr_error: + type: string + current_task: + type: string + result_diff: + type: string + sha: + type: string + merge_commit_sha: + type: string + merge_commit_error: + type: string + merge_commit_is_being_created: + type: boolean + base_deploy_id: + type: string + attached_file_keys: + type: array + items: + type: string + active_session_created_at: + type: string + format: dateTime + latest_session_deploy_id: + type: string + latest_session_deploy_url: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + patch: + operationId: updateAgentRunner + tags: + - agentRunner + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + parent_agent_runner_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + branch: + type: string + result_branch: + type: string + pr_url: + type: string + pr_branch: + type: string + pr_state: + type: string + pr_number: + type: integer + pr_is_being_created: + type: boolean + pr_error: + type: string + current_task: + type: string + result_diff: + type: string + sha: + type: string + merge_commit_sha: + type: string + merge_commit_error: + type: string + merge_commit_is_being_created: + type: boolean + base_deploy_id: + type: string + attached_file_keys: + type: array + items: + type: string + active_session_created_at: + type: string + format: dateTime + latest_session_deploy_id: + type: string + latest_session_deploy_url: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteAgentRunner + tags: + - agentRunner + responses: + '202': + description: Accepted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + /agent_runners/{agent_runner_id}/archive: + post: + operationId: archiveAgentRunner + tags: + - agentRunner + responses: + '202': + description: Accepted + '404': + description: Not Found + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + /agent_runners/{agent_runner_id}/pull_request: + post: + x-internal: true + operationId: agentRunnerPullRequest + tags: + - agentRunner + responses: + '200': + description: OK + '400': + description: Bad Request + '409': + description: Conflict + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + /agent_runners/{agent_runner_id}/commit: + post: + x-internal: true + operationId: agentRunnerCommitToBranch + tags: + - agentRunner + parameters: + - name: target_branch + in: query + required: true + schema: + type: string + - name: agent_runner_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + '400': + description: Bad Request + '409': + description: Conflict + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /agent_runners/{agent_runner_id}/sessions: + get: + operationId: listAgentRunnerSessions + tags: + - agentRunnerSession + parameters: + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: state + in: query + schema: + type: string + enum: + - live + - error + - name: from + in: query + schema: + type: integer + - name: to + in: query + schema: + type: integer + - name: order_by + in: query + schema: + type: string + enum: + - asc + - desc + - name: agent_runner_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + agent_runner_id: + type: string + dev_server_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + prompt: + type: string + agent_config: + type: object + properties: + agent: + type: string + model: + type: string + result: + type: string + result_diff: + type: string + commit_sha: + type: string + deploy_id: + type: string + deploy_url: + type: string + duration: + type: integer + steps: + type: array + items: + type: object + properties: + title: + type: string + message: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + attached_file_keys: + type: array + items: + type: string + result_zip_file_name: + type: string + is_published: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createAgentRunnerSession + tags: + - agentRunnerSession + parameters: + - name: prompt + in: query + schema: + type: string + - name: agent + in: query + schema: + type: string + - name: model + in: query + schema: + type: string + - name: file_keys + in: query + style: form + explode: false + schema: + type: array + items: + type: string + - name: agent_runner_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + agent_runner_id: + type: string + dev_server_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + prompt: + type: string + agent_config: + type: object + properties: + agent: + type: string + model: + type: string + result: + type: string + result_diff: + type: string + commit_sha: + type: string + deploy_id: + type: string + deploy_url: + type: string + duration: + type: integer + steps: + type: array + items: + type: object + properties: + title: + type: string + message: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + attached_file_keys: + type: array + items: + type: string + result_zip_file_name: + type: string + is_published: + type: boolean + '404': + description: Not Found + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id}: + get: + operationId: getAgentRunnerSession + tags: + - agentRunnerSession + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + agent_runner_id: + type: string + dev_server_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + prompt: + type: string + agent_config: + type: object + properties: + agent: + type: string + model: + type: string + result: + type: string + result_diff: + type: string + commit_sha: + type: string + deploy_id: + type: string + deploy_url: + type: string + duration: + type: integer + steps: + type: array + items: + type: object + properties: + title: + type: string + message: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + attached_file_keys: + type: array + items: + type: string + result_zip_file_name: + type: string + is_published: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + - name: agent_runner_session_id + in: path + required: true + schema: + type: string + patch: + operationId: updateAgentRunnerSession + tags: + - agentRunnerSession + parameters: + - name: is_published + in: query + schema: + type: boolean + - name: agent_runner_id + in: path + required: true + schema: + type: string + - name: agent_runner_session_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + agent_runner_id: + type: string + dev_server_id: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + prompt: + type: string + agent_config: + type: object + properties: + agent: + type: string + model: + type: string + result: + type: string + result_diff: + type: string + commit_sha: + type: string + deploy_id: + type: string + deploy_url: + type: string + duration: + type: integer + steps: + type: array + items: + type: object + properties: + title: + type: string + message: + type: string + user: + type: object + properties: + id: + type: string + full_name: + type: string + email: + type: string + avatar_url: + type: string + attached_file_keys: + type: array + items: + type: string + result_zip_file_name: + type: string + is_published: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteAgentRunnerSession + tags: + - agentRunnerSession + responses: + '202': + description: Accepted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: agent_runner_id + in: path + required: true + schema: + type: string + - name: agent_runner_session_id + in: path + required: true + schema: + type: string + /sites/{site_id}/agent_runner_hooks: + get: + x-internal: true + operationId: listSiteAgentRunnerHooks + tags: + - agentRunnerHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + title: + type: string + branch: + type: string + prompt: + type: string + agent: + type: string + url: + type: string + msg: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + post: + x-internal: true + operationId: createSiteAgentRunnerHook + tags: + - agentRunnerHook + requestBody: + $ref: '#/components/requestBodies/createSiteAgentRunnerHookAgentrunnerhook' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + title: + type: string + branch: + type: string + prompt: + type: string + agent: + type: string + url: + type: string + msg: + type: string + created_at: + type: string + format: dateTime + secret: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/agent_runner_hooks/{id}: + get: + x-internal: true + operationId: getSiteAgentRunnerHook + tags: + - agentRunnerHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + title: + type: string + branch: + type: string + prompt: + type: string + agent: + type: string + url: + type: string + msg: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + put: + x-internal: true + operationId: updateSiteAgentRunnerHook + tags: + - agentRunnerHook + requestBody: + $ref: '#/components/requestBodies/createSiteAgentRunnerHookAgentrunnerhook' + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + delete: + x-internal: true + operationId: deleteSiteAgentRunnerHook + tags: + - agentRunnerHook + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string +components: + requestBodies: + createSiteAgentRunnerHookAgentrunnerhook: + content: + application/json: + schema: + type: object + properties: + title: + type: string + branch: + type: string + prompt: + type: string + agent: + type: string + required: true + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/ai_gateway.yaml b/provider-dev/source/ai_gateway.yaml new file mode 100644 index 0000000..8765660 --- /dev/null +++ b/provider-dev/source/ai_gateway.yaml @@ -0,0 +1,146 @@ +openapi: 3.0.0 +info: + title: ai_gateway API + description: netlify ai_gateway API + version: 2.57.0 +paths: + /ai-gateway/providers: + get: + operationId: getAIGatewayProviders + tags: + - aiGateway + security: [] + responses: + '200': + description: The mapping of providers and supported models + content: + application/json: + schema: + type: object + properties: + providers: + additionalProperties: + type: object + properties: + token_env_var: + type: string + url_env_var: + type: string + models: + type: array + items: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/ai-gateway/token: + get: + operationId: getAIGatewayToken + tags: + - aiGateway + responses: + '200': + description: AI Gateway token for the site + content: + application/json: + schema: + type: object + properties: + token: + type: string + description: The AI Gateway authentication token + url: + type: string + description: AI gateway base url + expires_at: + type: integer + format: int64 + description: Unix timestamp when the token expires + '404': + description: AI Gateway not available for this site + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Returns an AI Gateway token for a specific site + parameters: + - name: site_id + in: path + required: true + description: The site ID + schema: + type: string + /accounts/{account_id}/ai-gateway/token: + get: + operationId: getAccountAIGatewayToken + tags: + - aiGateway + responses: + '200': + description: AI Gateway token for the account + content: + application/json: + schema: + type: object + properties: + token: + type: string + description: The AI Gateway authentication token + url: + type: string + description: AI gateway base url + expires_at: + type: integer + format: int64 + description: Unix timestamp when the token expires + '404': + description: AI Gateway not available for this account + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Returns an AI Gateway token scoped to an account + parameters: + - name: account_id + in: path + required: true + description: The account ID + schema: + type: string +components: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/builds.yaml b/provider-dev/source/builds.yaml new file mode 100644 index 0000000..990cc9e --- /dev/null +++ b/provider-dev/source/builds.yaml @@ -0,0 +1,587 @@ +openapi: 3.0.0 +info: + title: builds API + description: netlify builds API + version: 2.57.0 +paths: + /sites/{site_id}/build_hooks: + get: + operationId: listSiteBuildHooks + tags: + - buildHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + post: + operationId: createSiteBuildHook + tags: + - buildHook + requestBody: + $ref: '#/components/requestBodies/createSiteBuildHookBuildhook' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/build_hooks/{id}: + get: + operationId: getSiteBuildHook + tags: + - buildHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + put: + operationId: updateSiteBuildHook + tags: + - buildHook + requestBody: + $ref: '#/components/requestBodies/createSiteBuildHookBuildhook' + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + delete: + operationId: deleteSiteBuildHook + tags: + - buildHook + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + /sites/{site_id}/builds: + get: + operationId: listSiteBuilds + tags: + - build + parameters: + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + deploy_id: + type: string + sha: + type: string + done: + type: boolean + error: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createSiteBuild + tags: + - build + description: | + Runs a build for a site. The build will be scheduled to run at the first opportunity, but it might not start immediately if insufficient account build capacity is available. + + Files for build can be uploaded as a zipped site using one of these methods: + 1. Set Content-Type to 'application/zip' and send the zip file as the raw request body + 2. Set Content-Type to 'multipart/form-data' and include the zip file in the 'zip' field + parameters: + - name: branch + description: If no branch is specified, it is treated as a production deploy If a branch IS specified and matches the main branch, it is also production If a branch is specified and doesn't match the main branch, it is a branch deploy + required: false + in: query + schema: + type: string + - name: clear_cache + description: Whether to clear the build cache before building + required: false + in: query + schema: + type: boolean + - name: image + description: The build image tag to use for the build + required: false + in: query + schema: + type: string + - name: template_id + description: The build template to use for the build + required: false + in: query + schema: + type: string + - name: title + description: The title of the build + required: false + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + zip: + description: | + A zip file containing the site files to build. + Only used with Content-Type 'multipart/form-data'. + Alternatively, set Content-Type to 'application/zip' and send the zip as the raw request body (no 'zip' parameter needed). + type: string + format: binary + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + deploy_id: + type: string + sha: + type: string + done: + type: boolean + error: + type: string + created_at: + type: string + format: dateTime + '400': + description: Bad Request + '404': + description: Not Found + '422': + description: Unprocessable Entity + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /builds/{build_id}: + get: + operationId: getSiteBuild + tags: + - build + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + deploy_id: + type: string + sha: + type: string + done: + type: boolean + error: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: build_id + in: path + required: true + schema: + type: string + /builds/{build_id}/log: + post: + operationId: updateSiteBuildLog + tags: + - buildLogMsg + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: build_id + in: path + required: true + schema: + type: string + /builds/{build_id}/start: + post: + operationId: notifyBuildStart + tags: + - build + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: build_id + in: path + required: true + schema: + type: string + - name: buildbot_version + in: query + required: false + schema: + type: string + - name: build_version + in: query + required: false + schema: + type: string + - name: task_id + in: query + required: false + schema: + type: string + /{account_id}/builds/status: + get: + operationId: getAccountBuildStatus + tags: + - build + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + active: + type: integer + pending_concurrency: + type: integer + enqueued: + type: integer + build_count: + type: integer + minutes: + type: object + properties: + current: + type: integer + current_average_sec: + type: integer + previous: + type: integer + period_start_date: + type: string + format: dateTime + period_end_date: + type: string + format: dateTime + last_updated_at: + type: string + format: dateTime + included_minutes: + type: string + included_minutes_with_packs: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: account_id + in: path + required: true + schema: + type: string +components: + requestBodies: + createSiteBuildHookBuildhook: + content: + application/json: + schema: + type: object + properties: + title: + type: string + branch: + type: string + required: true + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/database.yaml b/provider-dev/source/database.yaml new file mode 100644 index 0000000..97171f7 --- /dev/null +++ b/provider-dev/source/database.yaml @@ -0,0 +1,1149 @@ +openapi: 3.0.0 +info: + title: database API + description: netlify database API + version: 2.57.0 +paths: + /sites/{site_id}/database: + post: + operationId: createSiteDatabase + tags: + - database + description: Creates a new database for the specified site. If a database already exists, returns the existing connection string. The database region defaults to the site's functions region if not specified. + requestBody: + content: + application/json: + schema: + type: object + description: Request body for creating a database + properties: + region: + type: string + description: The region where the database should be created. Defaults to the site's functions region if not specified. + responses: + '200': + description: Database already exists + content: + application/json: + schema: + type: object + description: Response containing the database connection string + properties: + connection_string: + type: string + description: The connection string for the database + '201': + description: Created + content: + application/json: + schema: + type: object + description: Response containing the database connection string + properties: + connection_string: + type: string + description: The connection string for the database + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + get: + operationId: getSiteDatabase + tags: + - database + description: Returns the database connection string for the specified site. + parameters: + - name: role + in: query + description: The database role to use for the connection string. Defaults to netlifydb_owner if not specified. + schema: + type: string + enum: + - netlifydb_owner + - netlifydb_readonly + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response containing the database connection string + properties: + connection_string: + type: string + description: The connection string for the database + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSiteDatabase + tags: + - database + description: Deletes the database and all associated branches and snapshots for the specified site. + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/branch: + post: + operationId: createSiteDatabaseBranch + tags: + - database + description: Creates a new database branch. If a branch already exists for the specified branch ID, returns the existing connection string. + requestBody: + content: + application/json: + schema: + type: object + description: Request body for creating a database branch + required: + - branch_id + properties: + parent_branch_id: + type: string + description: The ID of the parent branch to create the new branch from. Defaults to the production branch if not specified. + branch_id: + type: string + description: The branch identifier + metadata: + type: object + description: Arbitrary metadata to associate with the branch + additionalProperties: true + required: true + responses: + '200': + description: Branch already exists + content: + application/json: + schema: + type: object + description: Response containing the database branch connection string + properties: + connection_string: + type: string + description: The connection string for the database branch + metadata: + type: object + description: Metadata associated with the branch + additionalProperties: true + '201': + description: Created + content: + application/json: + schema: + type: object + description: Response containing the database branch connection string + properties: + connection_string: + type: string + description: The connection string for the database branch + metadata: + type: object + description: Metadata associated with the branch + additionalProperties: true + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/branches: + get: + operationId: listSiteDatabaseBranches + tags: + - database + description: Returns all branches for the site's database with compute status and metadata. + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response containing a list of database branches + properties: + branches: + type: array + items: + type: object + description: Detailed information about a database branch + properties: + branch_id: + type: string + description: The branch identifier + name: + type: string + description: The branch name + connection_string: + type: string + description: The connection string for the branch + state: + type: string + description: The current state of the branch + enum: + - init + - creating + - resetting + - ready + - archived + logical_size_bytes: + type: integer + format: int64 + description: The logical size of the branch in bytes + created_at: + type: string + format: dateTime + description: When the branch was created + updated_at: + type: string + format: dateTime + description: When the branch was last updated + last_active_at: + type: string + format: dateTime + description: When the branch was last active + compute: + type: object + description: Compute endpoint status for a branch + properties: + current_state: + type: string + description: The current state of the compute endpoint + enum: + - active + - idle + autoscaling_limit_min_cu: + type: number + format: double + description: Minimum compute units for autoscaling + autoscaling_limit_max_cu: + type: number + format: double + description: Maximum compute units for autoscaling + suspend_timeout_seconds: + type: integer + format: int64 + description: Seconds of inactivity before the compute endpoint is suspended + last_active: + type: string + format: dateTime + description: When the compute endpoint was last active + metadata: + type: object + description: Metadata associated with the branch + additionalProperties: true + description: List of database branches + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/branch/{branch_id}: + get: + operationId: getSiteDatabaseBranch + tags: + - database + description: Returns the database branch connection string for a specific branch. + parameters: + - name: role + in: query + description: The database role to use for the connection string. Defaults to netlifydb_owner if not specified. + schema: + type: string + enum: + - netlifydb_owner + - netlifydb_readonly + - name: site_id + in: path + required: true + schema: + type: string + - name: branch_id + in: path + required: true + description: The branch ID + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response containing the database branch connection string + properties: + connection_string: + type: string + description: The connection string for the database branch + metadata: + type: object + description: Metadata associated with the branch + additionalProperties: true + '404': + description: Branch not found + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSiteDatabaseBranch + tags: + - database + description: Deletes a database branch. + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: branch_id + in: path + required: true + description: The branch ID + schema: + type: string + /sites/{site_id}/database/branch/{branch_id}/reset: + post: + operationId: resetSiteDatabaseBranch + tags: + - database + description: Resets a non-production database branch by re-forking it from a source branch (defaults to the production branch). If the target branch is already in sync with the source, returns the existing connection string without performing a reset, unless `force=true` is passed. The production branch cannot be reset. + parameters: + - name: force + in: query + description: If true, resets the branch even when it is already in sync with the source. + schema: + type: boolean + - name: role + in: query + description: The database role to use for the returned connection string. Defaults to netlifydb_owner if not specified. + schema: + type: string + enum: + - netlifydb_owner + - netlifydb_readonly + - name: site_id + in: path + required: true + schema: + type: string + - name: branch_id + in: path + required: true + description: The branch ID to reset + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + description: Request body for resetting a database branch + properties: + source_branch_id: + type: string + description: The ID of the branch to re-fork the target branch from. Defaults to "production" if not specified. + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response for a database branch reset + properties: + reset: + type: boolean + description: Whether the branch was actually re-forked. False when the target was already in sync with the source and `force=true` was not set. + connection_string: + type: string + description: The connection string for the reset (or unchanged) branch + metadata: + type: object + description: Metadata associated with the branch + additionalProperties: true + '400': + description: Invalid request — for example, the target is the production branch or the source branch is the same as the target. + '404': + description: Database or branch not found + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/database/branch/{branch_id}/compute/settings: + put: + operationId: setSiteDatabaseBranchComputeSettings + tags: + - database + description: Sets compute settings for a specific database branch, overriding project-level settings. Requires a Pro or higher plan. + requestBody: + $ref: '#/components/requestBodies/setSiteDatabaseBranchComputeSettingsComputesettings' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Compute settings for a database or branch + properties: + min_cu: + type: number + format: double + description: Minimum compute units + max_cu: + type: number + format: double + description: Maximum compute units + sleep_timeout_seconds: + type: integer + format: int64 + description: Seconds of inactivity before suspension + '403': + description: Compute customization requires a Pro or higher plan + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: branch_id + in: path + required: true + description: The branch ID + schema: + type: string + /sites/{site_id}/database/compute/settings: + put: + operationId: setSiteDatabaseComputeSettings + tags: + - database + description: Sets project-level compute settings for the database. Applied to new branches. Can be overridden per-branch. Requires a Pro or higher plan. + requestBody: + $ref: '#/components/requestBodies/setSiteDatabaseBranchComputeSettingsComputesettings' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Compute settings for a database or branch + properties: + min_cu: + type: number + format: double + description: Minimum compute units + max_cu: + type: number + format: double + description: Maximum compute units + sleep_timeout_seconds: + type: integer + format: int64 + description: Seconds of inactivity before suspension + '403': + description: Compute customization requires a Pro or higher plan + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + get: + operationId: getSiteDatabaseComputeSettings + tags: + - database + description: Returns the project-level compute settings for the database. Returns effective settings (custom or tier defaults). Requires a Pro or higher plan. + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Compute settings for a database or branch + properties: + min_cu: + type: number + format: double + description: Minimum compute units + max_cu: + type: number + format: double + description: Maximum compute units + sleep_timeout_seconds: + type: integer + format: int64 + description: Seconds of inactivity before suspension + '403': + description: Compute customization requires a Pro or higher plan + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + delete: + operationId: clearSiteDatabaseComputeSettings + tags: + - database + description: Resets project-level compute settings to tier defaults. Requires a Pro or higher plan. + responses: + '204': + description: Cleared + '403': + description: Compute customization requires a Pro or higher plan + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/migrations: + get: + operationId: listSiteDatabaseMigrations + tags: + - database + description: Returns the list of migrations available for the specified branch, indicating which ones have been applied to the database. + parameters: + - name: branch + in: query + description: The branch ID to list migrations for. Defaults to "production" if not specified. + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response containing the list of migrations for a branch + properties: + migrations: + type: array + items: + type: object + description: A migration available to a database branch + properties: + version: + type: integer + format: int64 + description: The migration version number + name: + type: string + description: The migration name + path: + type: string + description: The path to the migration file in the deploy bundle + applied: + type: boolean + description: Whether this migration has been applied to the branch + description: List of migrations + '404': + description: Database or branch not found + '423': + description: Database is disabled + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/database/migrations/{name}: + get: + operationId: getSiteDatabaseMigration + tags: + - database + description: Returns the contents of a named migration for the specified branch. + parameters: + - name: branch + in: query + description: The branch ID to look up the migration on. Defaults to the currently published deploy's branch. + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + - name: name + in: path + required: true + description: The migration name + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: A migration with its file contents + properties: + version: + type: integer + format: int64 + description: The migration version number + name: + type: string + description: The migration name + path: + type: string + description: The path to the migration file in the deploy bundle + content: + type: string + description: The raw contents of the migration file + '404': + description: Migration, database, or branch not found + '423': + description: Database is disabled + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/database/migrations/{deploy_id}: + post: + operationId: runSiteDatabaseMigrations + tags: + - database + description: Runs database migrations for the specified deploy. Finds the deploy and determines the appropriate branch. + requestBody: + content: + application/json: + schema: + type: object + description: Request body for running database migrations + properties: + dry_run: + type: boolean + description: If true, validates migrations without applying them. + responses: + '200': + description: OK + '409': + description: Migration conflict - migration modified or removed after being applied + '422': + description: Migration validation failed + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy_id + in: path + required: true + description: The deploy ID to run migrations for + schema: + type: string + /sites/{site_id}/database/snapshot: + post: + operationId: createSiteDatabaseSnapshot + tags: + - database + description: Creates a point-in-time snapshot of a database branch. Defaults to the production branch if no branch name is specified. + requestBody: + content: + application/json: + schema: + type: object + description: Request body for creating a database snapshot + properties: + branch_id: + type: string + description: The ID of the branch to snapshot. Defaults to "production" if not specified. + name: + type: string + description: A name for the snapshot + metadata: + type: object + description: Metadata associated with a snapshot + properties: + deploy: + type: object + description: Deploy information associated with the snapshot + additionalProperties: true + source: + type: string + description: The source that created the snapshot + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + description: A point-in-time snapshot of a database branch + properties: + id: + type: string + description: The unique identifier of the snapshot + source_branch_id: + type: string + description: The ID of the branch that was snapshotted + manual: + type: boolean + description: Whether this snapshot was manually created + created_at: + type: string + format: dateTime + description: When the snapshot was created + expires_at: + type: string + format: dateTime + description: When the snapshot expires + timestamp: + type: string + format: dateTime + description: The point-in-time timestamp of the snapshot + metadata: + type: object + description: Metadata associated with a snapshot + properties: + deploy: + type: object + description: Deploy information associated with the snapshot + additionalProperties: true + source: + type: string + description: The source that created the snapshot + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/snapshots: + get: + operationId: listSiteDatabaseSnapshots + tags: + - database + description: Returns all snapshots for the site's database. + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + description: Response containing a list of database snapshots + properties: + snapshots: + type: array + items: + type: object + description: A point-in-time snapshot of a database branch + properties: + id: + type: string + description: The unique identifier of the snapshot + source_branch_id: + type: string + description: The ID of the branch that was snapshotted + manual: + type: boolean + description: Whether this snapshot was manually created + created_at: + type: string + format: dateTime + description: When the snapshot was created + expires_at: + type: string + format: dateTime + description: When the snapshot expires + timestamp: + type: string + format: dateTime + description: The point-in-time timestamp of the snapshot + metadata: + type: object + description: Metadata associated with a snapshot + properties: + deploy: + type: object + description: Deploy information associated with the snapshot + additionalProperties: true + source: + type: string + description: The source that created the snapshot + description: List of database snapshots + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/database/snapshot/{snapshot_id}: + delete: + operationId: deleteSiteDatabaseSnapshot + tags: + - database + description: Deletes a database snapshot. + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: snapshot_id + in: path + required: true + description: The snapshot ID + schema: + type: string + /sites/{site_id}/database/snapshot/{snapshot_id}/restore: + post: + operationId: restoreSiteDatabaseSnapshot + tags: + - database + description: Restores a snapshot to a database branch. Defaults to the production branch if no branch_name is specified. + requestBody: + content: + application/json: + schema: + type: object + description: Request body for restoring a database snapshot + properties: + branch_id: + type: string + description: The ID of the branch to restore the snapshot to. Defaults to "production" if not specified. + responses: + '200': + description: OK + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: snapshot_id + in: path + required: true + description: The snapshot ID to restore + schema: + type: string +components: + requestBodies: + setSiteDatabaseBranchComputeSettingsComputesettings: + content: + application/json: + schema: + type: object + description: Request body for setting compute settings. All fields are optional; only provided fields are updated. + properties: + min_cu: + type: number + format: double + minimum: 0.25 + maximum: 16 + description: Minimum compute units (0.25 to 16.0). Must be less than or equal to max_cu. + nullable: true + max_cu: + type: number + format: double + minimum: 0.25 + maximum: 16 + description: Maximum compute units (0.25 to 16.0). Must be greater than or equal to min_cu. max_cu - min_cu must not exceed 8.0. + nullable: true + sleep_timeout_seconds: + type: integer + format: int64 + minimum: -1 + description: Seconds of inactivity before the compute endpoint is suspended. Use -1 for always on, or a non-negative value. + nullable: true + required: true +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/deploys.yaml b/provider-dev/source/deploys.yaml new file mode 100644 index 0000000..f59f119 --- /dev/null +++ b/provider-dev/source/deploys.yaml @@ -0,0 +1,1967 @@ +openapi: 3.0.0 +info: + title: deploys API + description: netlify deploys API + version: 2.57.0 +paths: + /sites/{site_id}/deploys: + get: + operationId: listSiteDeploys + tags: + - deploy + parameters: + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy-previews + in: query + schema: + type: boolean + - name: production + in: query + schema: + type: boolean + - name: state + in: query + schema: + type: string + enum: + - new + - pending_review + - accepted + - rejected + - enqueued + - building + - uploading + - uploaded + - preparing + - prepared + - processing + - processed + - ready + - error + - retrying + - name: branch + in: query + schema: + type: string + - name: latest-published + in: query + schema: + type: boolean + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createSiteDeploy + tags: + - deploy + parameters: + - name: title + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy-previews + in: query + schema: + type: boolean + - name: production + in: query + schema: + type: boolean + - name: state + in: query + schema: + type: string + enum: + - new + - pending_review + - accepted + - rejected + - enqueued + - building + - uploading + - uploaded + - preparing + - prepared + - processing + - processed + - ready + - error + - retrying + - name: branch + in: query + schema: + type: string + - name: latest-published + in: query + schema: + type: boolean + requestBody: + $ref: '#/components/requestBodies/createSiteDeployDeploy' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/deploys/{deploy_id}: + get: + operationId: getSiteDeploy + tags: + - deploy + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + put: + operationId: updateSiteDeploy + tags: + - deploy + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy_id + in: path + required: true + schema: + type: string + - name: commit_ref + in: query + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/createSiteDeployDeploy' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSiteDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/cancel: + post: + operationId: cancelSiteDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '201': + description: Cancelled + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/deploys/{deploy_id}/restore: + post: + operationId: restoreSiteDeploy + tags: + - deploy + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/rollback: + put: + operationId: rollbackSiteDeploy + tags: + - deploy + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /deploys/{deploy_id}: + get: + operationId: getDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/validations_report: + patch: + operationId: updateDeployValidations + tags: + - deploy + description: Updates the deploy validations report for a deploy. + x-internal: true + x-controller: api/v1/deploys + x-action: validations_report + parameters: + - name: deploy_id + description: The ID of the deploy + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + properties: + secrets_scan: + type: string + description: (opaque JSON object) + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + description: The id of the deploy validations report + deploy_id: + type: string + description: The id of the deploy + secret_scan_result: + type: object + properties: + scannedFilesCount: + type: integer + description: The number of files scanned + secretsScanMatches: + type: array + items: + type: string + description: The list of secrets scan matches + /deploys/{deploy_id}/lock: + post: + operationId: lockDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/unlock: + post: + operationId: unlockDeploy + tags: + - deploy + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/files/{path}: + put: + operationId: uploadDeployFile + tags: + - file + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + - name: path + in: path + required: true + schema: + type: string + - name: size + in: query + schema: + type: integer + requestBody: + $ref: '#/components/requestBodies/uploadDeployFileFileBody' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + path: + type: string + sha: + type: string + mime_type: + type: string + size: + type: integer + format: int64 + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/functions/{name}: + put: + operationId: uploadDeployFunction + tags: + - function + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + - name: name + in: path + required: true + schema: + type: string + - name: runtime + in: query + schema: + type: string + - name: invocation_mode + in: query + schema: + type: string + - name: timeout + in: query + schema: + type: integer + - name: size + in: query + schema: + type: integer + - name: X-Nf-Retry-Count + in: header + schema: + type: integer + requestBody: + $ref: '#/components/requestBodies/uploadDeployFileFileBody' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + sha: + type: string + region: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploys/{deploy_id}/edge_functions/{code_sha}: + put: + operationId: uploadDeployEdgeFunction + tags: + - edgeFunction + parameters: + - name: deploy_id + in: path + required: true + schema: + type: string + - name: code_sha + in: path + required: true + schema: + type: string + - name: X-Nf-Retry-Count + in: header + schema: + type: integer + requestBody: + $ref: '#/components/requestBodies/uploadDeployFileFileBody' + responses: + '200': + description: OK + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploy_keys: + get: + operationId: listDeployKeys + tags: + - deployKey + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + public_key: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createDeployKey + tags: + - deployKey + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + public_key: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /deploy_keys/{key_id}: + get: + operationId: getDeployKey + tags: + - deployKey + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + public_key: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: key_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteDeployKey + tags: + - deployKey + responses: + '204': + description: Not Content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: key_id + in: path + required: true + schema: + type: string +components: + requestBodies: + createSiteDeployDeploy: + content: + application/json: + schema: + type: object + description: | + Deploy files can be provided in two ways: + 1. As a JSON object using 'files' (a hash mapping file paths to SHA1 digests), OR + 2. As a zip file using one of these methods: + - Set Content-Type to 'application/zip' and send the zip file as the raw request body + - Include the zip file content in the 'zip' field of this JSON object with Content-Type 'application/json' + properties: + files: + type: string + description: A hash mapping file paths to SHA1 digests of the file contents. (opaque JSON object) + zip: + type: string + format: binary + description: | + A zip file containing the site files to deploy. Alternative to 'files'. + To use this field, set Content-Type to 'application/json' and include the zip content here. + Alternatively, you can set Content-Type to 'application/zip' and send the zip as the raw request body (not as JSON). + draft: + type: boolean + async: + type: boolean + functions: + type: string + description: (opaque JSON object) + edge_functions: + type: string + description: |- + A hash mapping edge-function bundle formats to the code_sha of each bundle. The + response's required_edge_functions lists which of these still need to be uploaded. + (opaque JSON object) + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_config: + type: object + additionalProperties: + type: object + properties: + display_name: + type: string + generator: + type: string + build_data: + type: string + description: (opaque JSON object) + memory: + type: integer + description: | + The function's memory allocation in MB. Mutually exclusive with `vcpu`. + routes: + type: array + items: + type: object + properties: + pattern: + type: string + literal: + type: string + expression: + type: string + methods: + type: array + items: + type: string + enum: + - GET + - POST + - PUT + - PATCH + - DELETE + - OPTIONS + prefer_static: + type: boolean + excluded_routes: + type: array + items: + type: object + properties: + pattern: + type: string + literal: + type: string + expression: + type: string + priority: + type: integer + region: + type: string + traffic_rules: + type: object + properties: + action: + type: object + properties: + type: + type: string + config: + type: object + properties: + to: + type: string + rate_limit_config: + type: object + properties: + algorithm: + type: string + enum: + - sliding_window + window_size: + type: integer + window_limit: + type: integer + aggregate: + type: object + properties: + keys: + type: array + items: + type: object + properties: + type: + type: string + enum: + - ip + - domain + vcpu: + type: number + format: float + description: | + Number of vCPUs to provision for the function. Allowed range is + 0.5–2. + event_subscriptions: + type: array + items: + type: string + branch: + type: string + framework: + type: string + framework_version: + type: string + environment: + description: | + A list of deploy-specific environment variable data. Data specified this way applies only + to this specific deploy and is merged into any existing environment variables set on the + account and site. + + Deploy-specific environment variable data takes precedence over account and site + environment variable data: For example, a deploy-specific variable with the key `NODE_ENV` + will take priority over any existing site- and account-level environment variable data + with the key `NODE_ENV`. + + Environment variable data may be provided at one of two times: + + - When creating a new Deploy with deploy files (most common) + - When finalizing an existing Deploy with deploy files + + Once set, environment variables for a specific deploy cannot be modified. Subsequent + attempts to modify environment variable data for a deploy will be ignored. + type: array + items: + type: object + required: + - key + - value + - scopes + - is_secret + properties: + key: + type: string + value: + type: string + is_secret: + type: boolean + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + required: true + uploadDeployFileFileBody: + content: + application/octet-stream: + schema: + type: string + format: binary + required: true + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/dev_servers.yaml b/provider-dev/source/dev_servers.yaml new file mode 100644 index 0000000..22a440f --- /dev/null +++ b/provider-dev/source/dev_servers.yaml @@ -0,0 +1,588 @@ +openapi: 3.0.0 +info: + title: dev_servers API + description: netlify dev_servers API + version: 2.57.0 +paths: + /sites/{site_id}/dev_servers: + get: + operationId: listSiteDevServers + tags: + - devServer + parameters: + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + branch: + type: string + url: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + starting_at: + type: string + format: dateTime + error_at: + type: string + format: dateTime + live_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createSiteDevServer + tags: + - devServer + parameters: + - name: branch + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + branch: + type: string + url: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + starting_at: + type: string + format: dateTime + error_at: + type: string + format: dateTime + live_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSiteDevServers + tags: + - devServer + parameters: + - name: branch + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '202': + description: OK + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/dev_servers/{dev_server_id}: + get: + operationId: getSiteDevServer + tags: + - devServer + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + branch: + type: string + url: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + starting_at: + type: string + format: dateTime + error_at: + type: string + format: dateTime + live_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: dev_server_id + in: path + required: true + schema: + type: string + /sites/{site_id}/dev_servers/{dev_server_id}/activity: + post: + x-internal: true + operationId: markDevServerActivity + tags: + - devServer + responses: + '200': + description: OK + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: dev_server_id + in: path + required: true + schema: + type: string + /sites/{site_id}/dev_servers/{dev_server_id}/state: + post: + operationId: updateDevServerState + tags: + - devServer + requestBody: + content: + application/json: + schema: + type: object + required: + - state + properties: + state: + type: string + enum: + - starting + - live + - error + - done + task_id: + type: string + error: + type: string + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + branch: + type: string + url: + type: string + state: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + starting_at: + type: string + format: dateTime + error_at: + type: string + format: dateTime + live_at: + type: string + format: dateTime + done_at: + type: string + format: dateTime + title: + type: string + '409': + description: Conflict + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: dev_server_id + in: path + required: true + schema: + type: string + /sites/{site_id}/dev_server_hooks: + get: + operationId: listSiteDevServerHooks + tags: + - devServerHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + type: + type: string + enum: + - new_dev_server + - content_refresh + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + post: + operationId: createSiteDevServerHook + tags: + - devServerHook + requestBody: + $ref: '#/components/requestBodies/createSiteDevServerHookDevserverhook' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + type: + type: string + enum: + - new_dev_server + - content_refresh + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/dev_server_hooks/{id}: + get: + operationId: getSiteDevServerHook + tags: + - devServerHook + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + title: + type: string + branch: + type: string + url: + type: string + site_id: + type: string + created_at: + type: string + format: dateTime + type: + type: string + enum: + - new_dev_server + - content_refresh + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + put: + operationId: updateSiteDevServerHook + tags: + - devServerHook + requestBody: + $ref: '#/components/requestBodies/createSiteDevServerHookDevserverhook' + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + delete: + operationId: deleteSiteDevServerHook + tags: + - devServerHook + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string +components: + requestBodies: + createSiteDevServerHookDevserverhook: + content: + application/json: + schema: + type: object + properties: + title: + type: string + branch: + type: string + type: + type: string + enum: + - new_dev_server + - content_refresh + required: true + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/dns.yaml b/provider-dev/source/dns.yaml new file mode 100644 index 0000000..92c3cd9 --- /dev/null +++ b/provider-dev/source/dns.yaml @@ -0,0 +1,711 @@ +openapi: 3.0.0 +info: + title: dns API + description: netlify dns API + version: 2.57.0 +paths: + /dns_zones: + post: + operationId: createDnsZone + tags: + - dnsZone + requestBody: + content: + application/json: + schema: + type: object + properties: + account_slug: + type: string + site_id: + type: string + name: + type: string + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + get: + operationId: getDnsZones + tags: + - dnsZone + parameters: + - name: account_slug + in: query + required: false + schema: + type: string + responses: + '200': + description: get all DNS zones the user has access to + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /dns_zones/{zone_id}: + get: + operationId: getDnsZone + tags: + - dnsZone + responses: + '200': + description: get a single DNS zone + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteDnsZone + tags: + - dnsZone + responses: + '204': + description: delete a single DNS zone + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + /dns_zones/{zone_id}/transfer: + put: + operationId: transferDnsZone + tags: + - dnsZone + responses: + '200': + description: transfer a DNS zone to another account + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + - name: account_id + in: query + description: the account of the dns zone + required: true + schema: + type: string + - name: transfer_account_id + in: query + description: the account you want to transfer the dns zone to + required: true + schema: + type: string + - name: transfer_user_id + in: query + description: the user you want to transfer the dns zone to + required: true + schema: + type: string + /dns_zones/{zone_id}/dns_records: + get: + operationId: getDnsRecords + tags: + - dnsZone + responses: + '200': + description: get all DNS records for a single DNS zone + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + post: + operationId: createDnsRecord + tags: + - dnsZone + requestBody: + content: + application/json: + schema: + type: object + properties: + type: + type: string + hostname: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + weight: + type: integer + format: int64 + port: + type: integer + format: int64 + flag: + type: integer + format: int64 + tag: + type: string + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + /dns_zones/{zone_id}/dns_records/{dns_record_id}: + get: + operationId: getIndividualDnsRecord + tags: + - dnsZone + responses: + '200': + description: get a single DNS record + content: + application/json: + schema: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + - name: dns_record_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteDnsRecord + tags: + - dnsZone + responses: + '204': + description: record deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: zone_id + in: path + required: true + schema: + type: string + - name: dns_record_id + in: path + required: true + schema: + type: string +components: + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/env.yaml b/provider-dev/source/env.yaml new file mode 100644 index 0000000..b42d0cb --- /dev/null +++ b/provider-dev/source/env.yaml @@ -0,0 +1,972 @@ +openapi: 3.0.0 +info: + title: env API + description: netlify env API + version: 2.57.0 +paths: + /accounts/{account_id}/env: + get: + tags: + - environmentVariables + operationId: getEnvVars + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: context_name + description: Filter by deploy context + required: false + in: query + schema: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - name: scope + description: Filter by scope + required: false + in: query + schema: + type: string + enum: + - builds + - functions + - runtime + - post-processing + - name: site_id + description: If specified, only return environment variables set on this site + required: false + in: query + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Returns all environment variables for an account or site. An account corresponds to a team in the Netlify UI. + post: + tags: + - environmentVariables + operationId: createEnvVars + description: Creates new environment variables. Granular scopes are available on Pro plans and above. + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, create an environment variable on the site level, not the account level + required: false + in: query + schema: + type: string + requestBody: + content: + application/json: + schema: + type: array + items: + type: object + properties: + key: + type: string + description: The existing or new name of the key, if you wish to rename it (case-sensitive) + scopes: + description: The scopes that this environment variable is set to (Pro plans and above) + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + responses: + '201': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /accounts/{account_id}/env/{key}: + get: + tags: + - environmentVariables + operationId: getEnvVar + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: key + description: The environment variable key (case-sensitive) + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, return the environment variable for a specific site (no merging is performed) + required: false + in: query + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Returns an individual environment variable. + put: + tags: + - environmentVariables + operationId: updateEnvVar + description: Updates an existing environment variable and all of its values. Existing values will be replaced by values provided. + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: key + description: The existing environment variable key name (case-sensitive) + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, update an environment variable set on this site + required: false + in: query + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + properties: + key: + type: string + description: The existing or new name of the key, if you wish to rename it (case-sensitive) + scopes: + description: The scopes that this environment variable is set to (Pro plans and above) + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + patch: + tags: + - environmentVariables + operationId: setEnvVarValue + description: Updates or creates a new value for an existing environment variable. + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: key + description: The existing environment variable key name (case-sensitive) + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, update an environment variable set on this site + in: query + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + properties: + context: + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. `branch` must be provided with a value in `context_parameter`. + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + context_parameter: + description: An additional parameter for custom branches. Currently, this is used for providing a branch name when `context=branch`. + type: string + value: + description: The environment variable's unencrypted value + type: string + responses: + '201': + description: Created (success) + content: + application/json: + schema: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + tags: + - environmentVariables + operationId: deleteEnvVar + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: key + description: The environment variable key (case-sensitive) + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, delete the environment variable from this site + required: false + in: query + schema: + type: string + responses: + '204': + description: No Content (success) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Deletes an environment variable + /accounts/{account_id}/env/{key}/value/{id}: + delete: + tags: + - environmentVariables + operationId: deleteEnvVarValue + parameters: + - name: account_id + description: Scope response to account_id + required: true + in: path + schema: + type: string + - name: id + description: The environment variable value's ID + required: true + in: path + schema: + type: string + - name: key + description: The environment variable key name (case-sensitive) + required: true + in: path + schema: + type: string + - name: site_id + description: If provided, delete the value from an environment variable on this site + required: false + in: query + schema: + type: string + responses: + '204': + description: No Content (success) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Deletes a specific environment variable value. + /sites/{site_id}/env: + get: + tags: + - environmentVariables + operationId: getSiteEnvVars + parameters: + - name: context_name + description: Filter by deploy context + required: false + in: query + schema: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - name: scope + description: Filter by scope + required: false + in: query + schema: + type: string + enum: + - builds + - functions + - runtime + - post_processing + - name: site_id + description: Scope response to site_id + required: true + in: path + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + key: + type: string + description: The environment variable key, like ALGOLIA_ID (case-sensitive) + x-faker: commerce.productName + scopes: + type: array + items: + type: string + enum: + - builds + - functions + - runtime + - post-processing + description: The scopes that this environment variable is set to + values: + type: array + items: + type: object + properties: + id: + type: string + description: The environment variable value's universally unique ID + x-faker: datatype.uuid + value: + type: string + description: The environment variable's unencrypted value + x-faker: internet.password + context: + type: string + enum: + - all + - dev + - dev-server + - branch-deploy + - deploy-preview + - production + - branch + description: The deploy context in which this value will be used. `dev` refers to local development when running `netlify dev`. + context_parameter: + type: string + description: An additional parameter for custom branches. Currently, this is used for specifying a branch name when `context=branch`. + description: Environment variable value model definition + description: An array of Value objects containing values and metadata + x-faker: internet.password + is_secret: + type: boolean + description: Secret values are only readable by code running on Netlify's systems. With secrets, only the local development context values are readable from the UI, API, and CLI. By default, environment variable values are not secret. + updated_at: + type: string + format: date-time + description: The timestamp of when the value was last updated + x-faker: date.past + updated_by: + type: object + properties: + id: + type: string + description: The user's unique identifier + x-faker: datatype.number + full_name: + type: string + description: The user's full name (first and last) + x-faker: name.findName + email: + type: string + description: The user's email address + x-faker: internet.email + avatar_url: + type: string + description: A URL pointing to the user's avatar + x-faker: internet.avatar + description: Environment variable model definition + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: Returns all environment variables for a site. This convenience method behaves the same as `getEnvVars` but doesn't require an `account_id` as input. +components: + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/forms.yaml b/provider-dev/source/forms.yaml new file mode 100644 index 0000000..cd653ae --- /dev/null +++ b/provider-dev/source/forms.yaml @@ -0,0 +1,358 @@ +openapi: 3.0.0 +info: + title: forms API + description: netlify forms API + version: 2.57.0 +paths: + /sites/{site_id}/forms: + get: + operationId: listSiteForms + tags: + - form + parameters: + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + name: + type: string + paths: + type: array + items: + type: string + submission_count: + type: integer + format: int32 + fields: + type: array + items: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/forms/{form_id}: + delete: + operationId: deleteSiteForm + tags: + - form + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: form_id + in: path + required: true + schema: + type: string + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/submissions: + get: + operationId: listSiteSubmissions + tags: + - submission + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + number: + type: integer + format: int32 + email: + type: string + name: + type: string + first_name: + type: string + last_name: + type: string + company: + type: string + summary: + type: string + body: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + site_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /forms/{form_id}/submissions: + get: + operationId: listFormSubmissions + tags: + - submission + parameters: + - name: form_id + in: path + required: true + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + number: + type: integer + format: int32 + email: + type: string + name: + type: string + first_name: + type: string + last_name: + type: string + company: + type: string + summary: + type: string + body: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + site_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /submissions/{submission_id}: + get: + operationId: listFormSubmission + tags: + - submission + parameters: + - name: query + in: query + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + - name: submission_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + number: + type: integer + format: int32 + email: + type: string + name: + type: string + first_name: + type: string + last_name: + type: string + company: + type: string + summary: + type: string + body: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + site_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSubmission + tags: + - submission + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: submission_id + in: path + required: true + schema: + type: string +components: + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/functions.yaml b/provider-dev/source/functions.yaml new file mode 100644 index 0000000..7a7e8e5 --- /dev/null +++ b/provider-dev/source/functions.yaml @@ -0,0 +1,67 @@ +openapi: 3.0.0 +info: + title: functions API + description: netlify functions API + version: 2.57.0 +paths: + /sites/{site_id}/functions: + get: + operationId: searchSiteFunctions + tags: + - function + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: filter + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + branch: + type: string + created_at: + type: string + format: dateTime + functions: + type: array + items: + type: string + description: (opaque JSON object) + id: + type: string + log_type: + type: string + provider: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false +components: + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/hooks.yaml b/provider-dev/source/hooks.yaml new file mode 100644 index 0000000..7920e07 --- /dev/null +++ b/provider-dev/source/hooks.yaml @@ -0,0 +1,360 @@ +openapi: 3.0.0 +info: + title: hooks API + description: netlify hooks API + version: 2.57.0 +paths: + /hooks: + get: + operationId: listHooksBySiteId + tags: + - hook + parameters: + - name: site_id + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + post: + operationId: createHookBySiteId + tags: + - hook + parameters: + - name: site_id + in: query + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/createHookBySiteIdHook' + responses: + '201': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /hooks/{hook_id}: + get: + operationId: getHook + tags: + - hook + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: hook_id + in: path + required: true + schema: + type: string + put: + operationId: updateHook + tags: + - hook + requestBody: + $ref: '#/components/requestBodies/createHookBySiteIdHook' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: hook_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteHook + tags: + - hook + responses: + '204': + description: No content + parameters: + - name: hook_id + in: path + required: true + schema: + type: string + /hooks/{hook_id}/enable: + post: + operationId: enableHook + tags: + - hook + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: hook_id + in: path + required: true + schema: + type: string + /hooks/types: + get: + operationId: listHookTypes + tags: + - hookType + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + name: + type: string + events: + type: array + items: + type: string + fields: + type: array + items: + type: string + description: (opaque JSON object) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false +components: + requestBodies: + createHookBySiteIdHook: + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + type: + type: string + event: + type: string + data: + type: string + description: (opaque JSON object) + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + disabled: + type: boolean + required: true + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/oauth.yaml b/provider-dev/source/oauth.yaml new file mode 100644 index 0000000..ca4fb41 --- /dev/null +++ b/provider-dev/source/oauth.yaml @@ -0,0 +1,178 @@ +openapi: 3.0.0 +info: + title: oauth API + description: netlify oauth API + version: 2.57.0 +paths: + /oauth/tickets: + post: + operationId: createTicket + tags: + - ticket + parameters: + - name: client_id + in: query + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + properties: + message: + type: string + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + client_id: + type: string + authorized: + type: boolean + created_at: + type: string + format: dateTime + '401': + description: OAuth application not found + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + '422': + description: Validation error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /oauth/tickets/{ticket_id}: + get: + operationId: showTicket + tags: + - ticket + parameters: + - name: ticket_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + type: object + properties: + id: + type: string + client_id: + type: string + authorized: + type: boolean + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /oauth/tickets/{ticket_id}/exchange: + post: + operationId: exchangeTicket + tags: + - accessToken + parameters: + - name: ticket_id + in: path + required: true + schema: + type: string + responses: + '201': + description: ok + content: + application/json: + schema: + type: object + properties: + id: + type: string + access_token: + type: string + user_id: + type: string + user_email: + type: string + created_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false +components: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/services.yaml b/provider-dev/source/services.yaml new file mode 100644 index 0000000..85ab246 --- /dev/null +++ b/provider-dev/source/services.yaml @@ -0,0 +1,486 @@ +openapi: 3.0.0 +info: + title: services API + description: netlify services API + version: 2.57.0 +paths: + /sites/{site_id}/service-instances: + get: + operationId: listServiceInstancesForSite + tags: + - serviceInstance + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + url: + type: string + config: + type: string + description: (opaque JSON object) + external_attributes: + type: string + description: (opaque JSON object) + service_slug: + type: string + service_path: + type: string + service_name: + type: string + env: + type: string + description: (opaque JSON object) + snippets: + type: array + items: + type: string + description: (opaque JSON object) + auth_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/services/{addon}/instances: + post: + operationId: createServiceInstance + tags: + - serviceInstance + requestBody: + $ref: '#/components/requestBodies/updateSiteMetadataMetadata' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + url: + type: string + config: + type: string + description: (opaque JSON object) + external_attributes: + type: string + description: (opaque JSON object) + service_slug: + type: string + service_path: + type: string + service_name: + type: string + env: + type: string + description: (opaque JSON object) + snippets: + type: array + items: + type: string + description: (opaque JSON object) + auth_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: addon + in: path + required: true + schema: + type: string + /sites/{site_id}/services/{addon}/instances/{instance_id}: + get: + operationId: showServiceInstance + tags: + - serviceInstance + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + url: + type: string + config: + type: string + description: (opaque JSON object) + external_attributes: + type: string + description: (opaque JSON object) + service_slug: + type: string + service_path: + type: string + service_name: + type: string + env: + type: string + description: (opaque JSON object) + snippets: + type: array + items: + type: string + description: (opaque JSON object) + auth_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: addon + in: path + required: true + schema: + type: string + - name: instance_id + in: path + required: true + schema: + type: string + put: + operationId: updateServiceInstance + tags: + - serviceInstance + requestBody: + $ref: '#/components/requestBodies/updateSiteMetadataMetadata' + responses: + '204': + description: No Content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: addon + in: path + required: true + schema: + type: string + - name: instance_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteServiceInstance + tags: + - serviceInstance + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: addon + in: path + required: true + schema: + type: string + - name: instance_id + in: path + required: true + schema: + type: string + /services/: + get: + operationId: getServices + tags: + - service + responses: + '200': + description: services + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + service_path: + type: string + long_description: + type: string + description: + type: string + events: + type: array + items: + type: string + description: (opaque JSON object) + tags: + type: array + items: + type: string + icon: + type: string + manifest_url: + type: string + environments: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: search + in: query + schema: + type: string + /services/{addonName}: + get: + operationId: showService + tags: + - service + responses: + '200': + description: services + content: + application/json: + schema: + type: object + properties: + id: + type: string + name: + type: string + slug: + type: string + service_path: + type: string + long_description: + type: string + description: + type: string + events: + type: array + items: + type: string + description: (opaque JSON object) + tags: + type: array + items: + type: string + icon: + type: string + manifest_url: + type: string + environments: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: addonName + in: path + required: true + schema: + type: string + /services/{addonName}/manifest: + get: + operationId: showServiceManifest + tags: + - service + responses: + '201': + description: retrieving from provider + content: + application/json: + schema: + type: string + description: (opaque JSON object) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: addonName + in: path + required: true + schema: + type: string +components: + requestBodies: + updateSiteMetadataMetadata: + content: + application/json: + schema: + type: string + description: (opaque JSON object) + required: true + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/sites.yaml b/provider-dev/source/sites.yaml new file mode 100644 index 0000000..0d77b67 --- /dev/null +++ b/provider-dev/source/sites.yaml @@ -0,0 +1,3788 @@ +openapi: 3.0.0 +info: + title: sites API + description: netlify sites API + version: 2.57.0 +paths: + /sites: + get: + operationId: listSites + tags: + - site + parameters: + - name: name + in: query + schema: + type: string + - name: filter + in: query + schema: + type: string + enum: + - all + - owner + - guest + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables.' + post: + operationId: createSite + tags: + - site + parameters: + - name: configure_dns + in: query + schema: + type: boolean + requestBody: + $ref: '#/components/requestBodies/createSiteSite' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site.' + /sites/{site_id}: + get: + operationId: getSite + tags: + - site + parameters: + - name: feature_flags + x-internal: true + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables.' + patch: + operationId: updateSite + tags: + - site + requestBody: + $ref: '#/components/requestBodies/createSiteSite' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [updateEnvVar](#tag/environmentVariables/operation/updateEnvVar) to update a site''s environment variables.' + parameters: + - name: site_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteSite + tags: + - site + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/ssl: + post: + operationId: provisionSiteTLSCertificate + tags: + - sniCertificate + description: |- + Provisions or updates a TLS certificate for the site. + + **Creating a certificate (site has no certificate):** + - Omit certificate params to initiate Let's Encrypt provisioning + - Provide certificate, key, and ca_certificates to upload a custom certificate + + **Updating a certificate (site already has a certificate):** + - REQUIRES certificate, key, and ca_certificates to replace with a new custom certificate + - Use POST /api/v1/sites/{site_id}/ssl/renew to renew an existing Let's Encrypt certificate + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: certificate + in: query + description: PEM-encoded certificate. Required when updating an existing certificate. + schema: + type: string + - name: key + in: query + description: PEM-encoded private key. Required when updating an existing certificate. + schema: + type: string + - name: ca_certificates + in: query + description: PEM-encoded CA certificate chain. Required when updating an existing certificate. + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + state: + type: string + domains: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + expires_at: + type: string + format: dateTime + '422': + description: 'Unprocessable Entity. Returns errors such as: "certificate parameter is required when updating an existing certificate" (when updating without params), "No custom domain configured", or "bad dns for custom domain"' + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + get: + operationId: showSiteTLSCertificate + tags: + - sniCertificate + parameters: + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + state: + type: string + domains: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + expires_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/ssl/certificates: + get: + operationId: getAllCertificates + tags: + - sniCertificate + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: domain + in: query + required: true + schema: + type: string + responses: + '200': + description: Array of SNI Certificates + content: + application/json: + schema: + type: array + items: + type: object + properties: + state: + type: string + domains: + type: array + items: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + expires_at: + type: string + format: dateTime + '404': + description: Not Found + '422': + description: Unprocessable Entity + /sites/{site_id}/files: + get: + operationId: listSiteFiles + tags: + - file + parameters: + - name: site_id + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + path: + type: string + sha: + type: string + mime_type: + type: string + size: + type: integer + format: int64 + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/assets: + get: + operationId: listSiteAssets + tags: + - asset + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + creator_id: + type: string + name: + type: string + state: + type: string + content_type: + type: string + url: + type: string + key: + type: string + visibility: + type: string + size: + type: integer + format: int64 + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + post: + operationId: createSiteAsset + tags: + - asset + parameters: + - name: name + in: query + required: true + schema: + type: string + - name: size + in: query + required: true + schema: + type: integer + format: int64 + - name: content_type + in: query + required: true + schema: + type: string + - name: visibility + in: query + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + form: + type: object + properties: + url: + type: string + fields: + type: object + additionalProperties: + type: string + asset: + type: object + properties: + id: + type: string + site_id: + type: string + creator_id: + type: string + name: + type: string + state: + type: string + content_type: + type: string + url: + type: string + key: + type: string + visibility: + type: string + size: + type: integer + format: int64 + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/assets/{asset_id}: + get: + operationId: getSiteAssetInfo + tags: + - asset + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + creator_id: + type: string + name: + type: string + state: + type: string + content_type: + type: string + url: + type: string + key: + type: string + visibility: + type: string + size: + type: integer + format: int64 + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: asset_id + in: path + required: true + schema: + type: string + put: + operationId: updateSiteAsset + tags: + - asset + parameters: + - name: state + in: query + required: true + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + - name: asset_id + in: path + required: true + schema: + type: string + responses: + '200': + description: Updated + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + creator_id: + type: string + name: + type: string + state: + type: string + content_type: + type: string + url: + type: string + key: + type: string + visibility: + type: string + size: + type: integer + format: int64 + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + delete: + operationId: deleteSiteAsset + tags: + - asset + responses: + '204': + description: Deleted + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: asset_id + in: path + required: true + schema: + type: string + /sites/{site_id}/assets/{asset_id}/public_signature: + get: + operationId: getSiteAssetPublicSignature + tags: + - assetPublicSignature + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: asset_id + in: path + required: true + schema: + type: string + /sites/{site_id}/files/{file_path}: + get: + operationId: getSiteFileByPathName + tags: + - file + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: file_path + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + path: + type: string + sha: + type: string + mime_type: + type: string + size: + type: integer + format: int64 + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /purge: + post: + operationId: purgeCache + description: Purges cached content from Netlify's CDN. Supports purging by Cache-Tag. + tags: + - purge + requestBody: + content: + application/json: + schema: + type: object + properties: + site_id: + type: string + site_slug: + type: string + cache_tags: + type: array + items: + type: string + required: true + responses: + '202': + description: OK + '400': + description: Invalid request parameters + '404': + description: Site not found + /sites/{site_id}/snippets: + get: + operationId: listSiteSnippets + tags: + - snippet + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: integer + format: int32 + site_id: + type: string + title: + type: string + general: + type: string + general_position: + type: string + goal: + type: string + goal_position: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + post: + operationId: createSiteSnippet + tags: + - snippet + requestBody: + $ref: '#/components/requestBodies/createSiteSnippetSnippet' + responses: + '201': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: integer + format: int32 + site_id: + type: string + title: + type: string + general: + type: string + general_position: + type: string + goal: + type: string + goal_position: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/snippets/{snippet_id}: + get: + operationId: getSiteSnippet + tags: + - snippet + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: integer + format: int32 + site_id: + type: string + title: + type: string + general: + type: string + general_position: + type: string + goal: + type: string + goal_position: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: snippet_id + in: path + required: true + schema: + type: string + put: + operationId: updateSiteSnippet + tags: + - snippet + requestBody: + $ref: '#/components/requestBodies/createSiteSnippetSnippet' + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: snippet_id + in: path + required: true + schema: + type: string + delete: + operationId: deleteSiteSnippet + tags: + - snippet + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: snippet_id + in: path + required: true + schema: + type: string + /sites/{site_id}/metadata: + get: + operationId: getSiteMetadata + tags: + - metadata + responses: + '200': + description: OK + content: + application/json: + schema: + type: string + description: (opaque JSON object) + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + put: + operationId: updateSiteMetadata + tags: + - metadata + requestBody: + $ref: '#/components/requestBodies/updateSiteMetadataMetadata' + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/deployed-branches: + get: + operationId: listSiteDeployedBranches + tags: + - deployedBranch + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + deploy_id: + type: string + name: + type: string + slug: + type: string + url: + type: string + ssl_url: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/unlink_repo: + put: + operationId: unlinkSiteRepo + tags: + - site + description: |- + [Beta] Unlinks the repo from the site. + + This action will also: + - Delete associated deploy keys + - Delete outgoing webhooks for the repo + - Delete the site's build hooks + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + '404': + description: Site not found + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/enable: + put: + operationId: enableSite + tags: + - site + description: Re-enables a site that was previously disabled by the user. Sites that were disabled for usage exceeded or marked as spam cannot be re-enabled via this endpoint. + responses: + '204': + description: No content + '422': + description: Cannot enable this site + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/disable: + put: + operationId: disableSite + tags: + - site + description: Disables a site, preventing it from serving content. The site can be re-enabled later using the enable endpoint. + parameters: + - name: reason + in: query + required: true + description: Reason for disabling the site + schema: + type: string + - name: site_id + in: path + required: true + schema: + type: string + responses: + '204': + description: No content + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + /sites/{site_id}/dns: + get: + operationId: getDNSForSite + tags: + - dnsZone + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + put: + operationId: configureDNSForSite + tags: + - dnsZone + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + errors: + type: array + items: + type: string + supported_record_types: + type: array + items: + type: string + user_id: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + records: + type: array + items: + type: object + properties: + id: + type: string + hostname: + type: string + type: + type: string + value: + type: string + ttl: + type: integer + format: int64 + priority: + type: integer + format: int64 + dns_zone_id: + type: string + site_id: + type: string + flag: + type: integer + tag: + type: string + managed: + type: boolean + dns_servers: + type: array + items: + type: string + account_id: + type: string + site_id: + type: string + account_slug: + type: string + account_name: + type: string + domain: + type: string + ipv6_enabled: + type: boolean + dedicated: + type: boolean + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /{account_slug}/sites: + post: + operationId: createSiteInTeam + tags: + - site + parameters: + - name: configure_dns + in: query + schema: + type: boolean + - name: account_slug + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + repo: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site.' + get: + operationId: listSitesForAccount + tags: + - site + parameters: + - name: name + in: query + schema: + type: string + - name: account_slug + in: path + required: true + schema: + type: string + - name: page + required: false + in: query + schema: + type: integer + format: int32 + - name: per_page + required: false + in: query + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + description: '**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables.' +components: + requestBodies: + createSiteSite: + content: + application/json: + schema: + type: object + properties: + id: + type: string + state: + type: string + plan: + type: string + name: + type: string + custom_domain: + type: string + domain_aliases: + type: array + items: + type: string + branch_deploy_custom_domain: + type: string + deploy_preview_custom_domain: + type: string + password: + type: string + notification_email: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + screenshot_url: + type: string + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + user_id: + type: string + session_id: + type: string + ssl: + type: boolean + force_ssl: + type: boolean + managed_dns: + type: boolean + deploy_url: + type: string + published_deploy: + type: object + properties: + id: + type: string + site_id: + type: string + user_id: + type: string + build_id: + type: string + state: + type: string + name: + type: string + url: + type: string + ssl_url: + type: string + admin_url: + type: string + deploy_url: + type: string + deploy_ssl_url: + type: string + screenshot_url: + type: string + review_id: + type: number + draft: + type: boolean + required: + type: array + items: + type: string + required_functions: + type: array + items: + type: string + required_edge_functions: + type: array + items: + type: string + description: | + An array of code_shas for the edge-function bundles that need to be uploaded to + complete the deploy. + error_message: + type: string + branch: + type: string + commit_ref: + type: string + commit_url: + type: string + skipped: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + published_at: + type: string + format: dateTime + title: + type: string + context: + type: string + locked: + type: boolean + review_url: + type: string + framework: + type: string + skew_protection_token: + type: string + function_schedules: + type: array + items: + type: object + properties: + name: + type: string + cron: + type: string + functions_region: + type: string + description: | + The functions region for this deploy as an airport code. + functions_region_overrides: + type: array + items: + type: object + properties: + name: + type: string + region: + type: string + description: | + Functions in the deploy that explicitly specify their own region + (airport code). + account_id: + type: string + account_name: + type: string + account_slug: + type: string + git_provider: + type: string + deploy_hook: + type: string + capabilities: + type: object + additionalProperties: + type: string + description: (opaque JSON object) + processing_settings: + type: object + properties: + html: + type: object + properties: + pretty_urls: + type: boolean + build_settings: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + id_domain: + type: string + default_hooks_data: + type: object + properties: + access_token: + type: string + build_image: + type: string + prerender: + type: string + functions_region: + type: string + prevent_non_git_prod_deploys: + type: boolean + default: false + repo: + type: object + properties: + id: + type: integer + provider: + type: string + deploy_key_id: + type: string + repo_path: + type: string + repo_branch: + type: string + dir: + type: string + functions_dir: + type: string + description: The directory where Netlify can find your compiled functions to deploy them. Defaults to netlify/functions if not set. You can also define and override this setting in your project’s netlify.toml file. + cmd: + type: string + description: The build command to run. This is the command that Netlify runs to build your site. If a site has a netlify.toml file with a build command it will override this value. + allowed_branches: + type: array + items: + type: string + public_repo: + type: boolean + private_logs: + type: boolean + repo_url: + type: string + env: + type: object + additionalProperties: + type: string + installation_id: + type: integer + stop_builds: + type: boolean + description: When true, Netlify will not build your project automatically. You can build locally via the CLI and then publish new deploys manually via the CLI or the API. + required: true + createSiteSnippetSnippet: + content: + application/json: + schema: + type: object + properties: + id: + type: integer + format: int32 + site_id: + type: string + title: + type: string + general: + type: string + general_position: + type: string + goal: + type: string + goal_position: + type: string + required: true + updateSiteMetadataMetadata: + content: + application/json: + schema: + type: string + description: (opaque JSON object) + required: true + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/split_tests.yaml b/provider-dev/source/split_tests.yaml new file mode 100644 index 0000000..69f513c --- /dev/null +++ b/provider-dev/source/split_tests.yaml @@ -0,0 +1,335 @@ +openapi: 3.0.0 +info: + title: split_tests API + description: netlify split_tests API + version: 2.57.0 +paths: + /sites/{site_id}/traffic_splits: + post: + operationId: createSplitTest + tags: + - splitTest + requestBody: + $ref: '#/components/requestBodies/createSplitTestBranchTests' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + name: + type: string + path: + type: string + branches: + type: array + items: + type: string + description: (opaque JSON object) + active: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + unpublished_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + get: + operationId: getSplitTests + tags: + - splitTest + responses: + '200': + description: split_tests + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: string + site_id: + type: string + name: + type: string + path: + type: string + branches: + type: array + items: + type: string + description: (opaque JSON object) + active: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + unpublished_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + /sites/{site_id}/traffic_splits/{split_test_id}: + put: + operationId: updateSplitTest + tags: + - splitTest + requestBody: + $ref: '#/components/requestBodies/createSplitTestBranchTests' + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + name: + type: string + path: + type: string + branches: + type: array + items: + type: string + description: (opaque JSON object) + active: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + unpublished_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: split_test_id + in: path + required: true + schema: + type: string + get: + operationId: getSplitTest + tags: + - splitTest + responses: + '200': + description: split_test + content: + application/json: + schema: + type: object + properties: + id: + type: string + site_id: + type: string + name: + type: string + path: + type: string + branches: + type: array + items: + type: string + description: (opaque JSON object) + active: + type: boolean + created_at: + type: string + format: dateTime + updated_at: + type: string + format: dateTime + unpublished_at: + type: string + format: dateTime + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: split_test_id + in: path + required: true + schema: + type: string + /sites/{site_id}/traffic_splits/{split_test_id}/publish: + post: + operationId: enableSplitTest + tags: + - splitTest + responses: + '204': + description: enable + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: split_test_id + in: path + required: true + schema: + type: string + /sites/{site_id}/traffic_splits/{split_test_id}/unpublish: + post: + operationId: disableSplitTest + tags: + - splitTest + responses: + '204': + description: disabled + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false + parameters: + - name: site_id + in: path + required: true + schema: + type: string + - name: split_test_id + in: path + required: true + schema: + type: string +components: + requestBodies: + createSplitTestBranchTests: + content: + application/json: + schema: + type: object + properties: + branch_tests: + type: string + description: (opaque JSON object) + required: true + schemas: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/source/users.yaml b/provider-dev/source/users.yaml new file mode 100644 index 0000000..d1d4175 --- /dev/null +++ b/provider-dev/source/users.yaml @@ -0,0 +1,67 @@ +openapi: 3.0.0 +info: + title: users API + description: netlify users API + version: 2.57.0 +paths: + /user: + get: + operationId: getCurrentUser + tags: + - user + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + uid: + type: string + full_name: + type: string + avatar_url: + type: string + email: + type: string + affiliate_id: + type: string + site_count: + type: integer + format: int64 + created_at: + type: string + format: dateTime + last_login: + type: string + format: dateTime + login_providers: + type: array + items: + type: string + onboarding_progress: + type: object + properties: + slides: + type: string + default: + description: error + content: + application/json: + schema: + type: object + required: + - message + properties: + code: + type: integer + format: int64 + message: + type: string + nullable: false +components: {} +servers: + - url: https://api.netlify.com/api/v1 diff --git a/provider-dev/test/README.md b/provider-dev/test/README.md new file mode 100644 index 0000000..3bed452 --- /dev/null +++ b/provider-dev/test/README.md @@ -0,0 +1,83 @@ +# Tier 1 / smoke tests + +Smoke tests that exercise the provider against the live Netlify API. +Designed for WSL / Linux. The same suite runs in two transport modes and +against two provider sources: + +- `exec` - one-shot `stackql exec --output json` per query +- `pgwire` - long-lived `stackql srv`, queried over Postgres wire (psycopg) +- default - the locally generated provider (`provider-dev/openapi`) +- `--live` - the published provider from the public StackQL registry + (`REGISTRY PULL netlify` is issued once per session) + +## One-time setup + +```bash +# from repo root +bash provider-dev/test/bootstrap.sh # downloads latest stackql into provider-dev/test/.bin/ (or: make smoke-test) +python -m venv provider-dev/test/.venv +source provider-dev/test/.venv/bin/activate +pip install -r provider-dev/test/requirements.txt +``` + +## Run + +The Makefile wraps all of this (`make smoke-test`, `make smoke-test MODE=both`, +`make smoke-test LIVE=1`); the manual form is: + +```bash +set -a; source .env; set +a # repo-root .env sets NETLIFY_API_TOKEN + +# exec mode (default), local provider +pytest provider-dev/test/ -v + +# pgwire mode +pytest provider-dev/test/ -v --mode=pgwire + +# both modes - same suite runs twice +pytest provider-dev/test/ -v --mode=both + +# the published provider instead of the local build +pytest provider-dev/test/ -v --live +``` + +## What the suite does + +Reads across sites, deploys, builds, build hooks, SSL certificates, site +metadata, environment variables, DNS zones and records, teams, members, hook +types and add-on services; a pagination check (`per_page = 1` must return the +same count as the unpaged listing); an environment variable lifecycle +(`INSERT` -> `SELECT` -> `UPDATE` -> `REPLACE` -> `DELETE`) on the test site +using the key `TEST_ENV_KEY`; and one `EXEC` (cache purge). Cost is zero: +Netlify's API is free to call and nothing billable is created. Cases run in +file order so the delete always follows the insert. + +## What to edit when + +- **Add / change a query**: edit `tier1.yaml`. No Python changes needed. +- **Add a new assertion primitive**: edit `test_tier1.py`. +- **Point at another account / site**: set `TEST_ACCOUNT_SLUG` and + `TEST_SITE_NAME` in the environment (defaults in `provider.yaml`). The ids + the cases need (`TEST_SITE_ID`, `TEST_ACCOUNT_ID`, `TEST_DNS_ZONE_ID`, + `TEST_DEPLOY_ID`) are resolved by the `derived_env` queries in + `provider.yaml` at session start, or taken from the environment if set. +- **Reuse for another provider**: copy this directory, edit `provider.yaml` + (provider name, registry path, required auth env vars, defaults, derived + queries) and `tier1.yaml`. Nothing else should need to change. + +## tier1.yaml shape + +```yaml +- name: short_test_id + sql: | + SELECT ... WHERE site_id = '${TEST_SITE_ID}' + assertions: + min_rows: 1 # default 1; set 0 to allow empty + required_columns: [col_a, col_b] # must be present on every row + row_predicates: # python exprs, `rows` and `r` in scope + - "r['col_a'] == 'expected'" +``` + +`${VAR}` substitution looks up `test_env_defaults` and `derived_env` in +`provider.yaml` first, then the process environment. Use it for anything +per-environment - do not hard-code ids in `tier1.yaml`. diff --git a/provider-dev/test/bootstrap.sh b/provider-dev/test/bootstrap.sh new file mode 100644 index 0000000..ea34903 --- /dev/null +++ b/provider-dev/test/bootstrap.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# Downloads the latest stackql binary into provider-dev/test/.bin/ +# Designed for WSL / Linux. Idempotent - skips download if binary already present +# unless --force is passed. + +set -euo pipefail + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +BIN_DIR="${SCRIPT_DIR}/.bin" +BINARY="${BIN_DIR}/stackql" + +FORCE=0 +for arg in "$@"; do + case "$arg" in + --force) FORCE=1 ;; + -h|--help) + echo "Usage: $0 [--force]" + exit 0 + ;; + esac +done + +if [[ -x "${BINARY}" && "${FORCE}" -eq 0 ]]; then + echo "stackql already present at ${BINARY}" + "${BINARY}" --version || true + exit 0 +fi + +mkdir -p "${BIN_DIR}" +cd "${BIN_DIR}" + +echo "Downloading latest stackql binary..." +curl -sSL https://bit.ly/stackql-zip -o stackql-zip +unzip -o -q stackql-zip +rm -f stackql-zip +chmod +x stackql + +echo "stackql installed at ${BINARY}" +"${BINARY}" --version diff --git a/provider-dev/test/conftest.py b/provider-dev/test/conftest.py new file mode 100644 index 0000000..f88fe2b --- /dev/null +++ b/provider-dev/test/conftest.py @@ -0,0 +1,315 @@ +""" +Pytest fixtures for tier 1 / UAT smoke tests. + +Provides a `runner` fixture that executes SQL against the local stackql build +in one of two modes, selected via `--mode={exec,pgwire}`: + + exec - shells out to `stackql exec --output json ...` for each query. + No long-lived process. Simplest, matches how end users invoke stackql. + + pgwire - starts `stackql srv` once per session on a random port, connects + via psycopg, runs queries through the Postgres wire protocol. + Closer to how applications consume stackql. + +By default queries run against the locally generated provider (the file +registry under provider.yaml:registry_root). Pass `--live` to run the same +suite against the PUBLISHED provider from the public StackQL registry instead +(`REGISTRY PULL ` is issued once at session start) - this is the +post-publish verification. + +The same tier1.yaml runs under both modes - parity across the two transports +is part of what we're verifying. + +Designed to be reused as-is across providers. The only per-provider files are +provider.yaml (this directory) and tier1.yaml (this directory). +""" + +from __future__ import annotations + +import json +import os +import socket +import subprocess +import time +from dataclasses import dataclass +from pathlib import Path +from typing import Any + +import pytest +import yaml + +TEST_DIR = Path(__file__).resolve().parent +REPO_ROOT = TEST_DIR.parent.parent +BINARY = TEST_DIR / ".bin" / "stackql" + + +def pytest_addoption(parser: pytest.Parser) -> None: + parser.addoption( + "--mode", + action="store", + default="exec", + choices=("exec", "pgwire", "both"), + help="How to run stackql: exec (one-shot), pgwire (server), or both.", + ) + parser.addoption( + "--live", + action="store_true", + default=False, + help="Use the published provider from the public registry instead of the local build.", + ) + + +def pytest_generate_tests(metafunc: pytest.Metafunc) -> None: + if "mode" in metafunc.fixturenames: + chosen = metafunc.config.getoption("--mode") + modes = ("exec", "pgwire") if chosen == "both" else (chosen,) + metafunc.parametrize("mode", modes, scope="session") + + +@dataclass(frozen=True) +class ProviderConfig: + provider_name: str + registry_root: Path + required_env: list[str] + test_env_defaults: dict[str, str] + derived_env: dict[str, str] + + +@pytest.fixture(scope="session") +def provider_config() -> ProviderConfig: + with (TEST_DIR / "provider.yaml").open() as f: + data = yaml.safe_load(f) + registry_root = (REPO_ROOT / data["registry_root"]).resolve() + return ProviderConfig( + provider_name=data["provider_name"], + registry_root=registry_root, + required_env=list(data.get("required_env", [])), + test_env_defaults=dict(data.get("test_env_defaults", {})), + derived_env=dict(data.get("derived_env", {})), + ) + + +@pytest.fixture(scope="session") +def test_env(provider_config: ProviderConfig) -> dict[str, str]: + """Validates required auth env vars and applies test_env_defaults for + substitution inside tier1.yaml SQL strings.""" + missing = [v for v in provider_config.required_env if not os.environ.get(v)] + if missing: + pytest.exit( + f"Required env vars not set: {', '.join(missing)}. " + f"Source the repo-root .env (or set them) before running tests.", + returncode=2, + ) + # .strip() defends against CRLF in .env files sourced from WSL - a trailing + # \r in an auth header silently breaks API calls. + env = {k: os.environ[k].strip() for k in provider_config.required_env} + for key, default in provider_config.test_env_defaults.items(): + env[key] = os.environ.get(key, default).strip() + # Re-export the cleaned values so subprocesses (stackql exec/srv) see them. + for k, v in env.items(): + os.environ[k] = v + return env + + +@pytest.fixture(scope="session") +def stackql_binary() -> Path: + if not BINARY.exists(): + pytest.exit( + f"stackql binary not found at {BINARY}. " + f"Run `bash provider-dev/test/bootstrap.sh` first.", + returncode=2, + ) + return BINARY + + +@pytest.fixture(scope="session") +def live_mode(request: pytest.FixtureRequest) -> bool: + return bool(request.config.getoption("--live")) + + +@pytest.fixture(scope="session") +def registry_arg(provider_config: ProviderConfig, live_mode: bool) -> str | None: + """Registry JSON for the local build, or None for the public registry + (stackql's default when --registry is omitted).""" + if live_mode: + return None + cfg = { + "url": f"file://{provider_config.registry_root.as_posix()}", + "localDocRoot": provider_config.registry_root.as_posix(), + "verifyConfig": {"nopVerify": True}, + } + return json.dumps(cfg) + + +def _registry_flags(registry_arg: str | None) -> list[str]: + return ["--registry", registry_arg] if registry_arg else [] + + +@pytest.fixture(scope="session") +def provider_pulled(stackql_binary: Path, registry_arg: str | None, provider_config: ProviderConfig, live_mode: bool) -> None: + """In --live mode pull the published provider once per session so both + transports resolve it from the local provider cache.""" + if not live_mode: + return + proc = subprocess.run( + [str(stackql_binary), "exec", *_registry_flags(registry_arg), f"REGISTRY PULL {provider_config.provider_name};"], + capture_output=True, + text=True, + timeout=120, + ) + if proc.returncode != 0: + pytest.exit(f"REGISTRY PULL {provider_config.provider_name} failed: {proc.stderr.strip()}", returncode=2) + + +class StackqlRunner: + """Common interface both backends implement.""" + + def run(self, sql: str) -> list[dict[str, Any]]: + raise NotImplementedError + + +class ExecRunner(StackqlRunner): + def __init__(self, binary: Path, registry_arg: str | None) -> None: + self.binary = binary + self.registry_arg = registry_arg + + def run(self, sql: str) -> list[dict[str, Any]]: + proc = subprocess.run( + [ + str(self.binary), + "exec", + *_registry_flags(self.registry_arg), + "--output", "json", + sql, + ], + capture_output=True, + text=True, + timeout=60, + ) + if proc.returncode != 0: + raise RuntimeError( + f"stackql exec failed (rc={proc.returncode})\n" + f"stderr: {proc.stderr.strip()}\n" + f"stdout: {proc.stdout.strip()}" + ) + stdout = proc.stdout.strip() + if not stdout: + return [] + try: + data = json.loads(stdout) + except json.JSONDecodeError as e: + raise RuntimeError(f"non-JSON output from stackql exec: {e}\n{stdout!r}") + # an empty result set is emitted as the JSON literal `null` + if data is None: + return [] + return data if isinstance(data, list) else [data] + + +class PgwireRunner(StackqlRunner): + def __init__(self, conn) -> None: # noqa: ANN001 - psycopg.Connection + self.conn = conn + + def run(self, sql: str) -> list[dict[str, Any]]: + with self.conn.cursor() as cur: + cur.execute(sql) + if cur.description is None: + return [] + cols = [d.name for d in cur.description] + return [dict(zip(cols, row)) for row in cur.fetchall()] + + +def _free_port() -> int: + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.bind(("127.0.0.1", 0)) + return s.getsockname()[1] + + +def _wait_for_port(host: str, port: int, timeout: float = 15.0) -> None: + deadline = time.monotonic() + timeout + last_err: Exception | None = None + while time.monotonic() < deadline: + try: + with socket.create_connection((host, port), timeout=1.0): + return + except OSError as e: + last_err = e + time.sleep(0.2) + raise RuntimeError(f"stackql pgwire server did not accept connections on {host}:{port}: {last_err}") + + +@pytest.fixture(scope="session") +def pgwire_server(stackql_binary: Path, registry_arg: str | None, test_env: dict[str, str], provider_pulled: None): + """Starts stackql srv on a random port. Yields (host, port). Tears down on session end.""" + import psycopg # noqa: F401 - import here so exec-only runs don't need it installed + + port = _free_port() + log_path = TEST_DIR / ".bin" / f"stackql-server-{port}.log" + log_path.parent.mkdir(parents=True, exist_ok=True) + + env = {**os.environ} # auth env vars must be visible to the server process + cmd = [ + str(stackql_binary), + "srv", + *_registry_flags(registry_arg), + f"--pgsrv.port={port}", + ] + with log_path.open("w") as logf: + proc = subprocess.Popen(cmd, stdout=logf, stderr=subprocess.STDOUT, env=env) + try: + _wait_for_port("127.0.0.1", port) + yield ("127.0.0.1", port) + finally: + proc.terminate() + try: + proc.wait(timeout=5) + except subprocess.TimeoutExpired: + proc.kill() + + +@pytest.fixture(scope="session") +def derived_env(runner: "StackqlRunner", test_env: dict[str, str], provider_config: ProviderConfig) -> dict[str, str]: + """Resolves provider.yaml:derived_env - ${VAR}: - by + running each query through the session runner, unless the variable is + already set in the environment. Lets tier1.yaml reference ids (site id, + team id, ...) that differ per account without hard-coding them.""" + import re + + var_re = re.compile(r"\$\{([A-Z_][A-Z0-9_]*)\}") + for name, sql in provider_config.derived_env.items(): + if os.environ.get(name): + test_env[name] = os.environ[name].strip() + continue + resolved = var_re.sub(lambda m: test_env[m.group(1)], sql) + rows = runner.run(resolved) + if not rows: + pytest.exit(f"derived_env {name}: query returned no rows: {resolved}", returncode=2) + value = str(next(iter(rows[0].values()))) + test_env[name] = value + os.environ[name] = value + return test_env + + +@pytest.fixture(scope="session") +def runner( + mode: str, + stackql_binary: Path, + registry_arg: str | None, + test_env: dict[str, str], + provider_pulled: None, + request: pytest.FixtureRequest, +) -> StackqlRunner: + if mode == "exec": + return ExecRunner(stackql_binary, registry_arg) + + import psycopg + + host, port = request.getfixturevalue("pgwire_server") + conn = psycopg.connect( + host=host, + port=port, + user="stackql", + dbname="stackql", + autocommit=True, + ) + request.addfinalizer(conn.close) + return PgwireRunner(conn) diff --git a/provider-dev/test/provider.yaml b/provider-dev/test/provider.yaml new file mode 100644 index 0000000..0c04841 --- /dev/null +++ b/provider-dev/test/provider.yaml @@ -0,0 +1,30 @@ +# Per-provider settings consumed by conftest.py. +# This file is the only piece (besides tier1.yaml) that should differ between +# providers when reusing this test framework as an archetype. + +provider_name: netlify + +# Registry root - path relative to the repo root that contains src//... +# (ignored with --live, which uses the public registry) +registry_root: provider-dev/openapi + +# Auth env vars that MUST be set for tier 1 tests to run. +# If any are missing, the test session fails fast with a clear message. +required_env: + - NETLIFY_API_TOKEN + +# Optional env vars used inside tier1.yaml ${VAR} substitutions. +# Defaults are applied if the env var is not set. +test_env_defaults: + TEST_ACCOUNT_SLUG: jeffreyaven # team slug that owns the test site + TEST_SITE_NAME: sqlpedia # a site in that team (reads + the env var lifecycle) + TEST_ENV_KEY: STACKQL_SMOKE_TEST # disposable env var created and deleted by the suite + +# Environment-specific ids resolved by query at session start (each query must +# return one row; its first column is the value). Set the variable in the +# environment to skip the lookup. +derived_env: + TEST_SITE_ID: "SELECT id FROM netlify.sites.sites WHERE account_slug = '${TEST_ACCOUNT_SLUG}' AND name = '${TEST_SITE_NAME}'" + TEST_ACCOUNT_ID: "SELECT id FROM netlify.accounts.accounts WHERE slug = '${TEST_ACCOUNT_SLUG}'" + TEST_DNS_ZONE_ID: "SELECT id FROM netlify.dns.dns_zones WHERE account_slug = '${TEST_ACCOUNT_SLUG}'" + TEST_DEPLOY_ID: "SELECT id FROM netlify.deploys.deploys WHERE site_id = '${TEST_SITE_ID}' AND state = 'ready' AND per_page = 1" diff --git a/provider-dev/test/requirements.txt b/provider-dev/test/requirements.txt new file mode 100644 index 0000000..31799c9 --- /dev/null +++ b/provider-dev/test/requirements.txt @@ -0,0 +1,3 @@ +pytest>=7.4 +pyyaml>=6.0 +psycopg[binary]>=3.1 diff --git a/provider-dev/test/test_tier1.py b/provider-dev/test/test_tier1.py new file mode 100644 index 0000000..4cd505c --- /dev/null +++ b/provider-dev/test/test_tier1.py @@ -0,0 +1,89 @@ +""" +Tier 1 smoke tests, parametrised from tier1.yaml. + +To add a query: edit tier1.yaml. To add an assertion primitive: edit this file. +The intent is to keep the test file small enough that the YAML is the +human-readable contract. +""" + +from __future__ import annotations + +import os +import re +from pathlib import Path +from typing import Any + +import pytest +import yaml + +TIER1 = Path(__file__).resolve().parent / "tier1.yaml" + +_VAR_RE = re.compile(r"\$\{([A-Z_][A-Z0-9_]*)\}") + + +def _substitute(template: str, env: dict[str, str]) -> str: + def repl(match: re.Match[str]) -> str: + name = match.group(1) + if name in env: + return env[name] + if name in os.environ: + return os.environ[name] + raise KeyError(f"tier1.yaml references ${{{name}}} but it is not set") + return _VAR_RE.sub(repl, template) + + +def _load_cases() -> list[dict[str, Any]]: + with TIER1.open() as f: + return list(yaml.safe_load(f)) + + +_PREDICATE_BUILTINS = { + "all": all, "any": any, "len": len, "int": int, "float": float, + "str": str, "bool": bool, "isinstance": isinstance, "abs": abs, + "min": min, "max": max, "sum": sum, "range": range, + "sorted": sorted, "set": set, "list": list, "dict": dict, "tuple": tuple, +} + + +def _evaluate_predicate(expr: str, rows: list[dict[str, Any]]) -> bool: + """Predicates have `rows` (full result) and `r` (rows[0] if any) in scope. + Predicates are author-controlled YAML, not user input - eval is fine here.""" + scope = {"rows": rows, "r": rows[0] if rows else None} + return bool(eval(expr, {"__builtins__": _PREDICATE_BUILTINS}, scope)) + + +@pytest.mark.parametrize("case", _load_cases(), ids=lambda c: c["name"]) +def test_tier1(case: dict[str, Any], runner, mode: str, test_env: dict[str, str], derived_env: dict[str, str]) -> None: + # Optional per-case `xfail` block in tier1.yaml flags known provider/binary + # bugs without losing visibility. Shape: + # xfail: + # reason: "..." # required, surfaced in pytest output + # modes: [pgwire] # optional - if omitted, applies to all modes + # strict: false # optional - true means an unexpected PASS fails + xfail = case.get("xfail") + if xfail and (xfail.get("modes") is None or mode in xfail["modes"]): + pytest.xfail(xfail.get("reason", "known issue")) + + sql = _substitute(case["sql"], test_env) + rows = runner.run(sql) + + assertions = case.get("assertions", {}) + + min_rows = assertions.get("min_rows", 1) + assert len(rows) >= min_rows, ( + f"expected at least {min_rows} row(s), got {len(rows)}\nSQL:\n{sql}" + ) + + required_columns = assertions.get("required_columns", []) + for col in required_columns: + for i, row in enumerate(rows): + assert col in row, ( + f"row {i} missing required column '{col}'. " + f"present columns: {sorted(row)}\nSQL:\n{sql}" + ) + + for expr in assertions.get("row_predicates", []): + substituted = _substitute(expr, test_env) + assert _evaluate_predicate(substituted, rows), ( + f"row_predicate failed: {substituted}\nrows: {rows!r}\nSQL:\n{sql}" + ) diff --git a/provider-dev/test/tier1.yaml b/provider-dev/test/tier1.yaml new file mode 100644 index 0000000..ea289d8 --- /dev/null +++ b/provider-dev/test/tier1.yaml @@ -0,0 +1,286 @@ +# Tier 1 smoke tests: the queries and mutations a user would expect to "just +# work" against a freshly built (or freshly published) netlify provider. +# +# Each entry has: +# name - test id (used in pytest output) +# sql - SQL to execute. ${VAR} is substituted from env / defaults / +# provider.yaml:derived_env (ids resolved at session start). +# assertions: +# min_rows - result set must have at least this many rows (default 1) +# required_columns - every named column must be present on every row +# row_predicates - list of Python expressions evaluated with `rows` and `r` +# (r = rows[0]) in scope. Allowed builtins: all, any, len, +# int, float, str, bool, isinstance, abs, min, max, sum, +# range, sorted, set, list, dict, tuple. All must be truthy. +# xfail (optional) - flag known provider/binary bugs without losing visibility: +# reason: "..." (required; printed in pytest output) +# modes: [pgwire] (optional; if omitted, xfails in all modes) +# +# Cost: zero. Every statement is a read except the environment variable +# lifecycle near the end, which creates and deletes a single variable on the +# test site (nothing billable, no deploy is triggered), and the cache purge +# EXEC (free). Cases run in file order, so the lifecycle's delete always +# follows its insert. +# +# Keep this list small (~25 cases). The goal is "is the provider broken?", +# not exhaustive coverage. + +# --- identity and teams -------------------------------------------------- + +- name: current_user + sql: SELECT id, email, full_name, site_count FROM netlify.users.users + assertions: + min_rows: 1 + required_columns: [id, email, full_name] + row_predicates: + - "isinstance(r['email'], str) and '@' in r['email']" + +- name: list_accounts + sql: SELECT id, name, slug, type_name FROM netlify.accounts.accounts + assertions: + min_rows: 1 + required_columns: [id, name, slug, type_name] + row_predicates: + - "any(row['slug'] == '${TEST_ACCOUNT_SLUG}' for row in rows)" + +- name: list_members + sql: | + SELECT id, email, role + FROM netlify.accounts.members + WHERE account_slug = '${TEST_ACCOUNT_SLUG}' + assertions: + min_rows: 1 + required_columns: [id, email, role] + +# --- sites --------------------------------------------------------------- + +- name: list_sites + sql: SELECT id, name, url, account_slug, state FROM netlify.sites.sites + assertions: + min_rows: 1 + required_columns: [id, name, url, account_slug, state] + row_predicates: + - "any(row['name'] == '${TEST_SITE_NAME}' for row in rows)" + +- name: list_sites_for_account_with_name_pushdown + sql: | + SELECT id, name, url + FROM netlify.sites.sites + WHERE account_slug = '${TEST_ACCOUNT_SLUG}' AND name = '${TEST_SITE_NAME}' + assertions: + min_rows: 1 + row_predicates: + - "all(row['name'] == '${TEST_SITE_NAME}' for row in rows)" + +- name: get_site_by_id + sql: | + SELECT id, name, plan, ssl, custom_domain, build_settings + FROM netlify.sites.sites + WHERE site_id = '${TEST_SITE_ID}' + assertions: + min_rows: 1 + required_columns: [id, name, plan, build_settings] + row_predicates: + - "r['name'] == '${TEST_SITE_NAME}'" + xfail: + modes: [pgwire] + reason: >- + stackql pgwire path materialises the result into a cache table that + lacks the request-parameter column (site_id) - works in exec mode. + Upstream stackql binary bug - track and remove this xfail once fixed. + +- name: site_ssl_certificate + sql: | + SELECT domains, state, expires_at + FROM netlify.sites.ssl_certificates + WHERE site_id = '${TEST_SITE_ID}' + assertions: + min_rows: 1 + required_columns: [domains, state, expires_at] + +- name: site_metadata_transform + sql: | + SELECT metadata + FROM netlify.sites.site_metadata + WHERE site_id = '${TEST_SITE_ID}' + assertions: + min_rows: 1 + required_columns: [metadata] + +# --- deploys and builds -------------------------------------------------- + +- name: list_deploys_with_state_pushdown + sql: | + SELECT id, state, branch, context, created_at + FROM netlify.deploys.deploys + WHERE site_id = '${TEST_SITE_ID}' AND state = 'ready' + assertions: + min_rows: 1 + required_columns: [id, state, branch, context, created_at] + row_predicates: + - "all(row['state'] == 'ready' for row in rows)" + +- name: get_deploy_by_id + sql: | + SELECT id, state, site_id + FROM netlify.deploys.deploys + WHERE deploy_id = '${TEST_DEPLOY_ID}' + assertions: + min_rows: 1 + row_predicates: + - "r['id'] == '${TEST_DEPLOY_ID}' and r['site_id'] == '${TEST_SITE_ID}'" + xfail: + modes: [pgwire] + reason: >- + stackql pgwire path materialises the result into a cache table that + lacks the request-parameter column (deploy_id) - works in exec mode. + Upstream stackql binary bug - track and remove this xfail once fixed. + +- name: list_builds + sql: | + SELECT id, deploy_id, done, error, created_at + FROM netlify.builds.builds + WHERE site_id = '${TEST_SITE_ID}' + assertions: + min_rows: 1 + required_columns: [id, deploy_id, done, created_at] + +- name: list_build_hooks + sql: | + SELECT id, title, branch, url + FROM netlify.builds.build_hooks + WHERE site_id = '${TEST_SITE_ID}' + assertions: + min_rows: 0 + required_columns: [id, title, branch, url] + +# --- pagination ---------------------------------------------------------- + +# per_page=1 forces one row per page; the Link header rel="next" traversal +# must bring back every site, so the count matches the unpaged listing. +- name: pagination_follows_link_header + sql: | + SELECT 'paged' AS kind, count(*) AS n FROM netlify.sites.sites WHERE per_page = 1 + UNION ALL + SELECT 'unpaged' AS kind, count(*) AS n FROM netlify.sites.sites + assertions: + min_rows: 2 + row_predicates: + - "int(rows[0]['n']) == int(rows[1]['n']) and int(rows[0]['n']) >= 1" + +# --- dns ----------------------------------------------------------------- + +- name: list_dns_zones + sql: SELECT id, name, account_slug, dns_servers FROM netlify.dns.dns_zones + assertions: + min_rows: 1 + required_columns: [id, name, account_slug] + +- name: list_dns_records + sql: | + SELECT hostname, type, value, ttl + FROM netlify.dns.dns_records + WHERE zone_id = '${TEST_DNS_ZONE_ID}' + assertions: + min_rows: 1 + required_columns: [hostname, type, value] + +# --- misc reads ---------------------------------------------------------- + +- name: list_hook_types + sql: SELECT name, fields FROM netlify.hooks.hook_types + assertions: + min_rows: 1 + required_columns: [name] + +- name: list_addon_services + sql: SELECT name, slug FROM netlify.services.services + assertions: + min_rows: 1 + required_columns: [name, slug] + +- name: list_env_vars_for_site + sql: | + SELECT key, scopes, is_secret, env_values + FROM netlify.env.env_vars + WHERE account_id = '${TEST_ACCOUNT_ID}' AND site_id = '${TEST_SITE_ID}' + assertions: + min_rows: 0 + required_columns: [key, scopes, is_secret, env_values] + +# --- write lifecycle: environment variable --------------------------------- +# INSERT (array body via the request transform) -> SELECT -> UPDATE (PATCH a +# context value) -> REPLACE (PUT the whole variable, `env_values` -> wire +# `values`) -> SELECT via json_each -> DELETE -> SELECT gone. +# Mutations return no rows; min_rows: 0 keeps them as "must not error". + +- name: env_var_insert + sql: | + INSERT INTO netlify.env.env_vars (account_id, site_id, env_vars) + SELECT '${TEST_ACCOUNT_ID}', '${TEST_SITE_ID}', + '[{"key": "${TEST_ENV_KEY}", "values": [{"value": "one", "context": "all"}]}]' + assertions: + min_rows: 0 + +- name: env_var_select_after_insert + sql: | + SELECT key, scopes, is_secret, env_values + FROM netlify.env.env_vars + WHERE account_id = '${TEST_ACCOUNT_ID}' AND site_id = '${TEST_SITE_ID}' AND key = '${TEST_ENV_KEY}' + assertions: + min_rows: 1 + row_predicates: + - "r['key'] == '${TEST_ENV_KEY}'" + - "'one' in str(r['env_values'])" + +- name: env_var_set_value_update + sql: | + UPDATE netlify.env.env_vars + SET context = 'production', value = 'two' + WHERE account_id = '${TEST_ACCOUNT_ID}' AND site_id = '${TEST_SITE_ID}' AND key = '${TEST_ENV_KEY}' + assertions: + min_rows: 0 + +- name: env_var_replace + sql: | + REPLACE netlify.env.env_vars + SET env_key = '${TEST_ENV_KEY}', env_values = '[{"value": "three", "context": "all"}]' + WHERE account_id = '${TEST_ACCOUNT_ID}' AND site_id = '${TEST_SITE_ID}' AND key = '${TEST_ENV_KEY}' + assertions: + min_rows: 0 + +- name: env_var_values_via_json_each + sql: | + SELECT e.key, json_extract(v.value, '$.value') AS val, json_extract(v.value, '$.context') AS ctx + FROM netlify.env.env_vars e, json_each(e.env_values) v + WHERE e.account_id = '${TEST_ACCOUNT_ID}' AND e.site_id = '${TEST_SITE_ID}' AND e.key = '${TEST_ENV_KEY}' + assertions: + min_rows: 1 + required_columns: [key, val, ctx] + row_predicates: + - "r['val'] == 'three'" + +- name: env_var_delete + sql: | + DELETE FROM netlify.env.env_vars + WHERE account_id = '${TEST_ACCOUNT_ID}' AND site_id = '${TEST_SITE_ID}' AND key = '${TEST_ENV_KEY}' + assertions: + min_rows: 0 + +- name: env_var_gone_after_delete + sql: | + SELECT key + FROM netlify.env.env_vars + WHERE account_id = '${TEST_ACCOUNT_ID}' AND site_id = '${TEST_SITE_ID}' + assertions: + min_rows: 0 + row_predicates: + - "all(row['key'] != '${TEST_ENV_KEY}' for row in rows)" + +# --- lifecycle op via EXEC --------------------------------------------------- + +- name: exec_purge_cache + sql: | + EXEC netlify.sites.sites.purge_cache @@json = '{"site_id": "${TEST_SITE_ID}"}' + assertions: + min_rows: 0 diff --git a/website/.gitignore b/website/.gitignore index b2d6de3..dc32d51 100644 --- a/website/.gitignore +++ b/website/.gitignore @@ -18,3 +18,6 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +# vendored shared docusaurus config (cloned at build time) +.shared-config diff --git a/provider-dev/downloaded/.gitkeep b/website/.gitkeep similarity index 100% rename from provider-dev/downloaded/.gitkeep rename to website/.gitkeep diff --git a/website/docs/index.md b/website/docs/index.md index e124ba3..d638d37 100644 --- a/website/docs/index.md +++ b/website/docs/index.md @@ -1,107 +1,380 @@ ---- -title: netlify -hide_title: false -hide_table_of_contents: false -keywords: - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage Netlify resources using SQL -custom_edit_url: null -image: /img/providers/netlify/stackql-netlify-provider-featured-image.png -id: 'provider-intro' ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; - -Web development and content distribution platform. +--- +title: netlify +hide_title: false +hide_table_of_contents: false +keywords: + - netlify + - stackql + - infrastructure-as-code + - configuration-as-data + - cloud inventory + - jamstack + - deploys + - dns +description: Query, deploy and manage Netlify sites, deploys, builds, environment variables, DNS zones, forms, functions and teams using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +id: 'provider-intro' +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; + +Query, provision and operate Netlify using SQL - sites and their build, domain and SSL settings, deploys and deploy keys, builds and build hooks, environment variables, DNS zones and records, serverless functions, forms and submissions, outgoing webhooks, teams and members, add-on services, split tests, dev servers, agent runners, the AI gateway and Netlify DB. + :::info[Provider Summary] -total services: __30__ -total resources: __81__ +total services: __17__ +total resources: __62__ ::: -See also: -[[` SHOW `]](https://stackql.io/docs/language-spec/show) [[` DESCRIBE `]](https://stackql.io/docs/language-spec/describe) [[` REGISTRY `]](https://stackql.io/docs/language-spec/registry) -* * * - -## Installation - -To pull the latest version of the `netlify` provider, run the following command: - -```bash -REGISTRY PULL netlify; -``` -> To view previous provider versions or to pull a specific provider version, see [here](https://stackql.io/docs/language-spec/registry). - -## Authentication - -The following system environment variables are used for authentication by default: - -- - Netlify API token (see How to Create a Netlify API Token) - -These variables are sourced at runtime (from the local machine or as CI variables/secrets). - -
- -Using different environment variables - -To use different environment variables (instead of the defaults), use the `--auth` flag of the `stackql` program. For example: - -```bash - -AUTH='{ "netlify": { "type": "bearer", "credentialsenvvar": "YOUR_NETLIFY_AUTH_TOKEN_VAR" }}' -stackql shell --auth="${AUTH}" - -``` -or using PowerShell: - -```powershell - -$Auth = "{ 'netlify': { 'type': 'bearer', 'credentialsenvvar': 'YOUR_NETLIFY_AUTH_TOKEN_VAR' }}" -stackql.exe shell --auth=$Auth - -``` +See also: +[[` SHOW `]](https://stackql.io/docs/language-spec/show) [[` DESCRIBE `]](https://stackql.io/docs/language-spec/describe) [[` REGISTRY `]](https://stackql.io/docs/language-spec/registry) +* * * + +## Installation + +To pull the latest version of the `netlify` provider, run the following command: + +```bash +REGISTRY PULL netlify; +``` +> To view previous provider versions or to pull a specific provider version, see [here](https://stackql.io/docs/language-spec/registry). + +## Authentication + +The following system environment variables are used for authentication by default: + +- - Netlify personal access token (see Netlify API authentication; create one under User settings > Applications > Personal access tokens) + +This is the same variable the official Netlify Terraform provider reads. It is sourced at runtime (from the local machine or as a CI variable/secret). + +
+ +Using different environment variables + +To use different environment variables (instead of the defaults), use the `--auth` flag of the `stackql` program. For example: + +```bash + +AUTH='{ "netlify": { "type": "bearer", "credentialsenvvar": "YOUR_NETLIFY_TOKEN_VAR" }}' +stackql shell --auth="${AUTH}" + +``` +or using PowerShell: + +```powershell + +$Auth = "{ 'netlify': { 'type': 'bearer', 'credentialsenvvar': 'YOUR_NETLIFY_TOKEN_VAR' }}" +stackql.exe shell --auth=$Auth + +```
+### Using the netlify provider with agent assistants (MCP) + +StackQL ships an MCP server (`stackql mcp`), so agent assistants such as Claude Code, Claude Desktop, Codex and other MCP clients can query and manage Netlify with SQL. + +Store the token in a dotenv file that the server sources at startup: + +```bash +mkdir -p ~/.stackql +echo "NETLIFY_API_TOKEN=" > ~/.stackql/netlify.env +``` + +Then register the server with your MCP client. For Claude Code: + +```bash +claude mcp add stackql -- stackql mcp --env.file="$HOME/.stackql/netlify.env" +``` + +For Claude Desktop (`claude_desktop_config.json`) or any client configured with JSON: + +```json +{ + "mcpServers": { + "stackql": { + "command": "stackql", + "args": ["mcp", "--env.file=/path/to/.stackql/netlify.env"] + } + } +} +``` + +The agent can then discover and query Netlify using the server's tools (`list_resources`, `describe_resource`, `run_select_query` and so on). Credential values are resolved inside the server process and are never visible to the agent. + +## Sites + +Every site the token can see, with the team it belongs to: + +```sql +SELECT + id, + name, + url, + account_slug, + state, + custom_domain, + created_at +FROM netlify.sites.sites +ORDER BY created_at DESC; +``` + +Sites in one team, filtered by name (both are sent to the API as request parameters): + +```sql +SELECT id, name, url +FROM netlify.sites.sites +WHERE account_slug = 'my-team' AND name = 'blog'; +``` + +A single site with its build settings expanded from the nested JSON: + +```sql +SELECT + name, + custom_domain, + json_extract(build_settings, '$.repo_url') AS repo_url, + json_extract(build_settings, '$.repo_branch') AS repo_branch, + json_extract(build_settings, '$.cmd') AS build_command, + json_extract(build_settings, '$.dir') AS publish_directory +FROM netlify.sites.sites +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +The SSL certificate provisioned for a site: + +```sql +SELECT domains, state, expires_at +FROM netlify.sites.ssl_certificates +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +## Deploys and builds + +Deploys are listed per site. Netlify paginates with a `Link` header and the provider follows it automatically, so a listing returns every page; `state`, `branch`, `production` and `per_page` are sent to the API when supplied: + +```sql +SELECT id, state, branch, context, published_at +FROM netlify.deploys.deploys +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +AND state = 'ready' +ORDER BY published_at DESC; +``` + +Deploy duration and success rate by branch, computed locally over the results: + +```sql +SELECT + branch, + COUNT(*) AS deploys, + SUM(state = 'ready') AS succeeded, + ROUND(100.0 * SUM(state = 'ready') / COUNT(*), 1) AS success_pct +FROM netlify.deploys.deploys +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +GROUP BY branch; +``` + +A deploy by id (no site required), and the builds for a site: + +```sql +SELECT id, state, site_id, deploy_url, commit_ref +FROM netlify.deploys.deploys +WHERE deploy_id = '6a3b1220ef9804c0f88b7bb6'; + +SELECT id, deploy_id, done, error, created_at +FROM netlify.builds.builds +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +Build hooks (the URLs that trigger a build when POSTed to): + +```sql +SELECT id, title, branch, url +FROM netlify.builds.build_hooks +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +## Environment variables + +Environment variables are scoped to a team (`account_id`) and optionally a site. The context values come back in the `env_values` column (the API field is `values`, renamed because it is a SQL keyword): + +```sql +SELECT key, scopes, is_secret, env_values +FROM netlify.env.env_vars +WHERE account_id = '60612a0f5d5dcb19a6e9a8ab' +AND site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +One row per variable and deploy context, expanding `env_values` with `json_each`: + +```sql +SELECT + e.key, + json_extract(v.value, '$.context') AS context, + json_extract(v.value, '$.value') AS value +FROM netlify.env.env_vars e, json_each(e.env_values) v +WHERE e.account_id = '60612a0f5d5dcb19a6e9a8ab' +AND e.site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +ORDER BY e.key, context; +``` + +## DNS + +Zones managed by Netlify DNS and the records in one of them: + +```sql +SELECT id, name, account_slug, dns_servers +FROM netlify.dns.dns_zones; + +SELECT hostname, type, value, ttl, priority +FROM netlify.dns.dns_records +WHERE zone_id = '6a3b13ddc32b40c74188b36e'; +``` + +All records across every zone, resolved from each zone row (one request per zone): + +```sql +SELECT z.name AS zone, r.hostname, r.type, r.value, r.ttl +FROM netlify.dns.dns_zones z +JOIN netlify.dns.dns_records r ON r.zone_id = z.id +ORDER BY zone, r.hostname; +``` + +## Teams, members and audit + +```sql +SELECT id, name, slug, type_name +FROM netlify.accounts.accounts; + +SELECT id, full_name, email, role +FROM netlify.accounts.members +WHERE account_slug = 'my-team'; + +SELECT id, json_extract(payload, '$.action') AS action, json_extract(payload, '$.actor_name') AS actor +FROM netlify.accounts.audit_events +WHERE account_id = '60612a0f5d5dcb19a6e9a8ab'; +``` + +## Forms, functions and hooks + +```sql +SELECT id, name, submission_count +FROM netlify.forms.forms +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; + +SELECT id, form_name, email, created_at +FROM netlify.forms.submissions +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; + +SELECT id, branch, provider, functions +FROM netlify.functions.functions +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; + +SELECT id, type, event, disabled +FROM netlify.hooks.hooks +WHERE site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; +``` + +## Provision, mutate and tear down + +Mutations use the same SQL grammar: `INSERT` creates, `UPDATE` sends a PATCH, `REPLACE` sends a PUT, `EXEC` invokes lifecycle methods and `DELETE` removes. Request body fields are supplied as columns using their API names. + +Create a site in a team, change its build settings, then delete it: + +```sql +INSERT INTO netlify.sites.sites (account_slug, name) +SELECT 'my-team', 'stackql-example'; + +UPDATE netlify.sites.sites +SET build_settings = '{"cmd": "npm run build", "dir": "dist"}' +WHERE site_id = ''; + +DELETE FROM netlify.sites.sites +WHERE site_id = ''; +``` + +Environment variables end to end. The create endpoint takes an array, supplied in the `env_vars` column; `UPDATE` sets one context value (PATCH); `REPLACE` rewrites the whole variable (PUT) - the API needs the key in the body as well as the path, so it is given as `env_key`, with the values in `env_values`: + +```sql +-- create +INSERT INTO netlify.env.env_vars (account_id, site_id, env_vars) +SELECT '60612a0f5d5dcb19a6e9a8ab', '1798369c-fb66-438b-b80d-a19ce1698772', + '[{"key": "API_URL", "values": [{"value": "https://api.example.com", "context": "all"}]}]'; + +-- set a single context value +UPDATE netlify.env.env_vars +SET context = 'deploy-preview', value = 'https://staging.example.com' +WHERE account_id = '60612a0f5d5dcb19a6e9a8ab' +AND site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +AND key = 'API_URL'; + +-- replace the whole variable +REPLACE netlify.env.env_vars +SET env_key = 'API_URL', env_values = '[{"value": "https://api.example.com", "context": "production"}]' +WHERE account_id = '60612a0f5d5dcb19a6e9a8ab' +AND site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +AND key = 'API_URL'; + +-- delete +DELETE FROM netlify.env.env_vars +WHERE account_id = '60612a0f5d5dcb19a6e9a8ab' +AND site_id = '1798369c-fb66-438b-b80d-a19ce1698772' +AND key = 'API_URL'; +``` + +DNS records and build hooks: + +```sql +INSERT INTO netlify.dns.dns_records (zone_id, type, hostname, value, ttl) +SELECT '6a3b13ddc32b40c74188b36e', 'TXT', 'example.sqlpedia.org', 'stackql', 3600; + +INSERT INTO netlify.builds.build_hooks (site_id, title, branch) +SELECT '1798369c-fb66-438b-b80d-a19ce1698772', 'Nightly rebuild', 'main'; +``` + +Lifecycle operations are `EXEC` methods on the resource they act on: + +```sql +-- purge the CDN cache for a site +EXEC netlify.sites.sites.purge_cache @@json = '{"site_id": "1798369c-fb66-438b-b80d-a19ce1698772"}'; + +-- lock the published deploy (and unlock it again) +EXEC netlify.deploys.deploys.lock @deploy_id = '6a3b1220ef9804c0f88b7bb6'; +EXEC netlify.deploys.deploys.unlock @deploy_id = '6a3b1220ef9804c0f88b7bb6'; + +-- roll a site back to its previous deploy +EXEC netlify.deploys.deploys.rollback @site_id = '1798369c-fb66-438b-b80d-a19ce1698772'; + +-- trigger a build hook +EXEC netlify.builds.builds.notify_start @build_id = ''; +``` + +`SHOW METHODS IN netlify.deploys.deploys` lists every method a resource exposes, including the `EXEC`-only ones, with their required parameters. + + ## Services diff --git a/website/docs/services/access_token/index.md b/website/docs/services/access_token/index.md deleted file mode 100644 index 21b56fb..0000000 --- a/website/docs/services/access_token/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: access_token -hide_title: false -hide_table_of_contents: false -keywords: - - access_token - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -access_token service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources - \ No newline at end of file diff --git a/website/docs/services/access_token/oauth_tickets_exchange/index.md b/website/docs/services/access_token/oauth_tickets_exchange/index.md deleted file mode 100644 index 7497f0e..0000000 --- a/website/docs/services/access_token/oauth_tickets_exchange/index.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: oauth_tickets_exchange -hide_title: false -hide_table_of_contents: false -keywords: - - oauth_tickets_exchange - - access_token - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists an oauth_tickets_exchange resource. - -## Overview - - - - -
Nameoauth_tickets_exchange
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
ticket_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## Lifecycle Methods - - - - -ok - -```sql -EXEC netlify.access_token.oauth_tickets_exchange.exchangeTicket -@ticket_id='{{ ticket_id }}' --required -; -``` - - diff --git a/website/docs/services/account_type/accounts_types/index.md b/website/docs/services/accounts/account_types/index.md similarity index 75% rename from website/docs/services/account_type/accounts_types/index.md rename to website/docs/services/accounts/account_types/index.md index 32c6703..8f387a3 100644 --- a/website/docs/services/account_type/accounts_types/index.md +++ b/website/docs/services/accounts/account_types/index.md @@ -1,10 +1,10 @@ --- -title: accounts_types +title: account_types hide_title: false hide_table_of_contents: false keywords: - - accounts_types - - account_type + - account_types + - accounts - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists an accounts_types resource. +Creates, updates, deletes, gets or lists an account_types resource. ## Overview - + - +
Nameaccounts_types
Name
TypeResource
Id
Id
## Fields @@ -32,12 +33,12 @@ Creates, updates, deletes, gets or lists an accounts_types resource The following fields are returned by `SELECT` queries: - + @@ -60,8 +61,8 @@ The following fields are returned by `SELECT` queries: - - + + @@ -109,7 +110,7 @@ The following methods are available for this resource: - + @@ -137,12 +138,12 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -156,7 +157,7 @@ monthly_dollar_price, monthly_seats_addon_dollar_price, yearly_dollar_price, yearly_seats_addon_dollar_price -FROM netlify.account_type.accounts_types +FROM netlify.accounts.account_types ; ``` diff --git a/website/docs/services/account_membership/accounts/index.md b/website/docs/services/accounts/accounts/index.md similarity index 71% rename from website/docs/services/account_membership/accounts/index.md rename to website/docs/services/accounts/accounts/index.md index 959c5e5..b4d2a42 100644 --- a/website/docs/services/account_membership/accounts/index.md +++ b/website/docs/services/accounts/accounts/index.md @@ -4,7 +4,7 @@ hide_title: false hide_table_of_contents: false keywords: - accounts - - account_membership + - accounts - netlify - infrastructure-as-code - configuration-as-data @@ -15,6 +15,7 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -22,9 +23,9 @@ Creates, updates, deletes, gets or lists an accounts resource. ## Overview
objectstring(opaque JSON object)
- + - +
Nameaccounts
Name
TypeResource
Id
Id
## Fields @@ -32,13 +33,13 @@ Creates, updates, deletes, gets or lists an accounts resource. The following fields are returned by `SELECT` queries: - + @@ -132,7 +133,7 @@ The following fields are returned by `SELECT` queries:
- + @@ -244,36 +245,36 @@ The following methods are available for this resource: - + - + - + - + - + - - + + - - + + @@ -299,19 +300,24 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# + + + + +
account_id
minimal
data__name, data__type_idname, type_id
account_id
account_id string
boolean
## `SELECT` examples - + OK @@ -333,12 +339,12 @@ roles_allowed, slug, type, updated_at -FROM netlify.account_membership.accounts +FROM netlify.accounts.accounts WHERE account_id = '{{ account_id }}' -- required ; ``` - + OK @@ -360,7 +366,8 @@ roles_allowed, slug, type, updated_at -FROM netlify.account_membership.accounts +FROM netlify.accounts.accounts +WHERE minimal = '{{ minimal }}' ; ``` @@ -370,30 +377,30 @@ FROM netlify.account_membership.accounts ## `INSERT` examples - + No description available. ```sql -INSERT INTO netlify.account_membership.accounts ( -data__extra_seats_block, -data__name, -data__payment_method_id, -data__period, -data__type_id +INSERT INTO netlify.accounts.accounts ( +name, +type_id, +payment_method_id, +period, +extra_seats_block ) SELECT -{{ extra_seats_block }}, '{{ name }}' /* required */, +'{{ type_id }}' /* required */, '{{ payment_method_id }}', '{{ period }}', -'{{ type_id }}' /* required */ +{{ extra_seats_block }} RETURNING id, name, @@ -416,62 +423,87 @@ updated_at -```yaml -# Description fields are for documentation purposes +{`# Description fields are for documentation purposes - name: accounts props: - - name: extra_seats_block - value: integer - name: name - value: string + value: "{{ name }}" + - name: type_id + value: "{{ type_id }}" - name: payment_method_id - value: string + value: "{{ payment_method_id }}" - name: period - value: string + value: "{{ period }}" valid_values: ['monthly', 'yearly'] - - name: type_id - value: string -``` + - name: extra_seats_block + value: {{ extra_seats_block }} +`} + -## Lifecycle Methods +## `REPLACE` examples - + -Not Content +No description available. ```sql -EXEC netlify.account_membership.accounts.cancelAccount -@account_id='{{ account_id }}' --required -; +REPLACE netlify.accounts.accounts +SET +name = '{{ name }}', +slug = '{{ slug }}', +type_id = '{{ type_id }}', +extra_seats_block = {{ extra_seats_block }}, +billing_name = '{{ billing_name }}', +billing_email = '{{ billing_email }}', +billing_details = '{{ billing_details }}' +WHERE +account_id = '{{ account_id }}' --required +RETURNING +id, +name, +payment_method_id, +type_id, +billing_name, +type_name, +billing_details, +billing_email, +billing_period, +capabilities, +created_at, +owner_ids, +roles_allowed, +slug, +type, +updated_at; ``` - + -OK + +## `DELETE` examples + + + + +No description available. ```sql -EXEC netlify.account_membership.accounts.updateAccount -@account_id='{{ account_id }}' --required -@@json= -'{ -"billing_details": "{{ billing_details }}", -"billing_email": "{{ billing_email }}", -"billing_name": "{{ billing_name }}", -"extra_seats_block": {{ extra_seats_block }}, -"name": "{{ name }}", -"slug": "{{ slug }}", -"type_id": "{{ type_id }}" -}' +DELETE FROM netlify.accounts.accounts +WHERE account_id = '{{ account_id }}' --required ; ``` diff --git a/website/docs/services/accounts/audit_events/index.md b/website/docs/services/accounts/audit_events/index.md new file mode 100644 index 0000000..82f551a --- /dev/null +++ b/website/docs/services/accounts/audit_events/index.md @@ -0,0 +1,164 @@ +--- +title: audit_events +hide_title: false +hide_table_of_contents: false +keywords: + - audit_events + - accounts + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an audit_events resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
object
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
account_idquery, log_type, page, per_page
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
integer (int32)
integer (int32)
string
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +account_id, +payload +FROM netlify.accounts.audit_events +WHERE account_id = '{{ account_id }}' -- required +AND query = '{{ query }}' +AND log_type = '{{ log_type }}' +AND page = '{{ page }}' +AND per_page = '{{ per_page }}' +; +``` + + diff --git a/website/docs/services/asset/index.md b/website/docs/services/accounts/index.md similarity index 53% rename from website/docs/services/asset/index.md rename to website/docs/services/accounts/index.md index 88747be..c5e2be4 100644 --- a/website/docs/services/asset/index.md +++ b/website/docs/services/accounts/index.md @@ -1,9 +1,9 @@ --- -title: asset +title: accounts hide_title: false hide_table_of_contents: false keywords: - - asset + - accounts - netlify - stackql - infrastructure-as-code @@ -14,20 +14,23 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -asset service documentation. +accounts service documentation. :::info[Service Summary] -total resources: __1__ +total resources: __5__ ::: ## Resources \ No newline at end of file diff --git a/website/docs/services/accounts/members/index.md b/website/docs/services/accounts/members/index.md new file mode 100644 index 0000000..ac10d52 --- /dev/null +++ b/website/docs/services/accounts/members/index.md @@ -0,0 +1,348 @@ +--- +title: members +hide_title: false +hide_table_of_contents: false +keywords: + - members + - accounts + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a members resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
account_slug, member_id
account_slug
account_slug
account_slug, member_id
account_slug, member_id
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +full_name, +avatar, +email, +role +FROM netlify.accounts.members +WHERE account_slug = '{{ account_slug }}' -- required +AND member_id = '{{ member_id }}' -- required +; +``` + + + +OK + +```sql +SELECT +id, +full_name, +avatar, +email, +role +FROM netlify.accounts.members +WHERE account_slug = '{{ account_slug }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +No description available. + +```sql +INSERT INTO netlify.accounts.members ( +role, +email, +account_slug +) +SELECT +'{{ role }}', +'{{ email }}', +'{{ account_slug }}' +RETURNING +id, +full_name, +avatar, +email, +role +; +``` + + + +{`# Description fields are for documentation purposes +- name: members + props: + - name: account_slug + value: "{{ account_slug }}" + description: Required parameter for the members resource. + - name: role + value: "{{ role }}" + valid_values: ['Owner', 'Developer', 'Billing Admin', 'Reviewer'] + - name: email + value: "{{ email }}" +`} + + + + + +## `REPLACE` examples + + + + +No description available. + +```sql +REPLACE netlify.accounts.members +SET +role = '{{ role }}', +site_access = '{{ site_access }}', +site_ids = '{{ site_ids }}' +WHERE +account_slug = '{{ account_slug }}' --required +AND member_id = '{{ member_id }}' --required +RETURNING +id, +full_name, +avatar, +email, +role; +``` + + + + +## `DELETE` examples + + + + +No description available. + +```sql +DELETE FROM netlify.accounts.members +WHERE account_slug = '{{ account_slug }}' --required +AND member_id = '{{ member_id }}' --required +; +``` + + diff --git a/website/docs/services/payment_method/billing_payment_methods/index.md b/website/docs/services/accounts/payment_methods/index.md similarity index 73% rename from website/docs/services/payment_method/billing_payment_methods/index.md rename to website/docs/services/accounts/payment_methods/index.md index b7266c2..3b7984a 100644 --- a/website/docs/services/payment_method/billing_payment_methods/index.md +++ b/website/docs/services/accounts/payment_methods/index.md @@ -1,10 +1,10 @@ --- -title: billing_payment_methods +title: payment_methods hide_title: false hide_table_of_contents: false keywords: - - billing_payment_methods - - payment_method + - payment_methods + - accounts - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a billing_payment_methods resource. +Creates, updates, deletes, gets or lists a payment_methods resource. ## Overview - + - +
Namebilling_payment_methods
Name
TypeResource
Id
Id
## Fields @@ -32,12 +33,12 @@ Creates, updates, deletes, gets or lists a billing_payment_methods The following fields are returned by `SELECT` queries: - + @@ -104,7 +105,7 @@ The following methods are available for this resource: - + @@ -132,12 +133,12 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -150,7 +151,7 @@ data, state, type, updated_at -FROM netlify.payment_method.billing_payment_methods +FROM netlify.accounts.payment_methods ; ``` diff --git a/website/docs/services/agent_runners/agent_runner_hooks/index.md b/website/docs/services/agent_runners/agent_runner_hooks/index.md new file mode 100644 index 0000000..922b405 --- /dev/null +++ b/website/docs/services/agent_runners/agent_runner_hooks/index.md @@ -0,0 +1,403 @@ +--- +title: agent_runner_hooks +hide_title: false +hide_table_of_contents: false +keywords: + - agent_runner_hooks + - agent_runners + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an agent_runner_hooks resource. + +## Overview +
+ + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string (dateTime)
string
string
string
string
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string (dateTime)
string
string
string
string
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, id
site_id
site_id
site_id, id
site_id, id
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +site_id, +agent, +branch, +created_at, +msg, +prompt, +title, +url +FROM netlify.agent_runners.agent_runner_hooks +WHERE site_id = '{{ site_id }}' -- required +AND id = '{{ id }}' -- required +; +``` + + + +OK + +```sql +SELECT +id, +site_id, +agent, +branch, +created_at, +msg, +prompt, +title, +url +FROM netlify.agent_runners.agent_runner_hooks +WHERE site_id = '{{ site_id }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +No description available. + +```sql +INSERT INTO netlify.agent_runners.agent_runner_hooks ( +title, +branch, +prompt, +agent, +site_id +) +SELECT +'{{ title }}', +'{{ branch }}', +'{{ prompt }}', +'{{ agent }}', +'{{ site_id }}' +RETURNING +id, +site_id, +agent, +branch, +created_at, +msg, +prompt, +secret, +title, +url +; +``` + + + +{`# Description fields are for documentation purposes +- name: agent_runner_hooks + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the agent_runner_hooks resource. + - name: title + value: "{{ title }}" + - name: branch + value: "{{ branch }}" + - name: prompt + value: "{{ prompt }}" + - name: agent + value: "{{ agent }}" +`} + + + + + +## `REPLACE` examples + + + + +No description available. + +```sql +REPLACE netlify.agent_runners.agent_runner_hooks +SET +title = '{{ title }}', +branch = '{{ branch }}', +prompt = '{{ prompt }}', +agent = '{{ agent }}' +WHERE +site_id = '{{ site_id }}' --required +AND id = '{{ id }}' --required; +``` + + + + +## `DELETE` examples + + + + +No description available. + +```sql +DELETE FROM netlify.agent_runners.agent_runner_hooks +WHERE site_id = '{{ site_id }}' --required +AND id = '{{ id }}' --required +; +``` + + diff --git a/website/docs/services/agent_runners/agent_runner_sessions/index.md b/website/docs/services/agent_runners/agent_runner_sessions/index.md new file mode 100644 index 0000000..57e84ed --- /dev/null +++ b/website/docs/services/agent_runners/agent_runner_sessions/index.md @@ -0,0 +1,639 @@ +--- +title: agent_runner_sessions +hide_title: false +hide_table_of_contents: false +keywords: + - agent_runner_sessions + - agent_runners + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an agent_runner_sessions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
object
array
string
string (dateTime)
string
string (dateTime)
integer
boolean
string
string
string
string
array
string
string (dateTime)
object
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
object
array
string
string (dateTime)
string
string (dateTime)
integer
boolean
string
string
string
string
array
string
string (dateTime)
object
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
agent_runner_id, agent_runner_session_id
agent_runner_idpage, per_page, state, from, to, order_by
agent_runner_idprompt, agent, model, file_keys
agent_runner_id, agent_runner_session_idis_published
agent_runner_id, agent_runner_session_id
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
array
integer
boolean
string
string
integer (int32)
integer (int32)
string
string
integer
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +agent_runner_id, +deploy_id, +dev_server_id, +result_zip_file_name, +agent_config, +attached_file_keys, +commit_sha, +created_at, +deploy_url, +done_at, +duration, +is_published, +prompt, +result, +result_diff, +state, +steps, +title, +updated_at, +user +FROM netlify.agent_runners.agent_runner_sessions +WHERE agent_runner_id = '{{ agent_runner_id }}' -- required +AND agent_runner_session_id = '{{ agent_runner_session_id }}' -- required +; +``` + + + +OK + +```sql +SELECT +id, +agent_runner_id, +deploy_id, +dev_server_id, +result_zip_file_name, +agent_config, +attached_file_keys, +commit_sha, +created_at, +deploy_url, +done_at, +duration, +is_published, +prompt, +result, +result_diff, +state, +steps, +title, +updated_at, +user +FROM netlify.agent_runners.agent_runner_sessions +WHERE agent_runner_id = '{{ agent_runner_id }}' -- required +AND page = '{{ page }}' +AND per_page = '{{ per_page }}' +AND state = '{{ state }}' +AND from = '{{ from }}' +AND to = '{{ to }}' +AND order_by = '{{ order_by }}' +; +``` + + + + +## `INSERT` examples + + + + +No description available. + +```sql +INSERT INTO netlify.agent_runners.agent_runner_sessions ( +agent_runner_id, +prompt, +agent, +model, +file_keys +) +SELECT +'{{ agent_runner_id }}', +'{{ prompt }}', +'{{ agent }}', +'{{ model }}', +'{{ file_keys }}' +RETURNING +id, +agent_runner_id, +deploy_id, +dev_server_id, +result_zip_file_name, +agent_config, +attached_file_keys, +commit_sha, +created_at, +deploy_url, +done_at, +duration, +is_published, +prompt, +result, +result_diff, +state, +steps, +title, +updated_at, +user +; +``` + + + +{`# Description fields are for documentation purposes +- name: agent_runner_sessions + props: + - name: agent_runner_id + value: "{{ agent_runner_id }}" + description: Required parameter for the agent_runner_sessions resource. + - name: prompt + value: "{{ prompt }}" + - name: agent + value: "{{ agent }}" + - name: model + value: "{{ model }}" + - name: file_keys + value: "{{ file_keys }}" +`} + + + + + +## `UPDATE` examples + + + + +No description available. + +```sql +UPDATE netlify.agent_runners.agent_runner_sessions +SET +-- No updatable properties +WHERE +agent_runner_id = '{{ agent_runner_id }}' --required +AND agent_runner_session_id = '{{ agent_runner_session_id }}' --required +AND is_published = {{ is_published}} +RETURNING +id, +agent_runner_id, +deploy_id, +dev_server_id, +result_zip_file_name, +agent_config, +attached_file_keys, +commit_sha, +created_at, +deploy_url, +done_at, +duration, +is_published, +prompt, +result, +result_diff, +state, +steps, +title, +updated_at, +user; +``` + + + + +## `DELETE` examples + + + + +No description available. + +```sql +DELETE FROM netlify.agent_runners.agent_runner_sessions +WHERE agent_runner_id = '{{ agent_runner_id }}' --required +AND agent_runner_session_id = '{{ agent_runner_session_id }}' --required +; +``` + + diff --git a/website/docs/services/agent_runners/agent_runners/index.md b/website/docs/services/agent_runners/agent_runners/index.md new file mode 100644 index 0000000..120643d --- /dev/null +++ b/website/docs/services/agent_runners/agent_runners/index.md @@ -0,0 +1,877 @@ +--- +title: agent_runners +hide_title: false +hide_table_of_contents: false +keywords: + - agent_runners + - agent_runners + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists an agent_runners resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
string (dateTime)
array
string
string (dateTime)
string
string (dateTime)
string
string
boolean
string
string
string
boolean
integer
string
string
string
string
string
string
string
string (dateTime)
object
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
string (dateTime)
array
string
string (dateTime)
string
string (dateTime)
string
string
boolean
string
string
string
boolean
integer
string
string
string
string
string
string
string
string (dateTime)
object
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
agent_runner_id
account_id, site_idpage, per_page, state, title, branch, result_branch, from, to
site_iddeploy_id, branch, prompt, agent, model, parent_agent_runner_id, dev_server_image, file_keys
agent_runner_id
agent_runner_id
account_id, filename, content_type
agent_runner_id
agent_runner_id
target_branch, agent_runner_id
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
string
string
string
string
string
array
integer
string
integer (int32)
string
integer (int32)
string
string
string
string
integer
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +base_deploy_id, +latest_session_deploy_id, +parent_agent_runner_id, +site_id, +active_session_created_at, +attached_file_keys, +branch, +created_at, +current_task, +done_at, +latest_session_deploy_url, +merge_commit_error, +merge_commit_is_being_created, +merge_commit_sha, +pr_branch, +pr_error, +pr_is_being_created, +pr_number, +pr_state, +pr_url, +result_branch, +result_diff, +sha, +state, +title, +updated_at, +user +FROM netlify.agent_runners.agent_runners +WHERE agent_runner_id = '{{ agent_runner_id }}' -- required +; +``` + + + +OK + +```sql +SELECT +id, +base_deploy_id, +latest_session_deploy_id, +parent_agent_runner_id, +site_id, +active_session_created_at, +attached_file_keys, +branch, +created_at, +current_task, +done_at, +latest_session_deploy_url, +merge_commit_error, +merge_commit_is_being_created, +merge_commit_sha, +pr_branch, +pr_error, +pr_is_being_created, +pr_number, +pr_state, +pr_url, +result_branch, +result_diff, +sha, +state, +title, +updated_at, +user +FROM netlify.agent_runners.agent_runners +WHERE account_id = '{{ account_id }}' -- required +AND site_id = '{{ site_id }}' -- required +AND page = '{{ page }}' +AND per_page = '{{ per_page }}' +AND state = '{{ state }}' +AND title = '{{ title }}' +AND branch = '{{ branch }}' +AND result_branch = '{{ result_branch }}' +AND from = '{{ from }}' +AND to = '{{ to }}' +; +``` + + + + +## `INSERT` examples + + + + +No description available. + +```sql +INSERT INTO netlify.agent_runners.agent_runners ( +site_id, +deploy_id, +branch, +prompt, +agent, +model, +parent_agent_runner_id, +dev_server_image, +file_keys +) +SELECT +'{{ site_id }}', +'{{ deploy_id }}', +'{{ branch }}', +'{{ prompt }}', +'{{ agent }}', +'{{ model }}', +'{{ parent_agent_runner_id }}', +'{{ dev_server_image }}', +'{{ file_keys }}' +RETURNING +id, +base_deploy_id, +latest_session_deploy_id, +parent_agent_runner_id, +site_id, +active_session_created_at, +attached_file_keys, +branch, +created_at, +current_task, +done_at, +latest_session_deploy_url, +merge_commit_error, +merge_commit_is_being_created, +merge_commit_sha, +pr_branch, +pr_error, +pr_is_being_created, +pr_number, +pr_state, +pr_url, +result_branch, +result_diff, +sha, +state, +title, +updated_at, +user +; +``` + + + +{`# Description fields are for documentation purposes +- name: agent_runners + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the agent_runners resource. + - name: deploy_id + value: "{{ deploy_id }}" + - name: branch + value: "{{ branch }}" + - name: prompt + value: "{{ prompt }}" + - name: agent + value: "{{ agent }}" + - name: model + value: "{{ model }}" + - name: parent_agent_runner_id + value: "{{ parent_agent_runner_id }}" + - name: dev_server_image + value: "{{ dev_server_image }}" + - name: file_keys + value: "{{ file_keys }}" +`} + + + + + +## `UPDATE` examples + + + + +No description available. + +```sql +UPDATE netlify.agent_runners.agent_runners +SET +-- No updatable properties +WHERE +agent_runner_id = '{{ agent_runner_id }}' --required +RETURNING +id, +base_deploy_id, +latest_session_deploy_id, +parent_agent_runner_id, +site_id, +active_session_created_at, +attached_file_keys, +branch, +created_at, +current_task, +done_at, +latest_session_deploy_url, +merge_commit_error, +merge_commit_is_being_created, +merge_commit_sha, +pr_branch, +pr_error, +pr_is_being_created, +pr_number, +pr_state, +pr_url, +result_branch, +result_diff, +sha, +state, +title, +updated_at, +user; +``` + + + + +## `DELETE` examples + + + + +No description available. + +```sql +DELETE FROM netlify.agent_runners.agent_runners +WHERE agent_runner_id = '{{ agent_runner_id }}' --required +; +``` + + + + +## Lifecycle Methods + + + + +OK + +```sql +EXEC netlify.agent_runners.agent_runners.create_upload_url +@account_id='{{ account_id }}' --required, +@filename='{{ filename }}' --required, +@content_type='{{ content_type }}' --required +; +``` + + + +Accepted + +```sql +EXEC netlify.agent_runners.agent_runners.archive +@agent_runner_id='{{ agent_runner_id }}' --required +; +``` + + + +OK + +```sql +EXEC netlify.agent_runners.agent_runners.create_pull_request +@agent_runner_id='{{ agent_runner_id }}' --required +; +``` + + + +OK + +```sql +EXEC netlify.agent_runners.agent_runners.commit_to_branch +@target_branch='{{ target_branch }}' --required, +@agent_runner_id='{{ agent_runner_id }}' --required +; +``` + + diff --git a/website/docs/services/split_test/index.md b/website/docs/services/agent_runners/index.md similarity index 58% rename from website/docs/services/split_test/index.md rename to website/docs/services/agent_runners/index.md index 36ee321..d1bb3e2 100644 --- a/website/docs/services/split_test/index.md +++ b/website/docs/services/agent_runners/index.md @@ -1,9 +1,9 @@ --- -title: split_test +title: agent_runners hide_title: false hide_table_of_contents: false keywords: - - split_test + - agent_runners - netlify - stackql - infrastructure-as-code @@ -14,7 +14,7 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -split_test service documentation. +agent_runners service documentation. :::info[Service Summary] @@ -25,10 +25,10 @@ total resources: __3__ ## Resources \ No newline at end of file diff --git a/website/docs/services/service/index.md b/website/docs/services/ai_gateway/index.md similarity index 72% rename from website/docs/services/service/index.md rename to website/docs/services/ai_gateway/index.md index 5c0cae6..d2d2457 100644 --- a/website/docs/services/service/index.md +++ b/website/docs/services/ai_gateway/index.md @@ -1,9 +1,9 @@ --- -title: service +title: ai_gateway hide_title: false hide_table_of_contents: false keywords: - - service + - ai_gateway - netlify - stackql - infrastructure-as-code @@ -14,7 +14,7 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -service service documentation. +ai_gateway service documentation. :::info[Service Summary] @@ -25,9 +25,9 @@ total resources: __2__ ## Resources \ No newline at end of file diff --git a/website/docs/services/deploy/deploys_cancel/index.md b/website/docs/services/ai_gateway/providers/index.md similarity index 55% rename from website/docs/services/deploy/deploys_cancel/index.md rename to website/docs/services/ai_gateway/providers/index.md index bcc9c4e..0de6ac7 100644 --- a/website/docs/services/deploy/deploys_cancel/index.md +++ b/website/docs/services/ai_gateway/providers/index.md @@ -1,10 +1,10 @@ --- -title: deploys_cancel +title: providers hide_title: false hide_table_of_contents: false keywords: - - deploys_cancel - - deploy + - providers + - ai_gateway - netlify - infrastructure-as-code - configuration-as-data @@ -15,24 +15,51 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a deploys_cancel resource. +Creates, updates, deletes, gets or lists a providers resource. ## Overview - + - +
Namedeploys_cancel
Name
TypeResource
Id
Id
## Fields The following fields are returned by `SELECT` queries: -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + + +The mapping of providers and supported models + + + + + + + + + + + + + + + +
NameDatatypeDescription
+
+
## Methods @@ -50,9 +77,9 @@ The following methods are available for this resource: - - - deploy_id + + + @@ -72,29 +99,25 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# - - - string - - -## Lifecycle Methods +## `SELECT` examples - + -Cancelled +The mapping of providers and supported models ```sql -EXEC netlify.deploy.deploys_cancel.cancelSiteDeploy -@deploy_id='{{ deploy_id }}' --required +SELECT +providers +FROM netlify.ai_gateway.providers ; ``` diff --git a/website/docs/services/ai_gateway/tokens/index.md b/website/docs/services/ai_gateway/tokens/index.md new file mode 100644 index 0000000..9b1f9ea --- /dev/null +++ b/website/docs/services/ai_gateway/tokens/index.md @@ -0,0 +1,201 @@ +--- +title: tokens +hide_title: false +hide_table_of_contents: false +keywords: + - tokens + - ai_gateway + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a tokens resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + +AI Gateway token for the site + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Unix timestamp when the token expires
stringThe AI Gateway authentication token
stringAI gateway base url
+
+ + +AI Gateway token for the account + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
integer (int64)Unix timestamp when the token expires
stringThe AI Gateway authentication token
stringAI gateway base url
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_idReturns an AI Gateway token for a specific site
account_idReturns an AI Gateway token scoped to an account
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe account ID
stringThe site ID
+ +## `SELECT` examples + + + + +Returns an AI Gateway token for a specific site + +```sql +SELECT +expires_at, +token, +url +FROM netlify.ai_gateway.tokens +WHERE site_id = '{{ site_id }}' -- required +; +``` + + + +Returns an AI Gateway token scoped to an account + +```sql +SELECT +expires_at, +token, +url +FROM netlify.ai_gateway.tokens +WHERE account_id = '{{ account_id }}' -- required +; +``` + + diff --git a/website/docs/services/asset_public_signature/index.md b/website/docs/services/asset_public_signature/index.md deleted file mode 100644 index 5409d90..0000000 --- a/website/docs/services/asset_public_signature/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: asset_public_signature -hide_title: false -hide_table_of_contents: false -keywords: - - asset_public_signature - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -asset_public_signature service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources - \ No newline at end of file diff --git a/website/docs/services/build_hook/index.md b/website/docs/services/build_hook/index.md deleted file mode 100644 index ad0fcaf..0000000 --- a/website/docs/services/build_hook/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: build_hook -hide_title: false -hide_table_of_contents: false -keywords: - - build_hook - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -build_hook service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources -
- -
- -
-
\ No newline at end of file diff --git a/website/docs/services/build_log_msg/builds_log/index.md b/website/docs/services/build_log_msg/builds_log/index.md deleted file mode 100644 index ed4946e..0000000 --- a/website/docs/services/build_log_msg/builds_log/index.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: builds_log -hide_title: false -hide_table_of_contents: false -keywords: - - builds_log - - build_log_msg - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a builds_log resource. - -## Overview - - - - -
Namebuilds_log
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
build_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## Lifecycle Methods - - - - -No content - -```sql -EXEC netlify.build_log_msg.builds_log.updateSiteBuildLog -@build_id='{{ build_id }}' --required -; -``` - - diff --git a/website/docs/services/build_log_msg/index.md b/website/docs/services/build_log_msg/index.md deleted file mode 100644 index 3897198..0000000 --- a/website/docs/services/build_log_msg/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: build_log_msg -hide_title: false -hide_table_of_contents: false -keywords: - - build_log_msg - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -build_log_msg service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources -
- -
- -
-
\ No newline at end of file diff --git a/website/docs/services/build_hook/sites_build_hooks/index.md b/website/docs/services/builds/build_hooks/index.md similarity index 66% rename from website/docs/services/build_hook/sites_build_hooks/index.md rename to website/docs/services/builds/build_hooks/index.md index 1c51dae..526edea 100644 --- a/website/docs/services/build_hook/sites_build_hooks/index.md +++ b/website/docs/services/builds/build_hooks/index.md @@ -1,10 +1,10 @@ --- -title: sites_build_hooks +title: build_hooks hide_title: false hide_table_of_contents: false keywords: - - sites_build_hooks - - build_hook + - build_hooks + - builds - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a sites_build_hooks resource. +Creates, updates, deletes, gets or lists a build_hooks resource. ## Overview - + - +
Namesites_build_hooks
Name
TypeResource
Id
Id
## Fields @@ -32,13 +33,13 @@ Creates, updates, deletes, gets or lists a sites_build_hooks resour The following fields are returned by `SELECT` queries: - + @@ -82,7 +83,7 @@ The following fields are returned by `SELECT` queries:
- + @@ -144,36 +145,36 @@ The following methods are available for this resource: - + - + - + - - + + - - + + @@ -210,13 +211,13 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -228,13 +229,13 @@ branch, created_at, title, url -FROM netlify.build_hook.sites_build_hooks +FROM netlify.builds.build_hooks WHERE site_id = '{{ site_id }}' -- required AND id = '{{ id }}' -- required ; ``` - + OK @@ -246,7 +247,7 @@ branch, created_at, title, url -FROM netlify.build_hook.sites_build_hooks +FROM netlify.builds.build_hooks WHERE site_id = '{{ site_id }}' -- required ; ``` @@ -257,25 +258,25 @@ WHERE site_id = '{{ site_id }}' -- required ## `INSERT` examples - + No description available. ```sql -INSERT INTO netlify.build_hook.sites_build_hooks ( -data__branch, -data__title, +INSERT INTO netlify.builds.build_hooks ( +title, +branch, site_id ) SELECT -'{{ branch }}', '{{ title }}', +'{{ branch }}', '{{ site_id }}' RETURNING id, @@ -289,65 +290,63 @@ url -```yaml -# Description fields are for documentation purposes -- name: sites_build_hooks +{`# Description fields are for documentation purposes +- name: build_hooks props: - name: site_id - value: string - description: Required parameter for the sites_build_hooks resource. - - name: branch - value: string + value: "{{ site_id }}" + description: Required parameter for the build_hooks resource. - name: title - value: string -``` + value: "{{ title }}" + - name: branch + value: "{{ branch }}" +`} + -## `DELETE` examples +## `REPLACE` examples - + No description available. ```sql -DELETE FROM netlify.build_hook.sites_build_hooks -WHERE site_id = '{{ site_id }}' --required -AND id = '{{ id }}' --required -; +REPLACE netlify.builds.build_hooks +SET +title = '{{ title }}', +branch = '{{ branch }}' +WHERE +site_id = '{{ site_id }}' --required +AND id = '{{ id }}' --required; ``` -## Lifecycle Methods +## `DELETE` examples - + -No content +No description available. ```sql -EXEC netlify.build_hook.sites_build_hooks.updateSiteBuildHook -@site_id='{{ site_id }}' --required, -@id='{{ id }}' --required -@@json= -'{ -"branch": "{{ branch }}", -"title": "{{ title }}" -}' +DELETE FROM netlify.builds.build_hooks +WHERE site_id = '{{ site_id }}' --required +AND id = '{{ id }}' --required ; ``` diff --git a/website/docs/services/audit_log/accounts_audit/index.md b/website/docs/services/builds/build_status/index.md similarity index 63% rename from website/docs/services/audit_log/accounts_audit/index.md rename to website/docs/services/builds/build_status/index.md index e62c08f..2362994 100644 --- a/website/docs/services/audit_log/accounts_audit/index.md +++ b/website/docs/services/builds/build_status/index.md @@ -1,10 +1,10 @@ --- -title: accounts_audit +title: build_status hide_title: false hide_table_of_contents: false keywords: - - accounts_audit - - audit_log + - build_status + - builds - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists an accounts_audit resource. +Creates, updates, deletes, gets or lists a build_status resource. ## Overview
site_id, id
site_id
site_id
site_id, id
site_id, id
- + - +
Nameaccounts_audit
Name
TypeResource
Id
Id
## Fields @@ -32,12 +33,12 @@ Creates, updates, deletes, gets or lists an accounts_audit resource The following fields are returned by `SELECT` queries: - + @@ -49,20 +50,30 @@ The following fields are returned by `SELECT` queries: - - + + - - + + - + + + + + + + + + + +
stringinteger
stringinteger
integer
object
integer
@@ -84,7 +95,7 @@ The following methods are available for this resource: - + account_id @@ -117,21 +128,23 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK ```sql SELECT -id, -account_id, -payload -FROM netlify.audit_log.accounts_audit +active, +build_count, +enqueued, +minutes, +pending_concurrency +FROM netlify.builds.build_status WHERE account_id = '{{ account_id }}' -- required ; ``` diff --git a/website/docs/services/builds/builds/index.md b/website/docs/services/builds/builds/index.md new file mode 100644 index 0000000..5908a61 --- /dev/null +++ b/website/docs/services/builds/builds/index.md @@ -0,0 +1,422 @@ +--- +title: builds +hide_title: false +hide_table_of_contents: false +keywords: + - builds + - builds + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a builds resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string (dateTime)
boolean
string
string
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string (dateTime)
boolean
string
string
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_idpage, per_page
build_id
site_idbranch, clear_cache, image, template_id, titleRuns a build for a site. The build will be scheduled to run at the first opportunity, but it might not start immediately if insufficient account build capacity is available.<br /><br />Files for build can be uploaded as a zipped site using one of these methods:<br />1. Set Content-Type to 'application/zip' and send the zip file as the raw request body<br />2. Set Content-Type to 'multipart/form-data' and include the zip file in the 'zip' field<br />
build_id
build_idbuildbot_version, build_version, task_id
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
stringIf no branch is specified, it is treated as a production deploy If a branch IS specified and matches the main branch, it is also production If a branch is specified and doesn't match the main branch, it is a branch deploy
string
string
booleanWhether to clear the build cache before building
stringThe build image tag to use for the build
integer (int32)
integer (int32)
string
stringThe build template to use for the build
stringThe title of the build
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +deploy_id, +created_at, +done, +error, +sha +FROM netlify.builds.builds +WHERE site_id = '{{ site_id }}' -- required +AND page = '{{ page }}' +AND per_page = '{{ per_page }}' +; +``` + + + +OK + +```sql +SELECT +id, +deploy_id, +created_at, +done, +error, +sha +FROM netlify.builds.builds +WHERE build_id = '{{ build_id }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Runs a build for a site. The build will be scheduled to run at the first opportunity, but it might not start immediately if insufficient account build capacity is available.<br /><br />Files for build can be uploaded as a zipped site using one of these methods:<br />1. Set Content-Type to 'application/zip' and send the zip file as the raw request body<br />2. Set Content-Type to 'multipart/form-data' and include the zip file in the 'zip' field<br /> + +```sql +INSERT INTO netlify.builds.builds ( +zip, +site_id, +branch, +clear_cache, +image, +template_id, +title +) +SELECT +'{{ zip }}', +'{{ site_id }}', +'{{ branch }}', +'{{ clear_cache }}', +'{{ image }}', +'{{ template_id }}', +'{{ title }}' +RETURNING +id, +deploy_id, +created_at, +done, +error, +sha +; +``` + + + +{`# Description fields are for documentation purposes +- name: builds + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the builds resource. + - name: zip + value: "{{ zip }}" + description: | + A zip file containing the site files to build. + Only used with Content-Type 'multipart/form-data'. + Alternatively, set Content-Type to 'application/zip' and send the zip as the raw request body (no 'zip' parameter needed). + - name: branch + value: "{{ branch }}" + description: If no branch is specified, it is treated as a production deploy If a branch IS specified and matches the main branch, it is also production If a branch is specified and doesn't match the main branch, it is a branch deploy + description: If no branch is specified, it is treated as a production deploy If a branch IS specified and matches the main branch, it is also production If a branch is specified and doesn't match the main branch, it is a branch deploy + - name: clear_cache + value: {{ clear_cache }} + description: Whether to clear the build cache before building + description: Whether to clear the build cache before building + - name: image + value: "{{ image }}" + description: The build image tag to use for the build + description: The build image tag to use for the build + - name: template_id + value: "{{ template_id }}" + description: The build template to use for the build + description: The build template to use for the build + - name: title + value: "{{ title }}" + description: The title of the build + description: The title of the build +`} + + + + + +## Lifecycle Methods + + + + +No content + +```sql +EXEC netlify.builds.builds.update_log +@build_id='{{ build_id }}' --required +; +``` + + + +No content + +```sql +EXEC netlify.builds.builds.notify_start +@build_id='{{ build_id }}' --required, +@buildbot_version='{{ buildbot_version }}', +@build_version='{{ build_version }}', +@task_id='{{ task_id }}' +; +``` + + diff --git a/website/docs/services/account_type/index.md b/website/docs/services/builds/index.md similarity index 64% rename from website/docs/services/account_type/index.md rename to website/docs/services/builds/index.md index 78779c7..12b1998 100644 --- a/website/docs/services/account_type/index.md +++ b/website/docs/services/builds/index.md @@ -1,9 +1,9 @@ --- -title: account_type +title: builds hide_title: false hide_table_of_contents: false keywords: - - account_type + - builds - netlify - stackql - infrastructure-as-code @@ -14,20 +14,21 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -account_type service documentation. +builds service documentation. :::info[Service Summary] -total resources: __1__ +total resources: __3__ ::: ## Resources \ No newline at end of file diff --git a/website/docs/services/database/branches/index.md b/website/docs/services/database/branches/index.md new file mode 100644 index 0000000..589dee4 --- /dev/null +++ b/website/docs/services/database/branches/index.md @@ -0,0 +1,373 @@ +--- +title: branches +hide_title: false +hide_table_of_contents: false +keywords: + - branches + - database + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a branches resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe connection string for the database branch
objectMetadata associated with the branch
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe branch name
stringThe branch identifier
objectCompute endpoint status for a branch
stringThe connection string for the branch
string (dateTime)When the branch was created
string (dateTime)When the branch was last active
integer (int64)The logical size of the branch in bytes
objectMetadata associated with the branch
stringThe current state of the branch (init, creating, resetting, ready, archived)
string (dateTime)When the branch was last updated
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, branch_idroleReturns the database branch connection string for a specific branch.
site_idReturns all branches for the site's database with compute status and metadata.
site_id, branch_idCreates a new database branch. If a branch already exists for the specified branch ID, returns the existing connection string.
site_id, branch_idDeletes a database branch.
site_id, branch_idforce, roleResets a non-production database branch by re-forking it from a source branch (defaults to the production branch). If the target branch is already in sync with the source, returns the existing connection string without performing a reset, unless `force=true` is passed. The production branch cannot be reset.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe branch ID to reset
string
booleanIf true, resets the branch even when it is already in sync with the source.
stringThe database role to use for the returned connection string. Defaults to netlifydb_owner if not specified.
+ +## `SELECT` examples + + + + +Returns the database branch connection string for a specific branch. + +```sql +SELECT +connection_string, +metadata +FROM netlify.database.branches +WHERE site_id = '{{ site_id }}' -- required +AND branch_id = '{{ branch_id }}' -- required +AND role = '{{ role }}' +; +``` + + + +Returns all branches for the site's database with compute status and metadata. + +```sql +SELECT +name, +branch_id, +compute, +connection_string, +created_at, +last_active_at, +logical_size_bytes, +metadata, +state, +updated_at +FROM netlify.database.branches +WHERE site_id = '{{ site_id }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Creates a new database branch. If a branch already exists for the specified branch ID, returns the existing connection string. + +```sql +INSERT INTO netlify.database.branches ( +parent_branch_id, +branch_id, +metadata, +site_id +) +SELECT +'{{ parent_branch_id }}', +'{{ branch_id }}' /* required */, +'{{ metadata }}', +'{{ site_id }}' +RETURNING +connection_string, +metadata +; +``` + + + +{`# Description fields are for documentation purposes +- name: branches + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the branches resource. + - name: parent_branch_id + value: "{{ parent_branch_id }}" + description: | + The ID of the parent branch to create the new branch from. Defaults to the production branch if not specified. + - name: branch_id + value: "{{ branch_id }}" + description: | + The branch identifier + - name: metadata + value: "{{ metadata }}" + description: | + Arbitrary metadata to associate with the branch +`} + + + + + +## `DELETE` examples + + + + +Deletes a database branch. + +```sql +DELETE FROM netlify.database.branches +WHERE site_id = '{{ site_id }}' --required +AND branch_id = '{{ branch_id }}' --required +; +``` + + + + +## Lifecycle Methods + + + + +Resets a non-production database branch by re-forking it from a source branch (defaults to the production branch). If the target branch is already in sync with the source, returns the existing connection string without performing a reset, unless `force=true` is passed. The production branch cannot be reset. + +```sql +EXEC netlify.database.branches.reset +@site_id='{{ site_id }}' --required, +@branch_id='{{ branch_id }}' --required, +@force={{ force }}, +@role='{{ role }}' +@@json= +'{ +"source_branch_id": "{{ source_branch_id }}" +}' +; +``` + + diff --git a/website/docs/services/database/compute_settings/index.md b/website/docs/services/database/compute_settings/index.md new file mode 100644 index 0000000..8059c26 --- /dev/null +++ b/website/docs/services/database/compute_settings/index.md @@ -0,0 +1,236 @@ +--- +title: compute_settings +hide_title: false +hide_table_of_contents: false +keywords: + - compute_settings + - database + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a compute_settings resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
number (double)Maximum compute units
number (double)Minimum compute units
integer (int64)Seconds of inactivity before suspension
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_idReturns the project-level compute settings for the database. Returns effective settings (custom or tier defaults). Requires a Pro or higher plan.
site_id, branch_idSets compute settings for a specific database branch, overriding project-level settings. Requires a Pro or higher plan.
site_idSets project-level compute settings for the database. Applied to new branches. Can be overridden per-branch. Requires a Pro or higher plan.
site_idResets project-level compute settings to tier defaults. Requires a Pro or higher plan.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe branch ID
string
+ +## `SELECT` examples + + + + +Returns the project-level compute settings for the database. Returns effective settings (custom or tier defaults). Requires a Pro or higher plan. + +```sql +SELECT +max_cu, +min_cu, +sleep_timeout_seconds +FROM netlify.database.compute_settings +WHERE site_id = '{{ site_id }}' -- required +; +``` + + + + +## `REPLACE` examples + + + + +Sets compute settings for a specific database branch, overriding project-level settings. Requires a Pro or higher plan. + +```sql +REPLACE netlify.database.compute_settings +SET +min_cu = {{ min_cu }}, +max_cu = {{ max_cu }}, +sleep_timeout_seconds = {{ sleep_timeout_seconds }} +WHERE +site_id = '{{ site_id }}' --required +AND branch_id = '{{ branch_id }}' --required +RETURNING +max_cu, +min_cu, +sleep_timeout_seconds; +``` + + + +Sets project-level compute settings for the database. Applied to new branches. Can be overridden per-branch. Requires a Pro or higher plan. + +```sql +REPLACE netlify.database.compute_settings +SET +min_cu = {{ min_cu }}, +max_cu = {{ max_cu }}, +sleep_timeout_seconds = {{ sleep_timeout_seconds }} +WHERE +site_id = '{{ site_id }}' --required +RETURNING +max_cu, +min_cu, +sleep_timeout_seconds; +``` + + + + +## `DELETE` examples + + + + +Resets project-level compute settings to tier defaults. Requires a Pro or higher plan. + +```sql +DELETE FROM netlify.database.compute_settings +WHERE site_id = '{{ site_id }}' --required +; +``` + + diff --git a/website/docs/services/database/databases/index.md b/website/docs/services/database/databases/index.md new file mode 100644 index 0000000..41bf675 --- /dev/null +++ b/website/docs/services/database/databases/index.md @@ -0,0 +1,213 @@ +--- +title: databases +hide_title: false +hide_table_of_contents: false +keywords: + - databases + - database + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a databases resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe connection string for the database
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_idroleReturns the database connection string for the specified site.
site_idCreates a new database for the specified site. If a database already exists, returns the existing connection string. The database region defaults to the site's functions region if not specified.
site_idDeletes the database and all associated branches and snapshots for the specified site.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
stringThe database role to use for the connection string. Defaults to netlifydb_owner if not specified.
+ +## `SELECT` examples + + + + +Returns the database connection string for the specified site. + +```sql +SELECT +connection_string +FROM netlify.database.databases +WHERE site_id = '{{ site_id }}' -- required +AND role = '{{ role }}' +; +``` + + + + +## `INSERT` examples + + + + +Creates a new database for the specified site. If a database already exists, returns the existing connection string. The database region defaults to the site's functions region if not specified. + +```sql +INSERT INTO netlify.database.databases ( +region, +site_id +) +SELECT +'{{ region }}', +'{{ site_id }}' +RETURNING +connection_string +; +``` + + + +{`# Description fields are for documentation purposes +- name: databases + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the databases resource. + - name: region + value: "{{ region }}" + description: | + The region where the database should be created. Defaults to the site's functions region if not specified. +`} + + + + + +## `DELETE` examples + + + + +Deletes the database and all associated branches and snapshots for the specified site. + +```sql +DELETE FROM netlify.database.databases +WHERE site_id = '{{ site_id }}' --required +; +``` + + diff --git a/website/docs/services/account_membership/index.md b/website/docs/services/database/index.md similarity index 54% rename from website/docs/services/account_membership/index.md rename to website/docs/services/database/index.md index 0fed20f..2b80ca6 100644 --- a/website/docs/services/account_membership/index.md +++ b/website/docs/services/database/index.md @@ -1,9 +1,9 @@ --- -title: account_membership +title: database hide_title: false hide_table_of_contents: false keywords: - - account_membership + - database - netlify - stackql - infrastructure-as-code @@ -14,20 +14,23 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -account_membership service documentation. +database service documentation. :::info[Service Summary] -total resources: __1__ +total resources: __5__ ::: ## Resources \ No newline at end of file diff --git a/website/docs/services/database/migrations/index.md b/website/docs/services/database/migrations/index.md new file mode 100644 index 0000000..0658b8b --- /dev/null +++ b/website/docs/services/database/migrations/index.md @@ -0,0 +1,255 @@ +--- +title: migrations +hide_title: false +hide_table_of_contents: false +keywords: + - migrations + - database + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a migrations resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe migration name
stringThe raw contents of the migration file
stringThe path to the migration file in the deploy bundle
integer (int64)The migration version number
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe migration name
booleanWhether this migration has been applied to the branch
stringThe path to the migration file in the deploy bundle
integer (int64)The migration version number
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, namebranchReturns the contents of a named migration for the specified branch.
site_idbranchReturns the list of migrations available for the specified branch, indicating which ones have been applied to the database.
site_id, deploy_idRuns database migrations for the specified deploy. Finds the deploy and determines the appropriate branch.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe deploy ID to run migrations for
stringThe migration name
string
stringThe branch ID to list migrations for. Defaults to "production" if not specified.
+ +## `SELECT` examples + + + + +Returns the contents of a named migration for the specified branch. + +```sql +SELECT +name, +content, +path, +version +FROM netlify.database.migrations +WHERE site_id = '{{ site_id }}' -- required +AND name = '{{ name }}' -- required +AND branch = '{{ branch }}' +; +``` + + + +Returns the list of migrations available for the specified branch, indicating which ones have been applied to the database. + +```sql +SELECT +name, +applied, +path, +version +FROM netlify.database.migrations +WHERE site_id = '{{ site_id }}' -- required +AND branch = '{{ branch }}' +; +``` + + + + +## Lifecycle Methods + + + + +Runs database migrations for the specified deploy. Finds the deploy and determines the appropriate branch. + +```sql +EXEC netlify.database.migrations.run +@site_id='{{ site_id }}' --required, +@deploy_id='{{ deploy_id }}' --required +@@json= +'{ +"dry_run": {{ dry_run }} +}' +; +``` + + diff --git a/website/docs/services/database/snapshots/index.md b/website/docs/services/database/snapshots/index.md new file mode 100644 index 0000000..e5a381a --- /dev/null +++ b/website/docs/services/database/snapshots/index.md @@ -0,0 +1,302 @@ +--- +title: snapshots +hide_title: false +hide_table_of_contents: false +keywords: + - snapshots + - database + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a snapshots resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
stringThe unique identifier of the snapshot
stringThe ID of the branch that was snapshotted
string (dateTime)When the snapshot was created
string (dateTime)When the snapshot expires
booleanWhether this snapshot was manually created
objectMetadata associated with a snapshot
string (dateTime)The point-in-time timestamp of the snapshot
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_idReturns all snapshots for the site's database.
site_idCreates a point-in-time snapshot of a database branch. Defaults to the production branch if no branch name is specified.
site_id, snapshot_idDeletes a database snapshot.
site_id, snapshot_idRestores a snapshot to a database branch. Defaults to the production branch if no branch_name is specified.
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
stringThe snapshot ID to restore
+ +## `SELECT` examples + + + + +Returns all snapshots for the site's database. + +```sql +SELECT +id, +source_branch_id, +created_at, +expires_at, +manual, +metadata, +timestamp +FROM netlify.database.snapshots +WHERE site_id = '{{ site_id }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Creates a point-in-time snapshot of a database branch. Defaults to the production branch if no branch name is specified. + +```sql +INSERT INTO netlify.database.snapshots ( +branch_id, +name, +metadata, +site_id +) +SELECT +'{{ branch_id }}', +'{{ name }}', +'{{ metadata }}', +'{{ site_id }}' +RETURNING +id, +source_branch_id, +created_at, +expires_at, +manual, +metadata, +timestamp +; +``` + + + +{`# Description fields are for documentation purposes +- name: snapshots + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the snapshots resource. + - name: branch_id + value: "{{ branch_id }}" + description: | + The ID of the branch to snapshot. Defaults to "production" if not specified. + - name: name + value: "{{ name }}" + description: | + A name for the snapshot + - name: metadata + description: | + Metadata associated with a snapshot + value: + deploy: "{{ deploy }}" + source: "{{ source }}" +`} + + + + + +## `DELETE` examples + + + + +Deletes a database snapshot. + +```sql +DELETE FROM netlify.database.snapshots +WHERE site_id = '{{ site_id }}' --required +AND snapshot_id = '{{ snapshot_id }}' --required +; +``` + + + + +## Lifecycle Methods + + + + +Restores a snapshot to a database branch. Defaults to the production branch if no branch_name is specified. + +```sql +EXEC netlify.database.snapshots.restore +@site_id='{{ site_id }}' --required, +@snapshot_id='{{ snapshot_id }}' --required +@@json= +'{ +"branch_id": "{{ branch_id }}" +}' +; +``` + + diff --git a/website/docs/services/deploy/deploys/index.md b/website/docs/services/deploy/deploys/index.md deleted file mode 100644 index 575a6f7..0000000 --- a/website/docs/services/deploy/deploys/index.md +++ /dev/null @@ -1,307 +0,0 @@ ---- -title: deploys -hide_title: false -hide_table_of_contents: false -keywords: - - deploys - - deploy - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a deploys resource. - -## Overview - - - - -
Namedeploys
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
number
string
string
string
string
string
string
string
string (dateTime)
string
string
boolean
string
string
array
boolean
string (dateTime)
array
array
string
string
object
boolean
string
string
string
string (dateTime)
string
-
-
- -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
deploy_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## `SELECT` examples - - - - -OK - -```sql -SELECT -id, -name, -build_id, -review_id, -site_id, -user_id, -admin_url, -branch, -commit_ref, -commit_url, -context, -created_at, -deploy_ssl_url, -deploy_url, -draft, -error_message, -framework, -function_schedules, -locked, -published_at, -required, -required_functions, -review_url, -screenshot_url, -site_capabilities, -skipped, -ssl_url, -state, -title, -updated_at, -url -FROM netlify.deploy.deploys -WHERE deploy_id = '{{ deploy_id }}' -- required -; -``` - - diff --git a/website/docs/services/deploy/deploys_lock/index.md b/website/docs/services/deploy/deploys_lock/index.md deleted file mode 100644 index f9ee054..0000000 --- a/website/docs/services/deploy/deploys_lock/index.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: deploys_lock -hide_title: false -hide_table_of_contents: false -keywords: - - deploys_lock - - deploy - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a deploys_lock resource. - -## Overview - - - - -
Namedeploys_lock
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
deploy_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## Lifecycle Methods - - - - -OK - -```sql -EXEC netlify.deploy.deploys_lock.lockDeploy -@deploy_id='{{ deploy_id }}' --required -; -``` - - diff --git a/website/docs/services/deploy/deploys_unlock/index.md b/website/docs/services/deploy/deploys_unlock/index.md deleted file mode 100644 index bf37e39..0000000 --- a/website/docs/services/deploy/deploys_unlock/index.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: deploys_unlock -hide_title: false -hide_table_of_contents: false -keywords: - - deploys_unlock - - deploy - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a deploys_unlock resource. - -## Overview - - - - -
Namedeploys_unlock
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
deploy_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## Lifecycle Methods - - - - -OK - -```sql -EXEC netlify.deploy.deploys_unlock.unlockDeploy -@deploy_id='{{ deploy_id }}' --required -; -``` - - diff --git a/website/docs/services/deploy/index.md b/website/docs/services/deploy/index.md deleted file mode 100644 index 87c26fa..0000000 --- a/website/docs/services/deploy/index.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: deploy -hide_title: false -hide_table_of_contents: false -keywords: - - deploy - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -deploy service documentation. - -:::info[Service Summary] - -total resources: __7__ - -::: - -## Resources - \ No newline at end of file diff --git a/website/docs/services/deploy/sites_deploys/index.md b/website/docs/services/deploy/sites_deploys/index.md deleted file mode 100644 index ece588f..0000000 --- a/website/docs/services/deploy/sites_deploys/index.md +++ /dev/null @@ -1,675 +0,0 @@ ---- -title: sites_deploys -hide_title: false -hide_table_of_contents: false -keywords: - - sites_deploys - - deploy - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a sites_deploys resource. - -## Overview - - - - -
Namesites_deploys
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
number
string
string
string
string
string
string
string
string (dateTime)
string
string
boolean
string
string
array
boolean
string (dateTime)
array
array
string
string
object
boolean
string
string
string
string (dateTime)
string
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
number
string
string
string
string
string
string
string
string (dateTime)
string
string
boolean
string
string
array
boolean
string (dateTime)
array
array
string
string
object
boolean
string
string
string
string (dateTime)
string
-
-
- -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, deploy_id
site_id
site_id
site_id, deploy_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
- -## `SELECT` examples - - - - -OK - -```sql -SELECT -id, -name, -build_id, -review_id, -site_id, -user_id, -admin_url, -branch, -commit_ref, -commit_url, -context, -created_at, -deploy_ssl_url, -deploy_url, -draft, -error_message, -framework, -function_schedules, -locked, -published_at, -required, -required_functions, -review_url, -screenshot_url, -site_capabilities, -skipped, -ssl_url, -state, -title, -updated_at, -url -FROM netlify.deploy.sites_deploys -WHERE site_id = '{{ site_id }}' -- required -AND deploy_id = '{{ deploy_id }}' -- required -; -``` - - - -OK - -```sql -SELECT -id, -name, -build_id, -review_id, -site_id, -user_id, -admin_url, -branch, -commit_ref, -commit_url, -context, -created_at, -deploy_ssl_url, -deploy_url, -draft, -error_message, -framework, -function_schedules, -locked, -published_at, -required, -required_functions, -review_url, -screenshot_url, -site_capabilities, -skipped, -ssl_url, -state, -title, -updated_at, -url -FROM netlify.deploy.sites_deploys -WHERE site_id = '{{ site_id }}' -- required -; -``` - - - - -## `INSERT` examples - - - - -No description available. - -```sql -INSERT INTO netlify.deploy.sites_deploys ( -data__async, -data__branch, -data__draft, -data__files, -data__framework, -data__function_schedules, -data__functions, -site_id -) -SELECT -{{ async }}, -'{{ branch }}', -{{ draft }}, -'{{ files }}', -'{{ framework }}', -'{{ function_schedules }}', -'{{ functions }}', -'{{ site_id }}' -RETURNING -id, -name, -build_id, -review_id, -site_id, -user_id, -admin_url, -branch, -commit_ref, -commit_url, -context, -created_at, -deploy_ssl_url, -deploy_url, -draft, -error_message, -framework, -function_schedules, -locked, -published_at, -required, -required_functions, -review_url, -screenshot_url, -site_capabilities, -skipped, -ssl_url, -state, -title, -updated_at, -url -; -``` - - - -```yaml -# Description fields are for documentation purposes -- name: sites_deploys - props: - - name: site_id - value: string - description: Required parameter for the sites_deploys resource. - - name: async - value: boolean - - name: branch - value: string - - name: draft - value: boolean - - name: files - value: object - - name: framework - value: string - - name: function_schedules - value: array - - name: functions - value: object -``` - - - - -## Lifecycle Methods - - - - -OK - -```sql -EXEC netlify.deploy.sites_deploys.updateSiteDeploy -@site_id='{{ site_id }}' --required, -@deploy_id='{{ deploy_id }}' --required -@@json= -'{ -"async": {{ async }}, -"branch": "{{ branch }}", -"draft": {{ draft }}, -"files": "{{ files }}", -"framework": "{{ framework }}", -"function_schedules": "{{ function_schedules }}", -"functions": "{{ functions }}" -}' -; -``` - - diff --git a/website/docs/services/deploy/sites_rollback/index.md b/website/docs/services/deploy/sites_rollback/index.md deleted file mode 100644 index 7035dee..0000000 --- a/website/docs/services/deploy/sites_rollback/index.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: sites_rollback -hide_title: false -hide_table_of_contents: false -keywords: - - sites_rollback - - deploy - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a sites_rollback resource. - -## Overview - - - - -
Namesites_rollback
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
site_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## Lifecycle Methods - - - - -No content - -```sql -EXEC netlify.deploy.sites_rollback.rollbackSiteDeploy -@site_id='{{ site_id }}' --required -; -``` - - diff --git a/website/docs/services/deploy_key/index.md b/website/docs/services/deploy_key/index.md deleted file mode 100644 index fca462d..0000000 --- a/website/docs/services/deploy_key/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: deploy_key -hide_title: false -hide_table_of_contents: false -keywords: - - deploy_key - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -deploy_key service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources -
- -
- -
-
\ No newline at end of file diff --git a/website/docs/services/deployed_branch/index.md b/website/docs/services/deployed_branch/index.md deleted file mode 100644 index 5c51d36..0000000 --- a/website/docs/services/deployed_branch/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: deployed_branch -hide_title: false -hide_table_of_contents: false -keywords: - - deployed_branch - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -deployed_branch service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources - \ No newline at end of file diff --git a/website/docs/services/deploy_key/deploy_keys/index.md b/website/docs/services/deploys/deploy_keys/index.md similarity index 71% rename from website/docs/services/deploy_key/deploy_keys/index.md rename to website/docs/services/deploys/deploy_keys/index.md index 5f5de5e..f8865b2 100644 --- a/website/docs/services/deploy_key/deploy_keys/index.md +++ b/website/docs/services/deploys/deploy_keys/index.md @@ -4,7 +4,7 @@ hide_title: false hide_table_of_contents: false keywords: - deploy_keys - - deploy_key + - deploys - netlify - infrastructure-as-code - configuration-as-data @@ -15,6 +15,7 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -22,9 +23,9 @@ Creates, updates, deletes, gets or lists a deploy_keys resource. ## Overview - + - +
Namedeploy_keys
Name
TypeResource
Id
Id
## Fields @@ -32,13 +33,13 @@ Creates, updates, deletes, gets or lists a deploy_keys resource. The following fields are returned by `SELECT` queries: - + @@ -67,7 +68,7 @@ The following fields are returned by `SELECT` queries:
- + @@ -114,28 +115,28 @@ The following methods are available for this resource: - + - + - + - + @@ -168,13 +169,13 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -183,12 +184,12 @@ SELECT id, created_at, public_key -FROM netlify.deploy_key.deploy_keys +FROM netlify.deploys.deploy_keys WHERE key_id = '{{ key_id }}' -- required ; ``` - + OK @@ -197,7 +198,7 @@ SELECT id, created_at, public_key -FROM netlify.deploy_key.deploy_keys +FROM netlify.deploys.deploy_keys ; ``` @@ -207,18 +208,18 @@ FROM netlify.deploy_key.deploy_keys ## `INSERT` examples - + No description available. ```sql -INSERT INTO netlify.deploy_key.deploy_keys ( +INSERT INTO netlify.deploys.deploy_keys ( ) SELECT @@ -232,11 +233,11 @@ public_key -```yaml -# Description fields are for documentation purposes +{`# Description fields are for documentation purposes - name: deploy_keys props: -``` +`} + @@ -244,17 +245,17 @@ public_key ## `DELETE` examples - + No description available. ```sql -DELETE FROM netlify.deploy_key.deploy_keys +DELETE FROM netlify.deploys.deploy_keys WHERE key_id = '{{ key_id }}' --required ; ``` diff --git a/website/docs/services/deploys/deploys/index.md b/website/docs/services/deploys/deploys/index.md new file mode 100644 index 0000000..6a897de --- /dev/null +++ b/website/docs/services/deploys/deploys/index.md @@ -0,0 +1,1405 @@ +--- +title: deploys +hide_title: false +hide_table_of_contents: false +keywords: + - deploys + - deploys + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a deploys resource. + +## Overview +
key_id
key_id
+ + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
number
string
string
string
string
string
string
string
string (dateTime)
string
string
boolean
string
string
array
stringThe functions region for this deploy as an airport code.
arrayFunctions in the deploy that explicitly specify their own region (airport code).
boolean
string (dateTime)
array
arrayAn array of code_shas for the edge-function bundles that need to be uploaded to complete the deploy.
array
string
string
string
boolean
string
string
string
string (dateTime)
string
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
number
string
string
string
string
string
string
string
string (dateTime)
string
string
boolean
string
string
array
stringThe functions region for this deploy as an airport code.
arrayFunctions in the deploy that explicitly specify their own region (airport code).
boolean
string (dateTime)
array
arrayAn array of code_shas for the edge-function bundles that need to be uploaded to complete the deploy.
array
string
string
string
boolean
string
string
string
string (dateTime)
string
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
number
string
string
string
string
string
string
string
string (dateTime)
string
string
boolean
string
string
array
stringThe functions region for this deploy as an airport code.
arrayFunctions in the deploy that explicitly specify their own region (airport code).
boolean
string (dateTime)
array
arrayAn array of code_shas for the edge-function bundles that need to be uploaded to complete the deploy.
array
string
string
string
boolean
string
string
string
string (dateTime)
string
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, deploy_id
site_idpage, per_page, deploy-previews, production, state, branch, latest-published
deploy_id
site_idtitle, deploy-previews, production, state, branch, latest-published
site_id, deploy_idcommit_ref
deploy_id, site_id
deploy_id
deploy_id
site_id, deploy_id
site_id
deploy_idUpdates the deploy validations report for a deploy.
deploy_id
deploy_id
deploy_id, path, file_bodysize
deploy_id, name, file_bodyruntime, invocation_mode, timeout, size, X-Nf-Retry-Count
deploy_id, code_sha, file_bodyX-Nf-Retry-Count
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
integer
string
string
boolean
string
boolean
integer (int32)
integer (int32)
boolean
string
integer
string
integer
string
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +name, +build_id, +review_id, +site_id, +user_id, +admin_url, +branch, +commit_ref, +commit_url, +context, +created_at, +deploy_ssl_url, +deploy_url, +draft, +error_message, +framework, +function_schedules, +functions_region, +functions_region_overrides, +locked, +published_at, +required, +required_edge_functions, +required_functions, +review_url, +screenshot_url, +skew_protection_token, +skipped, +ssl_url, +state, +title, +updated_at, +url +FROM netlify.deploys.deploys +WHERE site_id = '{{ site_id }}' -- required +AND deploy_id = '{{ deploy_id }}' -- required +; +``` + + + +OK + +```sql +SELECT +id, +name, +build_id, +review_id, +site_id, +user_id, +admin_url, +branch, +commit_ref, +commit_url, +context, +created_at, +deploy_ssl_url, +deploy_url, +draft, +error_message, +framework, +function_schedules, +functions_region, +functions_region_overrides, +locked, +published_at, +required, +required_edge_functions, +required_functions, +review_url, +screenshot_url, +skew_protection_token, +skipped, +ssl_url, +state, +title, +updated_at, +url +FROM netlify.deploys.deploys +WHERE site_id = '{{ site_id }}' -- required +AND page = '{{ page }}' +AND per_page = '{{ per_page }}' +AND deploy-previews = '{{ deploy-previews }}' +AND production = '{{ production }}' +AND state = '{{ state }}' +AND branch = '{{ branch }}' +AND latest-published = '{{ latest-published }}' +; +``` + + + +OK + +```sql +SELECT +id, +name, +build_id, +review_id, +site_id, +user_id, +admin_url, +branch, +commit_ref, +commit_url, +context, +created_at, +deploy_ssl_url, +deploy_url, +draft, +error_message, +framework, +function_schedules, +functions_region, +functions_region_overrides, +locked, +published_at, +required, +required_edge_functions, +required_functions, +review_url, +screenshot_url, +skew_protection_token, +skipped, +ssl_url, +state, +title, +updated_at, +url +FROM netlify.deploys.deploys +WHERE deploy_id = '{{ deploy_id }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +No description available. + +```sql +INSERT INTO netlify.deploys.deploys ( +files, +zip, +draft, +async, +functions, +edge_functions, +function_schedules, +functions_config, +branch, +framework, +framework_version, +environment, +site_id, +title, +deploy-previews, +production, +state, +branch, +latest-published +) +SELECT +'{{ files }}', +'{{ zip }}', +{{ draft }}, +{{ async }}, +'{{ functions }}', +'{{ edge_functions }}', +'{{ function_schedules }}', +'{{ functions_config }}', +'{{ branch }}', +'{{ framework }}', +'{{ framework_version }}', +'{{ environment }}', +'{{ site_id }}', +'{{ title }}', +'{{ deploy-previews }}', +'{{ production }}', +'{{ state }}', +'{{ branch }}', +'{{ latest-published }}' +RETURNING +id, +name, +build_id, +review_id, +site_id, +user_id, +admin_url, +branch, +commit_ref, +commit_url, +context, +created_at, +deploy_ssl_url, +deploy_url, +draft, +error_message, +framework, +function_schedules, +functions_region, +functions_region_overrides, +locked, +published_at, +required, +required_edge_functions, +required_functions, +review_url, +screenshot_url, +skew_protection_token, +skipped, +ssl_url, +state, +title, +updated_at, +url +; +``` + + + +{`# Description fields are for documentation purposes +- name: deploys + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the deploys resource. + - name: files + value: "{{ files }}" + description: | + A hash mapping file paths to SHA1 digests of the file contents. (opaque JSON object) + - name: zip + value: "{{ zip }}" + description: | + A zip file containing the site files to deploy. Alternative to 'files'. + To use this field, set Content-Type to 'application/json' and include the zip content here. + Alternatively, you can set Content-Type to 'application/zip' and send the zip as the raw request body (not as JSON). + - name: draft + value: {{ draft }} + - name: async + value: {{ async }} + - name: functions + value: "{{ functions }}" + description: | + (opaque JSON object) + - name: edge_functions + value: "{{ edge_functions }}" + description: | + A hash mapping edge-function bundle formats to the code_sha of each bundle. The + response's required_edge_functions lists which of these still need to be uploaded. + (opaque JSON object) + - name: function_schedules + value: + - name: "{{ name }}" + cron: "{{ cron }}" + - name: functions_config + value: "{{ functions_config }}" + - name: branch + value: "{{ branch }}" + - name: framework + value: "{{ framework }}" + - name: framework_version + value: "{{ framework_version }}" + - name: environment + description: | + A list of deploy-specific environment variable data. Data specified this way applies only + to this specific deploy and is merged into any existing environment variables set on the + account and site. + Deploy-specific environment variable data takes precedence over account and site + environment variable data: For example, a deploy-specific variable with the key \`NODE_ENV\` + will take priority over any existing site- and account-level environment variable data + with the key \`NODE_ENV\`. + Environment variable data may be provided at one of two times: + - When creating a new Deploy with deploy files (most common) + - When finalizing an existing Deploy with deploy files + Once set, environment variables for a specific deploy cannot be modified. Subsequent + attempts to modify environment variable data for a deploy will be ignored. + value: + - key: "{{ key }}" + value: "{{ value }}" + is_secret: {{ is_secret }} + scopes: "{{ scopes }}" + - name: title + value: "{{ title }}" + - name: deploy-previews + value: {{ deploy-previews }} + - name: production + value: {{ production }} + - name: state + value: "{{ state }}" + - name: branch + value: "{{ branch }}" + - name: latest-published + value: {{ latest-published }} +`} + + + + + +## `REPLACE` examples + + + + +No description available. + +```sql +REPLACE netlify.deploys.deploys +SET +files = '{{ files }}', +zip = '{{ zip }}', +draft = {{ draft }}, +async = {{ async }}, +functions = '{{ functions }}', +edge_functions = '{{ edge_functions }}', +function_schedules = '{{ function_schedules }}', +functions_config = '{{ functions_config }}', +branch = '{{ branch }}', +framework = '{{ framework }}', +framework_version = '{{ framework_version }}', +environment = '{{ environment }}' +WHERE +site_id = '{{ site_id }}' --required +AND deploy_id = '{{ deploy_id }}' --required +AND commit_ref = '{{ commit_ref}}' +RETURNING +id, +name, +build_id, +review_id, +site_id, +user_id, +admin_url, +branch, +commit_ref, +commit_url, +context, +created_at, +deploy_ssl_url, +deploy_url, +draft, +error_message, +framework, +function_schedules, +functions_region, +functions_region_overrides, +locked, +published_at, +required, +required_edge_functions, +required_functions, +review_url, +screenshot_url, +skew_protection_token, +skipped, +ssl_url, +state, +title, +updated_at, +url; +``` + + + + +## `DELETE` examples + + + + +No description available. + +```sql +DELETE FROM netlify.deploys.deploys +WHERE deploy_id = '{{ deploy_id }}' --required +AND site_id = '{{ site_id }}' --required +; +``` + + + +No description available. + +```sql +DELETE FROM netlify.deploys.deploys +WHERE deploy_id = '{{ deploy_id }}' --required +; +``` + + + + +## Lifecycle Methods + + + + +Cancelled + +```sql +EXEC netlify.deploys.deploys.cancel +@deploy_id='{{ deploy_id }}' --required +; +``` + + + +Created + +```sql +EXEC netlify.deploys.deploys.restore +@site_id='{{ site_id }}' --required, +@deploy_id='{{ deploy_id }}' --required +; +``` + + + +No content + +```sql +EXEC netlify.deploys.deploys.rollback +@site_id='{{ site_id }}' --required +; +``` + + + +Updates the deploy validations report for a deploy. + +```sql +EXEC netlify.deploys.deploys.update_validations_report +@deploy_id='{{ deploy_id }}' --required +@@json= +'{ +"secrets_scan": "{{ secrets_scan }}" +}' +; +``` + + + +OK + +```sql +EXEC netlify.deploys.deploys.lock +@deploy_id='{{ deploy_id }}' --required +; +``` + + + +OK + +```sql +EXEC netlify.deploys.deploys.unlock +@deploy_id='{{ deploy_id }}' --required +; +``` + + + +OK + +```sql +EXEC netlify.deploys.deploys.upload_file +@deploy_id='{{ deploy_id }}' --required, +@path='{{ path }}' --required, +@size='{{ size }}' +@@json= +'{ +"file_body": "{{ file_body }}" +}' +; +``` + + + +OK + +```sql +EXEC netlify.deploys.deploys.upload_function +@deploy_id='{{ deploy_id }}' --required, +@name='{{ name }}' --required, +@runtime='{{ runtime }}', +@invocation_mode='{{ invocation_mode }}', +@timeout='{{ timeout }}', +@size='{{ size }}', +@X-Nf-Retry-Count='{{ X-Nf-Retry-Count }}' +@@json= +'{ +"file_body": "{{ file_body }}" +}' +; +``` + + + +OK + +```sql +EXEC netlify.deploys.deploys.upload_edge_function +@deploy_id='{{ deploy_id }}' --required, +@code_sha='{{ code_sha }}' --required, +@X-Nf-Retry-Count='{{ X-Nf-Retry-Count }}' +@@json= +'{ +"file_body": "{{ file_body }}" +}' +; +``` + + diff --git a/website/docs/services/deploys/index.md b/website/docs/services/deploys/index.md new file mode 100644 index 0000000..b90d895 --- /dev/null +++ b/website/docs/services/deploys/index.md @@ -0,0 +1,33 @@ +--- +title: deploys +hide_title: false +hide_table_of_contents: false +keywords: + - deploys + - netlify + - stackql + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +deploys service documentation. + +:::info[Service Summary] + +total resources: __2__ + +::: + +## Resources +
+ + +
\ No newline at end of file diff --git a/website/docs/services/dev_servers/dev_server_hooks/index.md b/website/docs/services/dev_servers/dev_server_hooks/index.md new file mode 100644 index 0000000..fbe66ad --- /dev/null +++ b/website/docs/services/dev_servers/dev_server_hooks/index.md @@ -0,0 +1,372 @@ +--- +title: dev_server_hooks +hide_title: false +hide_table_of_contents: false +keywords: + - dev_server_hooks + - dev_servers + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a dev_server_hooks resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string (dateTime)
string
string (new_dev_server, content_refresh)
string
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string (dateTime)
string
string (new_dev_server, content_refresh)
string
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, id
site_id
site_id
site_id, id
site_id, id
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +site_id, +branch, +created_at, +title, +type, +url +FROM netlify.dev_servers.dev_server_hooks +WHERE site_id = '{{ site_id }}' -- required +AND id = '{{ id }}' -- required +; +``` + + + +OK + +```sql +SELECT +id, +site_id, +branch, +created_at, +title, +type, +url +FROM netlify.dev_servers.dev_server_hooks +WHERE site_id = '{{ site_id }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +No description available. + +```sql +INSERT INTO netlify.dev_servers.dev_server_hooks ( +title, +branch, +type, +site_id +) +SELECT +'{{ title }}', +'{{ branch }}', +'{{ type }}', +'{{ site_id }}' +RETURNING +id, +site_id, +branch, +created_at, +title, +type, +url +; +``` + + + +{`# Description fields are for documentation purposes +- name: dev_server_hooks + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the dev_server_hooks resource. + - name: title + value: "{{ title }}" + - name: branch + value: "{{ branch }}" + - name: type + value: "{{ type }}" + valid_values: ['new_dev_server', 'content_refresh'] +`} + + + + + +## `REPLACE` examples + + + + +No description available. + +```sql +REPLACE netlify.dev_servers.dev_server_hooks +SET +title = '{{ title }}', +branch = '{{ branch }}', +type = '{{ type }}' +WHERE +site_id = '{{ site_id }}' --required +AND id = '{{ id }}' --required; +``` + + + + +## `DELETE` examples + + + + +No description available. + +```sql +DELETE FROM netlify.dev_servers.dev_server_hooks +WHERE site_id = '{{ site_id }}' --required +AND id = '{{ id }}' --required +; +``` + + diff --git a/website/docs/services/dev_servers/dev_servers/index.md b/website/docs/services/dev_servers/dev_servers/index.md new file mode 100644 index 0000000..80b0b81 --- /dev/null +++ b/website/docs/services/dev_servers/dev_servers/index.md @@ -0,0 +1,466 @@ +--- +title: dev_servers +hide_title: false +hide_table_of_contents: false +keywords: + - dev_servers + - dev_servers + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a dev_servers resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string (dateTime)
string (dateTime)
string (dateTime)
string (dateTime)
string (dateTime)
string
string
string (dateTime)
string
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string (dateTime)
string (dateTime)
string (dateTime)
string (dateTime)
string (dateTime)
string
string
string (dateTime)
string
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, dev_server_id
site_idpage, per_page
site_idbranch
site_idbranch
site_id, dev_server_id
site_id, dev_server_id, state
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
integer (int32)
integer (int32)
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +site_id, +branch, +created_at, +done_at, +error_at, +live_at, +starting_at, +state, +title, +updated_at, +url +FROM netlify.dev_servers.dev_servers +WHERE site_id = '{{ site_id }}' -- required +AND dev_server_id = '{{ dev_server_id }}' -- required +; +``` + + + +OK + +```sql +SELECT +id, +site_id, +branch, +created_at, +done_at, +error_at, +live_at, +starting_at, +state, +title, +updated_at, +url +FROM netlify.dev_servers.dev_servers +WHERE site_id = '{{ site_id }}' -- required +AND page = '{{ page }}' +AND per_page = '{{ per_page }}' +; +``` + + + + +## `INSERT` examples + + + + +No description available. + +```sql +INSERT INTO netlify.dev_servers.dev_servers ( +site_id, +branch +) +SELECT +'{{ site_id }}', +'{{ branch }}' +RETURNING +id, +site_id, +branch, +created_at, +done_at, +error_at, +live_at, +starting_at, +state, +title, +updated_at, +url +; +``` + + + +{`# Description fields are for documentation purposes +- name: dev_servers + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the dev_servers resource. + - name: branch + value: "{{ branch }}" +`} + + + + + +## `DELETE` examples + + + + +No description available. + +```sql +DELETE FROM netlify.dev_servers.dev_servers +WHERE site_id = '{{ site_id }}' --required +AND branch = '{{ branch }}' +; +``` + + + + +## Lifecycle Methods + + + + +OK + +```sql +EXEC netlify.dev_servers.dev_servers.mark_activity +@site_id='{{ site_id }}' --required, +@dev_server_id='{{ dev_server_id }}' --required +; +``` + + + +OK + +```sql +EXEC netlify.dev_servers.dev_servers.update_state +@site_id='{{ site_id }}' --required, +@dev_server_id='{{ dev_server_id }}' --required +@@json= +'{ +"state": "{{ state }}", +"task_id": "{{ task_id }}", +"error": "{{ error }}" +}' +; +``` + + diff --git a/website/docs/services/dev_servers/index.md b/website/docs/services/dev_servers/index.md new file mode 100644 index 0000000..fae8884 --- /dev/null +++ b/website/docs/services/dev_servers/index.md @@ -0,0 +1,33 @@ +--- +title: dev_servers +hide_title: false +hide_table_of_contents: false +keywords: + - dev_servers + - netlify + - stackql + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +dev_servers service documentation. + +:::info[Service Summary] + +total resources: __2__ + +::: + +## Resources + \ No newline at end of file diff --git a/website/docs/services/dns_zone/dns_zones_dns_records/index.md b/website/docs/services/dns/dns_records/index.md similarity index 74% rename from website/docs/services/dns_zone/dns_zones_dns_records/index.md rename to website/docs/services/dns/dns_records/index.md index f6f9ab2..dd263c7 100644 --- a/website/docs/services/dns_zone/dns_zones_dns_records/index.md +++ b/website/docs/services/dns/dns_records/index.md @@ -1,10 +1,10 @@ --- -title: dns_zones_dns_records +title: dns_records hide_title: false hide_table_of_contents: false keywords: - - dns_zones_dns_records - - dns_zone + - dns_records + - dns - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a dns_zones_dns_records resource. +Creates, updates, deletes, gets or lists a dns_records resource. ## Overview - + - +
Namedns_zones_dns_records
Name
TypeResource
Id
Id
## Fields @@ -32,13 +33,13 @@ Creates, updates, deletes, gets or lists a dns_zones_dns_records re The following fields are returned by `SELECT` queries: - + get a single DNS record @@ -109,7 +110,7 @@ get a single DNS record - + get all DNS records for a single DNS zone @@ -198,28 +199,28 @@ The following methods are available for this resource: - + zone_id, dns_record_id - + zone_id - + zone_id - + zone_id, dns_record_id @@ -257,13 +258,13 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + get a single DNS record @@ -280,13 +281,13 @@ tag, ttl, type, value -FROM netlify.dns_zone.dns_zones_dns_records +FROM netlify.dns.dns_records WHERE zone_id = '{{ zone_id }}' -- required AND dns_record_id = '{{ dns_record_id }}' -- required ; ``` - + get all DNS records for a single DNS zone @@ -303,7 +304,7 @@ tag, ttl, type, value -FROM netlify.dns_zone.dns_zones_dns_records +FROM netlify.dns.dns_records WHERE zone_id = '{{ zone_id }}' -- required ; ``` @@ -314,39 +315,39 @@ WHERE zone_id = '{{ zone_id }}' -- required ## `INSERT` examples - + No description available. ```sql -INSERT INTO netlify.dns_zone.dns_zones_dns_records ( -data__flag, -data__hostname, -data__port, -data__priority, -data__tag, -data__ttl, -data__type, -data__value, -data__weight, +INSERT INTO netlify.dns.dns_records ( +type, +hostname, +value, +ttl, +priority, +weight, +port, +flag, +tag, zone_id ) SELECT -{{ flag }}, -'{{ hostname }}', -{{ port }}, -{{ priority }}, -'{{ tag }}', -{{ ttl }}, '{{ type }}', +'{{ hostname }}', '{{ value }}', +{{ ttl }}, +{{ priority }}, {{ weight }}, +{{ port }}, +{{ flag }}, +'{{ tag }}', '{{ zone_id }}' RETURNING id, @@ -365,32 +366,32 @@ value -```yaml -# Description fields are for documentation purposes -- name: dns_zones_dns_records +{`# Description fields are for documentation purposes +- name: dns_records props: - name: zone_id - value: string - description: Required parameter for the dns_zones_dns_records resource. - - name: flag - value: integer - - name: hostname - value: string - - name: port - value: integer - - name: priority - value: integer - - name: tag - value: string - - name: ttl - value: integer + value: "{{ zone_id }}" + description: Required parameter for the dns_records resource. - name: type - value: string + value: "{{ type }}" + - name: hostname + value: "{{ hostname }}" - name: value - value: string + value: "{{ value }}" + - name: ttl + value: {{ ttl }} + - name: priority + value: {{ priority }} - name: weight - value: integer -``` + value: {{ weight }} + - name: port + value: {{ port }} + - name: flag + value: {{ flag }} + - name: tag + value: "{{ tag }}" +`} + @@ -398,17 +399,17 @@ value ## `DELETE` examples - + No description available. ```sql -DELETE FROM netlify.dns_zone.dns_zones_dns_records +DELETE FROM netlify.dns.dns_records WHERE zone_id = '{{ zone_id }}' --required AND dns_record_id = '{{ dns_record_id }}' --required ; diff --git a/website/docs/services/dns_zone/dns_zones/index.md b/website/docs/services/dns/dns_zones/index.md similarity index 72% rename from website/docs/services/dns_zone/dns_zones/index.md rename to website/docs/services/dns/dns_zones/index.md index 2ac40c7..ab1675c 100644 --- a/website/docs/services/dns_zone/dns_zones/index.md +++ b/website/docs/services/dns/dns_zones/index.md @@ -4,7 +4,7 @@ hide_title: false hide_table_of_contents: false keywords: - dns_zones - - dns_zone + - dns - netlify - infrastructure-as-code - configuration-as-data @@ -15,6 +15,7 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -22,9 +23,9 @@ Creates, updates, deletes, gets or lists a dns_zones resource. ## Overview - + - +
Namedns_zones
Name
TypeResource
Id
Id
## Fields @@ -32,13 +33,13 @@ Creates, updates, deletes, gets or lists a dns_zones resource. The following fields are returned by `SELECT` queries: - + get a single DNS zone @@ -134,7 +135,7 @@ get a single DNS zone - + get all DNS zones the user has access to @@ -248,33 +249,40 @@ The following methods are available for this resource: - + zone_id - + account_slug - + - + zone_id + + + + zone_id, account_id, transfer_account_id, transfer_user_id + + + @@ -291,6 +299,21 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# + + + string + the account of the dns zone + + + + string + the account you want to transfer the dns zone to + + + + string + the user you want to transfer the dns zone to + string @@ -307,13 +330,13 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + get a single DNS zone @@ -335,12 +358,12 @@ ipv6_enabled, records, supported_record_types, updated_at -FROM netlify.dns_zone.dns_zones +FROM netlify.dns.dns_zones WHERE zone_id = '{{ zone_id }}' -- required ; ``` - + get all DNS zones the user has access to @@ -362,7 +385,7 @@ ipv6_enabled, records, supported_record_types, updated_at -FROM netlify.dns_zone.dns_zones +FROM netlify.dns.dns_zones WHERE account_slug = '{{ account_slug }}' ; ``` @@ -373,26 +396,26 @@ WHERE account_slug = '{{ account_slug }}' ## `INSERT` examples - + No description available. ```sql -INSERT INTO netlify.dns_zone.dns_zones ( -data__account_slug, -data__name, -data__site_id +INSERT INTO netlify.dns.dns_zones ( +account_slug, +site_id, +name ) SELECT '{{ account_slug }}', -'{{ name }}', -'{{ site_id }}' +'{{ site_id }}', +'{{ name }}' RETURNING id, name, @@ -415,17 +438,17 @@ updated_at -```yaml -# Description fields are for documentation purposes +{`# Description fields are for documentation purposes - name: dns_zones props: - name: account_slug - value: string - - name: name - value: string + value: "{{ account_slug }}" - name: site_id - value: string -``` + value: "{{ site_id }}" + - name: name + value: "{{ name }}" +`} + @@ -433,19 +456,43 @@ updated_at ## `DELETE` examples - + No description available. ```sql -DELETE FROM netlify.dns_zone.dns_zones +DELETE FROM netlify.dns.dns_zones WHERE zone_id = '{{ zone_id }}' --required ; ``` + + +## Lifecycle Methods + + + + +transfer a DNS zone to another account + +```sql +EXEC netlify.dns.dns_zones.transfer +@zone_id='{{ zone_id }}' --required, +@account_id='{{ account_id }}' --required, +@transfer_account_id='{{ transfer_account_id }}' --required, +@transfer_user_id='{{ transfer_user_id }}' --required +; +``` + + diff --git a/website/docs/services/hook/index.md b/website/docs/services/dns/index.md similarity index 76% rename from website/docs/services/hook/index.md rename to website/docs/services/dns/index.md index 8d42431..68a3219 100644 --- a/website/docs/services/hook/index.md +++ b/website/docs/services/dns/index.md @@ -1,9 +1,9 @@ --- -title: hook +title: dns hide_title: false hide_table_of_contents: false keywords: - - hook + - dns - netlify - stackql - infrastructure-as-code @@ -14,7 +14,7 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -hook service documentation. +dns service documentation. :::info[Service Summary] @@ -25,9 +25,9 @@ total resources: __2__ ## Resources \ No newline at end of file diff --git a/website/docs/services/dns_zone/dns_zones_transfer/index.md b/website/docs/services/dns_zone/dns_zones_transfer/index.md deleted file mode 100644 index 0663bf4..0000000 --- a/website/docs/services/dns_zone/dns_zones_transfer/index.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: dns_zones_transfer -hide_title: false -hide_table_of_contents: false -keywords: - - dns_zones_transfer - - dns_zone - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a dns_zones_transfer resource. - -## Overview - - - - -
Namedns_zones_transfer
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
zone_id, account_id, transfer_account_id, transfer_user_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
stringthe account of the dns zone
stringthe account you want to transfer the dns zone to
stringthe user you want to transfer the dns zone to
string
- -## Lifecycle Methods - - - - -transfer a DNS zone to another account - -```sql -EXEC netlify.dns_zone.dns_zones_transfer.transferDnsZone -@zone_id='{{ zone_id }}' --required, -@account_id='{{ account_id }}' --required, -@transfer_account_id='{{ transfer_account_id }}' --required, -@transfer_user_id='{{ transfer_user_id }}' --required -; -``` - - diff --git a/website/docs/services/dns_zone/index.md b/website/docs/services/dns_zone/index.md deleted file mode 100644 index 51d691e..0000000 --- a/website/docs/services/dns_zone/index.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: dns_zone -hide_title: false -hide_table_of_contents: false -keywords: - - dns_zone - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -dns_zone service documentation. - -:::info[Service Summary] - -total resources: __4__ - -::: - -## Resources - \ No newline at end of file diff --git a/website/docs/services/file/deploys_files/index.md b/website/docs/services/file/deploys_files/index.md deleted file mode 100644 index fe22091..0000000 --- a/website/docs/services/file/deploys_files/index.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: deploys_files -hide_title: false -hide_table_of_contents: false -keywords: - - deploys_files - - file - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a deploys_files resource. - -## Overview - - - - -
Namedeploys_files
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
deploy_id, pathsize
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
integer
- -## Lifecycle Methods - - - - -OK - -```sql -EXEC netlify.file.deploys_files.uploadDeployFile -@deploy_id='{{ deploy_id }}' --required, -@path='{{ path }}' --required, -@size='{{ size }}' -; -``` - - diff --git a/website/docs/services/form/sites_forms/index.md b/website/docs/services/forms/forms/index.md similarity index 78% rename from website/docs/services/form/sites_forms/index.md rename to website/docs/services/forms/forms/index.md index fc41387..b0e2673 100644 --- a/website/docs/services/form/sites_forms/index.md +++ b/website/docs/services/forms/forms/index.md @@ -1,10 +1,10 @@ --- -title: sites_forms +title: forms hide_title: false hide_table_of_contents: false keywords: - - sites_forms - - form + - forms + - forms - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a sites_forms resource. +Creates, updates, deletes, gets or lists a forms resource. ## Overview - + - +
Namesites_forms
Name
TypeResource
Id
Id
## Fields @@ -32,12 +33,12 @@ Creates, updates, deletes, gets or lists a sites_forms resource. The following fields are returned by `SELECT` queries: - + @@ -104,14 +105,14 @@ The following methods are available for this resource: - + - + @@ -149,12 +150,12 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -167,7 +168,7 @@ created_at, fields, paths, submission_count -FROM netlify.form.sites_forms +FROM netlify.forms.forms WHERE site_id = '{{ site_id }}' -- required ; ``` @@ -178,17 +179,17 @@ WHERE site_id = '{{ site_id }}' -- required ## `DELETE` examples - + No description available. ```sql -DELETE FROM netlify.form.sites_forms +DELETE FROM netlify.forms.forms WHERE site_id = '{{ site_id }}' --required AND form_id = '{{ form_id }}' --required ; diff --git a/website/docs/services/site/index.md b/website/docs/services/forms/index.md similarity index 75% rename from website/docs/services/site/index.md rename to website/docs/services/forms/index.md index 64751cf..c3a061e 100644 --- a/website/docs/services/site/index.md +++ b/website/docs/services/forms/index.md @@ -1,9 +1,9 @@ --- -title: site +title: forms hide_title: false hide_table_of_contents: false keywords: - - site + - forms - netlify - stackql - infrastructure-as-code @@ -14,7 +14,7 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -site service documentation. +forms service documentation. :::info[Service Summary] @@ -25,9 +25,9 @@ total resources: __2__ ## Resources \ No newline at end of file diff --git a/website/docs/services/forms/submissions/index.md b/website/docs/services/forms/submissions/index.md new file mode 100644 index 0000000..6de8c52 --- /dev/null +++ b/website/docs/services/forms/submissions/index.md @@ -0,0 +1,466 @@ +--- +title: submissions +hide_title: false +hide_table_of_contents: false +keywords: + - submissions + - forms + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a submissions resource. + +## Overview +
site_id
site_id, form_id
+ + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
string
string (dateTime)
string(opaque JSON object)
string
integer (int32)
string
string
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
string
string (dateTime)
string(opaque JSON object)
string
integer (int32)
string
string
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string
string
string
string (dateTime)
string(opaque JSON object)
string
integer (int32)
string
string
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_idpage, per_page
form_idpage, per_page
submission_idquery, page, per_page
submission_id
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
integer (int32)
integer (int32)
string
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +name, +first_name, +last_name, +body, +company, +created_at, +data, +email, +number, +site_url, +summary +FROM netlify.forms.submissions +WHERE site_id = '{{ site_id }}' -- required +AND page = '{{ page }}' +AND per_page = '{{ per_page }}' +; +``` + + + +OK + +```sql +SELECT +id, +name, +first_name, +last_name, +body, +company, +created_at, +data, +email, +number, +site_url, +summary +FROM netlify.forms.submissions +WHERE form_id = '{{ form_id }}' -- required +AND page = '{{ page }}' +AND per_page = '{{ per_page }}' +; +``` + + + +OK + +```sql +SELECT +id, +name, +first_name, +last_name, +body, +company, +created_at, +data, +email, +number, +site_url, +summary +FROM netlify.forms.submissions +WHERE submission_id = '{{ submission_id }}' -- required +AND query = '{{ query }}' +AND page = '{{ page }}' +AND per_page = '{{ per_page }}' +; +``` + + + + +## `DELETE` examples + + + + +No description available. + +```sql +DELETE FROM netlify.forms.submissions +WHERE submission_id = '{{ submission_id }}' --required +; +``` + + diff --git a/website/docs/services/function/deploys_functions/index.md b/website/docs/services/function/deploys_functions/index.md deleted file mode 100644 index 5f6859d..0000000 --- a/website/docs/services/function/deploys_functions/index.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: deploys_functions -hide_title: false -hide_table_of_contents: false -keywords: - - deploys_functions - - function - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a deploys_functions resource. - -## Overview - - - - -
Namedeploys_functions
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
deploy_id, nameruntime, size
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
integer
- -## Lifecycle Methods - - - - -OK - -```sql -EXEC netlify.function.deploys_functions.uploadDeployFunction -@deploy_id='{{ deploy_id }}' --required, -@name='{{ name }}' --required, -@runtime='{{ runtime }}', -@size='{{ size }}' -; -``` - - diff --git a/website/docs/services/function/index.md b/website/docs/services/function/index.md deleted file mode 100644 index 9738862..0000000 --- a/website/docs/services/function/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: function -hide_title: false -hide_table_of_contents: false -keywords: - - function - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -function service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources -
- -
- -
-
\ No newline at end of file diff --git a/website/docs/services/functions/functions/index.md b/website/docs/services/functions/functions/index.md new file mode 100644 index 0000000..bc704a7 --- /dev/null +++ b/website/docs/services/functions/functions/index.md @@ -0,0 +1,164 @@ +--- +title: functions +hide_title: false +hide_table_of_contents: false +keywords: + - functions + - functions + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a functions resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string (dateTime)
array
string
string
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_idfilter
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +branch, +created_at, +functions, +log_type, +provider +FROM netlify.functions.functions +WHERE site_id = '{{ site_id }}' -- required +AND filter = '{{ filter }}' +; +``` + + diff --git a/website/docs/services/metadata/index.md b/website/docs/services/functions/index.md similarity index 80% rename from website/docs/services/metadata/index.md rename to website/docs/services/functions/index.md index 16de1cf..f7b564c 100644 --- a/website/docs/services/metadata/index.md +++ b/website/docs/services/functions/index.md @@ -1,9 +1,9 @@ --- -title: metadata +title: functions hide_title: false hide_table_of_contents: false keywords: - - metadata + - functions - netlify - stackql - infrastructure-as-code @@ -14,7 +14,7 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -metadata service documentation. +functions service documentation. :::info[Service Summary] @@ -25,7 +25,7 @@ total resources: __1__ ## Resources
diff --git a/website/docs/services/hook/hooks_enable/index.md b/website/docs/services/hook/hooks_enable/index.md deleted file mode 100644 index fc97170..0000000 --- a/website/docs/services/hook/hooks_enable/index.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: hooks_enable -hide_title: false -hide_table_of_contents: false -keywords: - - hooks_enable - - hook - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a hooks_enable resource. - -## Overview - - - - -
Namehooks_enable
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
hook_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## Lifecycle Methods - - - - -OK - -```sql -EXEC netlify.hook.hooks_enable.enableHook -@hook_id='{{ hook_id }}' --required -; -``` - - diff --git a/website/docs/services/hook_type/index.md b/website/docs/services/hook_type/index.md deleted file mode 100644 index 4354e7d..0000000 --- a/website/docs/services/hook_type/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: hook_type -hide_title: false -hide_table_of_contents: false -keywords: - - hook_type - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -hook_type service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources -
- -
- -
-
\ No newline at end of file diff --git a/website/docs/services/hook_type/hooks_types/index.md b/website/docs/services/hooks/hook_types/index.md similarity index 74% rename from website/docs/services/hook_type/hooks_types/index.md rename to website/docs/services/hooks/hook_types/index.md index 32d7b5e..5d2d3dc 100644 --- a/website/docs/services/hook_type/hooks_types/index.md +++ b/website/docs/services/hooks/hook_types/index.md @@ -1,10 +1,10 @@ --- -title: hooks_types +title: hook_types hide_title: false hide_table_of_contents: false keywords: - - hooks_types - - hook_type + - hook_types + - hooks - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a hooks_types resource. +Creates, updates, deletes, gets or lists a hook_types resource. ## Overview - + - +
Namehooks_types
Name
TypeResource
Id
Id
## Fields @@ -32,12 +33,12 @@ Creates, updates, deletes, gets or lists a hooks_types resource. The following fields are returned by `SELECT` queries: - + @@ -84,7 +85,7 @@ The following methods are available for this resource: - + @@ -112,12 +113,12 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -126,7 +127,7 @@ SELECT name, events, fields -FROM netlify.hook_type.hooks_types +FROM netlify.hooks.hook_types ; ``` diff --git a/website/docs/services/hook/hooks/index.md b/website/docs/services/hooks/hooks/index.md similarity index 67% rename from website/docs/services/hook/hooks/index.md rename to website/docs/services/hooks/hooks/index.md index 5aac4dd..24ae713 100644 --- a/website/docs/services/hook/hooks/index.md +++ b/website/docs/services/hooks/hooks/index.md @@ -4,7 +4,7 @@ hide_title: false hide_table_of_contents: false keywords: - hooks - - hook + - hooks - netlify - infrastructure-as-code - configuration-as-data @@ -15,6 +15,7 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -22,9 +23,9 @@ Creates, updates, deletes, gets or lists a hooks resource. ## Overview
- + - +
Namehooks
Name
TypeResource
Id
Id
## Fields @@ -32,13 +33,13 @@ Creates, updates, deletes, gets or lists a hooks resource. The following fields are returned by `SELECT` queries: - + @@ -66,8 +67,8 @@ The following fields are returned by `SELECT` queries: - - + + @@ -92,7 +93,7 @@ The following fields are returned by `SELECT` queries:
objectstring(opaque JSON object)
- + @@ -120,8 +121,8 @@ The following fields are returned by `SELECT` queries: - - + + @@ -164,35 +165,42 @@ The following methods are available for this resource: - + - + - + - + + + + + + + + - + @@ -230,13 +238,13 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -250,12 +258,12 @@ disabled, event, type, updated_at -FROM netlify.hook.hooks +FROM netlify.hooks.hooks WHERE hook_id = '{{ hook_id }}' -- required ; ``` - + OK @@ -269,7 +277,7 @@ disabled, event, type, updated_at -FROM netlify.hook.hooks +FROM netlify.hooks.hooks WHERE site_id = '{{ site_id }}' -- required ; ``` @@ -280,37 +288,37 @@ WHERE site_id = '{{ site_id }}' -- required ## `INSERT` examples - + No description available. ```sql -INSERT INTO netlify.hook.hooks ( -data__created_at, -data__data, -data__disabled, -data__event, -data__id, -data__site_id, -data__type, -data__updated_at, +INSERT INTO netlify.hooks.hooks ( +id, +site_id, +type, +event, +data, +created_at, +updated_at, +disabled, site_id ) SELECT -'{{ created_at }}', -'{{ data }}', -{{ disabled }}, -'{{ event }}', '{{ id }}', '{{ site_id }}', '{{ type }}', +'{{ event }}', +'{{ data }}', +'{{ created_at }}', '{{ updated_at }}', +{{ disabled }}, '{{ site_id }}' RETURNING id, @@ -326,29 +334,70 @@ updated_at -```yaml -# Description fields are for documentation purposes +{`# Description fields are for documentation purposes - name: hooks props: - name: site_id - value: string + value: "{{ site_id }}" description: Required parameter for the hooks resource. - - name: created_at - value: string - - name: data - value: object - - name: disabled - value: boolean - - name: event - value: string - name: id - value: string + value: "{{ id }}" - name: site_id - value: string + value: "{{ site_id }}" - name: type - value: string + value: "{{ type }}" + - name: event + value: "{{ event }}" + - name: data + value: "{{ data }}" + description: | + (opaque JSON object) + - name: created_at + value: "{{ created_at }}" - name: updated_at - value: string + value: "{{ updated_at }}" + - name: disabled + value: {{ disabled }} +`} + + + + + +## `REPLACE` examples + + + + +No description available. + +```sql +REPLACE netlify.hooks.hooks +SET +id = '{{ id }}', +site_id = '{{ site_id }}', +type = '{{ type }}', +event = '{{ event }}', +data = '{{ data }}', +created_at = '{{ created_at }}', +updated_at = '{{ updated_at }}', +disabled = {{ disabled }} +WHERE +hook_id = '{{ hook_id }}' --required +RETURNING +id, +site_id, +created_at, +data, +disabled, +event, +type, +updated_at; ``` @@ -357,17 +406,17 @@ updated_at ## `DELETE` examples - + No description available. ```sql -DELETE FROM netlify.hook.hooks +DELETE FROM netlify.hooks.hooks WHERE hook_id = '{{ hook_id }}' --required ; ``` @@ -378,29 +427,18 @@ WHERE hook_id = '{{ hook_id }}' --required ## Lifecycle Methods - + OK ```sql -EXEC netlify.hook.hooks.updateHook -@hook_id='{{ hook_id }}' --required -@@json= -'{ -"created_at": "{{ created_at }}", -"data": "{{ data }}", -"disabled": {{ disabled }}, -"event": "{{ event }}", -"id": "{{ id }}", -"site_id": "{{ site_id }}", -"type": "{{ type }}", -"updated_at": "{{ updated_at }}" -}' +EXEC netlify.hooks.hooks.enable +@hook_id='{{ hook_id }}' --required ; ``` diff --git a/website/docs/services/file/index.md b/website/docs/services/hooks/index.md similarity index 74% rename from website/docs/services/file/index.md rename to website/docs/services/hooks/index.md index ba84734..4eb5847 100644 --- a/website/docs/services/file/index.md +++ b/website/docs/services/hooks/index.md @@ -1,9 +1,9 @@ --- -title: file +title: hooks hide_title: false hide_table_of_contents: false keywords: - - file + - hooks - netlify - stackql - infrastructure-as-code @@ -14,7 +14,7 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -file service documentation. +hooks service documentation. :::info[Service Summary] @@ -25,9 +25,9 @@ total resources: __2__ ## Resources \ No newline at end of file diff --git a/website/docs/services/member/index.md b/website/docs/services/member/index.md deleted file mode 100644 index 1b1a1f7..0000000 --- a/website/docs/services/member/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: member -hide_title: false -hide_table_of_contents: false -keywords: - - member - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -member service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources -
- -
- -
-
\ No newline at end of file diff --git a/website/docs/services/member/members/index.md b/website/docs/services/member/members/index.md deleted file mode 100644 index b6780d9..0000000 --- a/website/docs/services/member/members/index.md +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: members -hide_title: false -hide_table_of_contents: false -keywords: - - members - - member - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a members resource. - -## Overview -
objectstring(opaque JSON object)
hook_id
site_id
site_id
hook_id
hook_id
hook_id
- - - -
Namemembers
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
string
string
-
-
- -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
account_slug
account_slug
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## `SELECT` examples - - - - -OK - -```sql -SELECT -id, -full_name, -avatar, -email, -role -FROM netlify.member.members -WHERE account_slug = '{{ account_slug }}' -- required -; -``` - - - - -## `INSERT` examples - - - - -No description available. - -```sql -INSERT INTO netlify.member.members ( -account_slug -) -SELECT -'{{ account_slug }}' -RETURNING -id, -full_name, -avatar, -email, -role -; -``` - - - -```yaml -# Description fields are for documentation purposes -- name: members - props: - - name: account_slug - value: string - description: Required parameter for the members resource. -``` - - diff --git a/website/docs/services/metadata/sites/index.md b/website/docs/services/metadata/sites/index.md deleted file mode 100644 index 6c91c5c..0000000 --- a/website/docs/services/metadata/sites/index.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: sites -hide_title: false -hide_table_of_contents: false -keywords: - - sites - - metadata - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a sites resource. - -## Overview - - - - -
Namesites
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
site_id
site_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## Lifecycle Methods - - - - -OK - -```sql -EXEC netlify.metadata.sites.getSiteMetadata -@site_id='{{ site_id }}' --required -; -``` - - - -No content - -```sql -EXEC netlify.metadata.sites.updateSiteMetadata -@site_id='{{ site_id }}' --required -; -``` - - diff --git a/website/docs/services/form/index.md b/website/docs/services/oauth/index.md similarity index 82% rename from website/docs/services/form/index.md rename to website/docs/services/oauth/index.md index 2b40c44..89fb478 100644 --- a/website/docs/services/form/index.md +++ b/website/docs/services/oauth/index.md @@ -1,9 +1,9 @@ --- -title: form +title: oauth hide_title: false hide_table_of_contents: false keywords: - - form + - oauth - netlify - stackql - infrastructure-as-code @@ -14,7 +14,7 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -form service documentation. +oauth service documentation. :::info[Service Summary] @@ -25,7 +25,7 @@ total resources: __1__ ## Resources
diff --git a/website/docs/services/ticket/oauth_tickets/index.md b/website/docs/services/oauth/tickets/index.md similarity index 50% rename from website/docs/services/ticket/oauth_tickets/index.md rename to website/docs/services/oauth/tickets/index.md index 3b46383..025fd83 100644 --- a/website/docs/services/ticket/oauth_tickets/index.md +++ b/website/docs/services/oauth/tickets/index.md @@ -1,10 +1,10 @@ --- -title: oauth_tickets +title: tickets hide_title: false hide_table_of_contents: false keywords: - - oauth_tickets - - ticket + - tickets + - oauth - netlify - infrastructure-as-code - configuration-as-data @@ -15,24 +15,64 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists an oauth_tickets resource. +Creates, updates, deletes, gets or lists a tickets resource. ## Overview - + - +
Nameoauth_tickets
Name
TypeResource
Id
Id
## Fields The following fields are returned by `SELECT` queries: -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
boolean
string (dateTime)
+
+
## Methods @@ -50,14 +90,21 @@ The following methods are available for this resource: - + + + ticket_id + + + + + client_id - + ticket_id @@ -92,24 +139,52 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# +## `SELECT` examples + + + + +ok + +```sql +SELECT +id, +client_id, +authorized, +created_at +FROM netlify.oauth.tickets +WHERE ticket_id = '{{ ticket_id }}' -- required +; +``` + + + + ## `INSERT` examples - + No description available. ```sql -INSERT INTO netlify.ticket.oauth_tickets ( +INSERT INTO netlify.oauth.tickets ( +message, client_id ) SELECT +'{{ message }}', '{{ client_id }}' RETURNING id, @@ -121,14 +196,16 @@ created_at -```yaml -# Description fields are for documentation purposes -- name: oauth_tickets +{`# Description fields are for documentation purposes +- name: tickets props: - name: client_id - value: string - description: Required parameter for the oauth_tickets resource. -``` + value: "{{ client_id }}" + description: Required parameter for the tickets resource. + - name: message + value: "{{ message }}" +`} + @@ -136,17 +213,17 @@ created_at ## Lifecycle Methods - + ok ```sql -EXEC netlify.ticket.oauth_tickets.showTicket +EXEC netlify.oauth.tickets.exchange @ticket_id='{{ ticket_id }}' --required ; ``` diff --git a/website/docs/services/payment_method/index.md b/website/docs/services/payment_method/index.md deleted file mode 100644 index 4cfe8f4..0000000 --- a/website/docs/services/payment_method/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: payment_method -hide_title: false -hide_table_of_contents: false -keywords: - - payment_method - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -payment_method service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources - \ No newline at end of file diff --git a/website/docs/services/service/services_manifest/index.md b/website/docs/services/service/services_manifest/index.md deleted file mode 100644 index d154fe9..0000000 --- a/website/docs/services/service/services_manifest/index.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: services_manifest -hide_title: false -hide_table_of_contents: false -keywords: - - services_manifest - - service - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a services_manifest resource. - -## Overview - - - - -
Nameservices_manifest
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
addonName
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## Lifecycle Methods - - - - -retrieving from provider - -```sql -EXEC netlify.service.services_manifest.showServiceManifest -@addonName='{{ addonName }}' --required -; -``` - - diff --git a/website/docs/services/service_instance/index.md b/website/docs/services/service_instance/index.md deleted file mode 100644 index 5312658..0000000 --- a/website/docs/services/service_instance/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: service_instance -hide_title: false -hide_table_of_contents: false -keywords: - - service_instance - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -service_instance service documentation. - -:::info[Service Summary] - -total resources: __2__ - -::: - -## Resources - \ No newline at end of file diff --git a/website/docs/services/service_instance/sites_service_instances/index.md b/website/docs/services/service_instance/sites_service_instances/index.md deleted file mode 100644 index b63148c..0000000 --- a/website/docs/services/service_instance/sites_service_instances/index.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: sites_service_instances -hide_title: false -hide_table_of_contents: false -keywords: - - sites_service_instances - - service_instance - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a sites_service_instances resource. - -## Overview - - - - -
Namesites_service_instances
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
object
string (dateTime)
object
object
string
string
array
string (dateTime)
string
-
-
- -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
site_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## `SELECT` examples - - - - -OK - -```sql -SELECT -id, -service_name, -auth_url, -config, -created_at, -env, -external_attributes, -service_path, -service_slug, -snippets, -updated_at, -url -FROM netlify.service_instance.sites_service_instances -WHERE site_id = '{{ site_id }}' -- required -; -``` - - diff --git a/website/docs/services/service_instance/sites_services_instances/index.md b/website/docs/services/service_instance/sites_services_instances/index.md deleted file mode 100644 index 4991ed3..0000000 --- a/website/docs/services/service_instance/sites_services_instances/index.md +++ /dev/null @@ -1,224 +0,0 @@ ---- -title: sites_services_instances -hide_title: false -hide_table_of_contents: false -keywords: - - sites_services_instances - - service_instance - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a sites_services_instances resource. - -## Overview - - - - -
Namesites_services_instances
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, addon
site_id, addon, instance_id
site_id, addon, instance_id
site_id, addon, instance_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
- -## `INSERT` examples - - - - -No description available. - -```sql -INSERT INTO netlify.service_instance.sites_services_instances ( -site_id, -addon -) -SELECT -'{{ site_id }}', -'{{ addon }}' -RETURNING -id, -service_name, -auth_url, -config, -created_at, -env, -external_attributes, -service_path, -service_slug, -snippets, -updated_at, -url -; -``` - - - -```yaml -# Description fields are for documentation purposes -- name: sites_services_instances - props: - - name: site_id - value: string - description: Required parameter for the sites_services_instances resource. - - name: addon - value: string - description: Required parameter for the sites_services_instances resource. -``` - - - - -## `DELETE` examples - - - - -No description available. - -```sql -DELETE FROM netlify.service_instance.sites_services_instances -WHERE site_id = '{{ site_id }}' --required -AND addon = '{{ addon }}' --required -AND instance_id = '{{ instance_id }}' --required -; -``` - - - - -## Lifecycle Methods - - - - -OK - -```sql -EXEC netlify.service_instance.sites_services_instances.showServiceInstance -@site_id='{{ site_id }}' --required, -@addon='{{ addon }}' --required, -@instance_id='{{ instance_id }}' --required -; -``` - - - -No Content - -```sql -EXEC netlify.service_instance.sites_services_instances.updateServiceInstance -@site_id='{{ site_id }}' --required, -@addon='{{ addon }}' --required, -@instance_id='{{ instance_id }}' --required -; -``` - - diff --git a/website/docs/services/submission/index.md b/website/docs/services/services/index.md similarity index 63% rename from website/docs/services/submission/index.md rename to website/docs/services/services/index.md index 7bff153..753ba0b 100644 --- a/website/docs/services/submission/index.md +++ b/website/docs/services/services/index.md @@ -1,9 +1,9 @@ --- -title: submission +title: services hide_title: false hide_table_of_contents: false keywords: - - submission + - services - netlify - stackql - infrastructure-as-code @@ -14,7 +14,7 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -submission service documentation. +services service documentation. :::info[Service Summary] @@ -25,10 +25,10 @@ total resources: __3__ ## Resources \ No newline at end of file diff --git a/website/docs/services/services/service_instances/index.md b/website/docs/services/services/service_instances/index.md new file mode 100644 index 0000000..abbccf5 --- /dev/null +++ b/website/docs/services/services/service_instances/index.md @@ -0,0 +1,442 @@ +--- +title: service_instances +hide_title: false +hide_table_of_contents: false +keywords: + - service_instances + - services + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a service_instances resource. + +## Overview + + + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string(opaque JSON object)
string (dateTime)
string(opaque JSON object)
string(opaque JSON object)
string
string
array
string (dateTime)
string
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
string(opaque JSON object)
string (dateTime)
string(opaque JSON object)
string(opaque JSON object)
string
string
array
string (dateTime)
string
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, addon, instance_id
site_id
site_id, addon, config
site_id, addon, instance_id, config
site_id, addon, instance_id
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +id, +service_name, +auth_url, +config, +created_at, +env, +external_attributes, +service_path, +service_slug, +snippets, +updated_at, +url +FROM netlify.services.service_instances +WHERE site_id = '{{ site_id }}' -- required +AND addon = '{{ addon }}' -- required +AND instance_id = '{{ instance_id }}' -- required +; +``` + + + +OK + +```sql +SELECT +id, +service_name, +auth_url, +config, +created_at, +env, +external_attributes, +service_path, +service_slug, +snippets, +updated_at, +url +FROM netlify.services.service_instances +WHERE site_id = '{{ site_id }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +No description available. + +```sql +INSERT INTO netlify.services.service_instances ( +config, +site_id, +addon +) +SELECT +'{{ config }}' /* required */, +'{{ site_id }}', +'{{ addon }}' +RETURNING +id, +service_name, +auth_url, +config, +created_at, +env, +external_attributes, +service_path, +service_slug, +snippets, +updated_at, +url +; +``` + + + +{`# Description fields are for documentation purposes +- name: service_instances + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the service_instances resource. + - name: addon + value: "{{ addon }}" + description: Required parameter for the service_instances resource. + - name: config + value: "{{ config }}" + description: | + Add-on specific configuration object; sent verbatim as the request body. +`} + + + + + +## `REPLACE` examples + + + + +No description available. + +```sql +REPLACE netlify.services.service_instances +SET +config = '{{ config }}' +WHERE +site_id = '{{ site_id }}' --required +AND addon = '{{ addon }}' --required +AND instance_id = '{{ instance_id }}' --required +AND config = '{{ config }}' --required; +``` + + + + +## `DELETE` examples + + + + +No description available. + +```sql +DELETE FROM netlify.services.service_instances +WHERE site_id = '{{ site_id }}' --required +AND addon = '{{ addon }}' --required +AND instance_id = '{{ instance_id }}' --required +; +``` + + diff --git a/website/docs/services/deploy/sites_deploys_restore/index.md b/website/docs/services/services/service_manifests/index.md similarity index 51% rename from website/docs/services/deploy/sites_deploys_restore/index.md rename to website/docs/services/services/service_manifests/index.md index 478b46c..2240b02 100644 --- a/website/docs/services/deploy/sites_deploys_restore/index.md +++ b/website/docs/services/services/service_manifests/index.md @@ -1,10 +1,10 @@ --- -title: sites_deploys_restore +title: service_manifests hide_title: false hide_table_of_contents: false keywords: - - sites_deploys_restore - - deploy + - service_manifests + - services - netlify - infrastructure-as-code - configuration-as-data @@ -15,24 +15,49 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a sites_deploys_restore resource. +Creates, updates, deletes, gets or lists a service_manifests resource. ## Overview - + - +
Namesites_deploys_restore
Name
TypeResource
Id
Id
## Fields The following fields are returned by `SELECT` queries: -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectThe add-on service manifest (opaque JSON).
+
+
## Methods @@ -50,9 +75,9 @@ The following methods are available for this resource: - - - site_id, deploy_id + + + addon_name @@ -72,35 +97,31 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# - - - string - - - - + + string -## Lifecycle Methods +## `SELECT` examples - + -Created +No description available. ```sql -EXEC netlify.deploy.sites_deploys_restore.restoreSiteDeploy -@site_id='{{ site_id }}' --required, -@deploy_id='{{ deploy_id }}' --required +SELECT +manifest +FROM netlify.services.service_manifests +WHERE addon_name = '{{ addon_name }}' -- required ; ``` diff --git a/website/docs/services/service/services/index.md b/website/docs/services/services/services/index.md similarity index 57% rename from website/docs/services/service/services/index.md rename to website/docs/services/services/services/index.md index 930ab38..f1a83dc 100644 --- a/website/docs/services/service/services/index.md +++ b/website/docs/services/services/services/index.md @@ -4,7 +4,7 @@ hide_title: false hide_table_of_contents: false keywords: - services - - service + - services - netlify - infrastructure-as-code - configuration-as-data @@ -15,6 +15,7 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -22,9 +23,9 @@ Creates, updates, deletes, gets or lists a services resource. ## Overview - + - +
Nameservices
Name
TypeResource
Id
Id
## Fields @@ -32,12 +33,94 @@ Creates, updates, deletes, gets or lists a services resource. The following fields are returned by `SELECT` queries: - + + +services + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
string (dateTime)
string
array
array
string
string
string
string
string
array
string (dateTime)
+
+ services @@ -136,17 +219,17 @@ The following methods are available for this resource: - + + addon_name - search - - - addonName + + + search @@ -165,8 +248,8 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# - - + + string @@ -181,12 +264,13 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + services @@ -205,29 +289,32 @@ service_path, slug, tags, updated_at -FROM netlify.service.services -WHERE search = '{{ search }}' +FROM netlify.services.services +WHERE addon_name = '{{ addon_name }}' -- required ; ``` - - - -## Lifecycle Methods - - - + services ```sql -EXEC netlify.service.services.showService -@addonName='{{ addonName }}' --required +SELECT +id, +name, +created_at, +description, +environments, +events, +icon, +long_description, +manifest_url, +service_path, +slug, +tags, +updated_at +FROM netlify.services.services +WHERE search = '{{ search }}' ; ``` diff --git a/website/docs/services/site/sites_unlink_repo/index.md b/website/docs/services/site/sites_unlink_repo/index.md deleted file mode 100644 index 67b16bf..0000000 --- a/website/docs/services/site/sites_unlink_repo/index.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: sites_unlink_repo -hide_title: false -hide_table_of_contents: false -keywords: - - sites_unlink_repo - - site - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a sites_unlink_repo resource. - -## Overview - - - - -
Namesites_unlink_repo
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
site_id[Beta] Unlinks the repo from the site.

This action will also:
- Delete associated deploy keys
- Delete outgoing webhooks for the repo
- Delete the site's build hooks
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## Lifecycle Methods - - - - -[Beta] Unlinks the repo from the site.

This action will also:
- Delete associated deploy keys
- Delete outgoing webhooks for the repo
- Delete the site's build hooks - -```sql -EXEC netlify.site.sites_unlink_repo.unlinkSiteRepo -@site_id='{{ site_id }}' --required -; -``` -
-
diff --git a/website/docs/services/deployed_branch/sites_deployed_branches/index.md b/website/docs/services/sites/deployed_branches/index.md similarity index 74% rename from website/docs/services/deployed_branch/sites_deployed_branches/index.md rename to website/docs/services/sites/deployed_branches/index.md index ef5d588..a603619 100644 --- a/website/docs/services/deployed_branch/sites_deployed_branches/index.md +++ b/website/docs/services/sites/deployed_branches/index.md @@ -1,10 +1,10 @@ --- -title: sites_deployed_branches +title: deployed_branches hide_title: false hide_table_of_contents: false keywords: - - sites_deployed_branches - - deployed_branch + - deployed_branches + - sites - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a sites_deployed_branches resource. +Creates, updates, deletes, gets or lists a deployed_branches resource. ## Overview - + - +
Namesites_deployed_branches
Name
TypeResource
Id
Id
## Fields @@ -32,12 +33,12 @@ Creates, updates, deletes, gets or lists a sites_deployed_branches The following fields are returned by `SELECT` queries: - + @@ -99,7 +100,7 @@ The following methods are available for this resource: - + @@ -132,12 +133,12 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -149,7 +150,7 @@ deploy_id, slug, ssl_url, url -FROM netlify.deployed_branch.sites_deployed_branches +FROM netlify.sites.deployed_branches WHERE site_id = '{{ site_id }}' -- required ; ``` diff --git a/website/docs/services/sites/index.md b/website/docs/services/sites/index.md new file mode 100644 index 0000000..1d3d720 --- /dev/null +++ b/website/docs/services/sites/index.md @@ -0,0 +1,40 @@ +--- +title: sites +hide_title: false +hide_table_of_contents: false +keywords: + - sites + - netlify + - stackql + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +sites service documentation. + +:::info[Service Summary] + +total resources: __9__ + +::: + +## Resources + \ No newline at end of file diff --git a/website/docs/services/asset_public_signature/sites_assets_public_signature/index.md b/website/docs/services/sites/site_asset_public_signatures/index.md similarity index 69% rename from website/docs/services/asset_public_signature/sites_assets_public_signature/index.md rename to website/docs/services/sites/site_asset_public_signatures/index.md index 779760c..b1dc081 100644 --- a/website/docs/services/asset_public_signature/sites_assets_public_signature/index.md +++ b/website/docs/services/sites/site_asset_public_signatures/index.md @@ -1,10 +1,10 @@ --- -title: sites_assets_public_signature +title: site_asset_public_signatures hide_title: false hide_table_of_contents: false keywords: - - sites_assets_public_signature - - asset_public_signature + - site_asset_public_signatures + - sites - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a sites_assets_public_signature resource. +Creates, updates, deletes, gets or lists a site_asset_public_signatures resource. ## Overview
site_id
- + - +
Namesites_assets_public_signature
Name
TypeResource
Id
Id
## Fields @@ -32,12 +33,12 @@ Creates, updates, deletes, gets or lists a sites_assets_public_signature - + @@ -74,7 +75,7 @@ The following methods are available for this resource: - + @@ -112,19 +113,19 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK ```sql SELECT url -FROM netlify.asset_public_signature.sites_assets_public_signature +FROM netlify.sites.site_asset_public_signatures WHERE site_id = '{{ site_id }}' -- required AND asset_id = '{{ asset_id }}' -- required ; diff --git a/website/docs/services/asset/sites_assets/index.md b/website/docs/services/sites/site_assets/index.md similarity index 62% rename from website/docs/services/asset/sites_assets/index.md rename to website/docs/services/sites/site_assets/index.md index 8a530d8..2b62745 100644 --- a/website/docs/services/asset/sites_assets/index.md +++ b/website/docs/services/sites/site_assets/index.md @@ -1,10 +1,10 @@ --- -title: sites_assets +title: site_assets hide_title: false hide_table_of_contents: false keywords: - - sites_assets - - asset + - site_assets + - sites - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a sites_assets resource. +Creates, updates, deletes, gets or lists a site_assets resource. ## Overview
site_id, asset_id
- + - +
Namesites_assets
Name
TypeResource
Id
Id
## Fields @@ -32,13 +33,13 @@ Creates, updates, deletes, gets or lists a sites_assets resource. The following fields are returned by `SELECT` queries: - + @@ -112,7 +113,7 @@ The following fields are returned by `SELECT` queries:
- + @@ -204,36 +205,36 @@ The following methods are available for this resource: - + - + - + - - + + - - - + + + - - + + @@ -259,24 +260,49 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# + + + + + + + + + + + + + + + + + + + + + + + + +
site_id, asset_id
site_id
site_idname, size, content_type, site_idvisibility
site_id, asset_idstate, site_id, asset_id
site_id, asset_id string
string
string
string
integer (int64)
string
string
## `SELECT` examples - + OK @@ -294,13 +320,13 @@ state, updated_at, url, visibility -FROM netlify.asset.sites_assets +FROM netlify.sites.site_assets WHERE site_id = '{{ site_id }}' -- required AND asset_id = '{{ asset_id }}' -- required ; ``` - + OK @@ -318,7 +344,7 @@ state, updated_at, url, visibility -FROM netlify.asset.sites_assets +FROM netlify.sites.site_assets WHERE site_id = '{{ site_id }}' -- required ; ``` @@ -329,22 +355,30 @@ WHERE site_id = '{{ site_id }}' -- required ## `INSERT` examples - + No description available. ```sql -INSERT INTO netlify.asset.sites_assets ( -site_id +INSERT INTO netlify.sites.site_assets ( +name, +size, +content_type, +site_id, +visibility ) SELECT -'{{ site_id }}' +'{{ name }}', +'{{ size }}', +'{{ content_type }}', +'{{ site_id }}', +'{{ visibility }}' RETURNING asset, form @@ -353,56 +387,83 @@ form -```yaml -# Description fields are for documentation purposes -- name: sites_assets +{`# Description fields are for documentation purposes +- name: site_assets props: + - name: name + value: "{{ name }}" + description: Required parameter for the site_assets resource. + - name: size + value: "{{ size }}" + description: Required parameter for the site_assets resource. + - name: content_type + value: "{{ content_type }}" + description: Required parameter for the site_assets resource. - name: site_id - value: string - description: Required parameter for the sites_assets resource. -``` + value: "{{ site_id }}" + description: Required parameter for the site_assets resource. + - name: visibility + value: "{{ visibility }}" +`} + -## `DELETE` examples +## `REPLACE` examples - + No description available. ```sql -DELETE FROM netlify.asset.sites_assets -WHERE site_id = '{{ site_id }}' --required +REPLACE netlify.sites.site_assets +SET +-- No updatable properties +WHERE +state = '{{ state }}' --required +AND site_id = '{{ site_id }}' --required AND asset_id = '{{ asset_id }}' --required -; +RETURNING +id, +name, +creator_id, +site_id, +content_type, +created_at, +key, +size, +state, +updated_at, +url, +visibility; ``` -## Lifecycle Methods +## `DELETE` examples - + -Updated +No description available. ```sql -EXEC netlify.asset.sites_assets.updateSiteAsset -@site_id='{{ site_id }}' --required, -@asset_id='{{ asset_id }}' --required +DELETE FROM netlify.sites.site_assets +WHERE site_id = '{{ site_id }}' --required +AND asset_id = '{{ asset_id }}' --required ; ``` diff --git a/website/docs/services/dns_zone/sites_dns/index.md b/website/docs/services/sites/site_dns/index.md similarity index 81% rename from website/docs/services/dns_zone/sites_dns/index.md rename to website/docs/services/sites/site_dns/index.md index f2b2c3a..c2c0316 100644 --- a/website/docs/services/dns_zone/sites_dns/index.md +++ b/website/docs/services/sites/site_dns/index.md @@ -1,10 +1,10 @@ --- -title: sites_dns +title: site_dns hide_title: false hide_table_of_contents: false keywords: - - sites_dns - - dns_zone + - site_dns + - sites - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a sites_dns resource. +Creates, updates, deletes, gets or lists a site_dns resource. ## Overview - + - +
Namesites_dns
Name
TypeResource
Id
Id
## Fields @@ -32,12 +33,12 @@ Creates, updates, deletes, gets or lists a sites_dns resource. The following fields are returned by `SELECT` queries: - + @@ -149,14 +150,14 @@ The following methods are available for this resource: - + - + @@ -189,12 +190,12 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -216,7 +217,7 @@ ipv6_enabled, records, supported_record_types, updated_at -FROM netlify.dns_zone.sites_dns +FROM netlify.sites.site_dns WHERE site_id = '{{ site_id }}' -- required ; ``` @@ -227,17 +228,17 @@ WHERE site_id = '{{ site_id }}' -- required ## Lifecycle Methods - + OK ```sql -EXEC netlify.dns_zone.sites_dns.configureDNSForSite +EXEC netlify.sites.site_dns.configure @site_id='{{ site_id }}' --required ; ``` diff --git a/website/docs/services/file/sites_files/index.md b/website/docs/services/sites/site_files/index.md similarity index 78% rename from website/docs/services/file/sites_files/index.md rename to website/docs/services/sites/site_files/index.md index 0f82d76..8b0d7e5 100644 --- a/website/docs/services/file/sites_files/index.md +++ b/website/docs/services/sites/site_files/index.md @@ -1,10 +1,10 @@ --- -title: sites_files +title: site_files hide_title: false hide_table_of_contents: false keywords: - - sites_files - - file + - site_files + - sites - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a sites_files resource. +Creates, updates, deletes, gets or lists a site_files resource. ## Overview
site_id
site_id
- + - +
Namesites_files
Name
TypeResource
Id
Id
## Fields @@ -32,13 +33,13 @@ Creates, updates, deletes, gets or lists a sites_files resource. The following fields are returned by `SELECT` queries: - + @@ -77,7 +78,7 @@ The following fields are returned by `SELECT` queries:
- + @@ -134,14 +135,14 @@ The following methods are available for this resource: - + - + @@ -179,13 +180,13 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -196,13 +197,13 @@ mime_type, path, sha, size -FROM netlify.file.sites_files +FROM netlify.sites.site_files WHERE site_id = '{{ site_id }}' -- required AND file_path = '{{ file_path }}' -- required ; ``` - + OK @@ -213,7 +214,7 @@ mime_type, path, sha, size -FROM netlify.file.sites_files +FROM netlify.sites.site_files WHERE site_id = '{{ site_id }}' -- required ; ``` diff --git a/website/docs/services/sites/site_metadata/index.md b/website/docs/services/sites/site_metadata/index.md new file mode 100644 index 0000000..c34c5c2 --- /dev/null +++ b/website/docs/services/sites/site_metadata/index.md @@ -0,0 +1,159 @@ +--- +title: site_metadata +hide_title: false +hide_table_of_contents: false +keywords: + - site_metadata + - sites + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a site_metadata resource. + +## Overview +
site_id, file_path
site_id
+ + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
objectThe site metadata object (opaque JSON).
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_id
site_id, metadata
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
+ +## `SELECT` examples + + + + +No description available. + +```sql +SELECT +metadata +FROM netlify.sites.site_metadata +WHERE site_id = '{{ site_id }}' -- required +; +``` + + + + +## `REPLACE` examples + + + + +No description available. + +```sql +REPLACE netlify.sites.site_metadata +SET +metadata = '{{ metadata }}' +WHERE +site_id = '{{ site_id }}' --required +AND metadata = '{{ metadata }}' --required; +``` + + diff --git a/website/docs/services/site/sites/index.md b/website/docs/services/sites/sites/index.md similarity index 51% rename from website/docs/services/site/sites/index.md rename to website/docs/services/sites/sites/index.md index d031e01..62c5504 100644 --- a/website/docs/services/site/sites/index.md +++ b/website/docs/services/sites/sites/index.md @@ -4,7 +4,7 @@ hide_title: false hide_table_of_contents: false keywords: - sites - - site + - sites - netlify - infrastructure-as-code - configuration-as-data @@ -15,6 +15,7 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; @@ -22,9 +23,9 @@ Creates, updates, deletes, gets or lists a sites resource. ## Overview - + - +
Namesites
Name
TypeResource
Id
Id
## Fields @@ -32,14 +33,14 @@ Creates, updates, deletes, gets or lists a sites resource. The following fields are returned by `SELECT` queries: - + @@ -60,6 +61,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -85,6 +91,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -120,6 +131,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -135,6 +151,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -170,6 +191,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -213,7 +239,7 @@ The following fields are returned by `SELECT` queries:
string
string
stringstring
string
stringstring
string
stringboolean
string
stringstring
boolean
object
- + @@ -234,6 +260,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -259,6 +290,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -294,6 +330,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -309,6 +350,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -344,6 +390,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -387,7 +438,7 @@ The following fields are returned by `SELECT` queries:
string
string
stringstring
string
stringstring
string
stringboolean
string
stringstring
boolean
object
- + @@ -408,6 +459,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -433,6 +489,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -468,6 +529,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -483,6 +549,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -518,6 +589,11 @@ The following fields are returned by `SELECT` queries: + + + + + @@ -579,53 +655,81 @@ The following methods are available for this resource: - + - - + + - + - + - + - + - + - + - + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + +
string
string
stringstring
string
stringstring
string
stringboolean
string
stringstring
boolean
object
site_idfeature_flags**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](https:​//open-api.netlify.com/#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables.
account_slug name, page, per_page**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](https:​//open-api.netlify.com/#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables.
name, filter, page, per_page**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](https:​//open-api.netlify.com/#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables.
account_slug configure_dns**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](https:​//open-api.netlify.com/#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site.
configure_dns**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](https:​//open-api.netlify.com/#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site.
site_id **Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [updateEnvVar](https:​//open-api.netlify.com/#tag/environmentVariables/operation/updateEnvVar) to update a site's environment variables.
site_id
Purges cached content from Netlify's CDN. Supports purging by Cache-Tag.
site_id[Beta] Unlinks the repo from the site.<br /><br />This action will also:<br />- Delete associated deploy keys<br />- Delete outgoing webhooks for the repo<br />- Delete the site's build hooks
site_id Re-enables a site that was previously disabled by the user. Sites that were disabled for usage exceeded or marked as spam cannot be re-enabled via this endpoint.
reason, site_id Disables a site, preventing it from serving content. The site can be re-enabled later using the enable endpoint.
@@ -648,6 +752,11 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# string + + + string + Reason for disabling the site + string @@ -658,6 +767,11 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# boolean + + + string + + string @@ -684,26 +798,28 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + -OK +**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](https://open-api.netlify.com/#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables. ```sql SELECT id, name, +account_id, session_id, user_id, account_name, account_slug, admin_url, +branch_deploy_custom_domain, build_image, build_settings, capabilities, @@ -711,9 +827,11 @@ created_at, custom_domain, default_hooks_data, deploy_hook, +deploy_preview_custom_domain, deploy_url, domain_aliases, force_ssl, +functions_region, git_provider, id_domain, managed_dns, @@ -721,6 +839,7 @@ notification_email, password, plan, prerender, +prevent_non_git_prod_deploys, processing_settings, published_deploy, screenshot_url, @@ -729,24 +848,27 @@ ssl_url, state, updated_at, url -FROM netlify.site.sites +FROM netlify.sites.sites WHERE site_id = '{{ site_id }}' -- required +AND feature_flags = '{{ feature_flags }}' ; ``` - + -OK +**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](https://open-api.netlify.com/#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables. ```sql SELECT id, name, +account_id, session_id, user_id, account_name, account_slug, admin_url, +branch_deploy_custom_domain, build_image, build_settings, capabilities, @@ -754,9 +876,11 @@ created_at, custom_domain, default_hooks_data, deploy_hook, +deploy_preview_custom_domain, deploy_url, domain_aliases, force_ssl, +functions_region, git_provider, id_domain, managed_dns, @@ -764,6 +888,7 @@ notification_email, password, plan, prerender, +prevent_non_git_prod_deploys, processing_settings, published_deploy, screenshot_url, @@ -772,7 +897,7 @@ ssl_url, state, updated_at, url -FROM netlify.site.sites +FROM netlify.sites.sites WHERE account_slug = '{{ account_slug }}' -- required AND name = '{{ name }}' AND page = '{{ page }}' @@ -780,19 +905,21 @@ AND per_page = '{{ per_page }}' ; ``` - + -OK +**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [getEnvVars](https://open-api.netlify.com/#tag/environmentVariables/operation/getEnvVars) to retrieve site environment variables. ```sql SELECT id, name, +account_id, session_id, user_id, account_name, account_slug, admin_url, +branch_deploy_custom_domain, build_image, build_settings, capabilities, @@ -800,9 +927,11 @@ created_at, custom_domain, default_hooks_data, deploy_hook, +deploy_preview_custom_domain, deploy_url, domain_aliases, force_ssl, +functions_region, git_provider, id_domain, managed_dns, @@ -810,6 +939,7 @@ notification_email, password, plan, prerender, +prevent_non_git_prod_deploys, processing_settings, published_deploy, screenshot_url, @@ -818,7 +948,7 @@ ssl_url, state, updated_at, url -FROM netlify.site.sites +FROM netlify.sites.sites WHERE name = '{{ name }}' AND filter = '{{ filter }}' AND page = '{{ page }}' @@ -832,99 +962,111 @@ AND per_page = '{{ per_page }}' ## `INSERT` examples - + -No description available. +**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](https://open-api.netlify.com/#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site. ```sql -INSERT INTO netlify.site.sites ( -data__account_name, -data__account_slug, -data__admin_url, -data__build_image, -data__build_settings, -data__capabilities, -data__created_at, -data__custom_domain, -data__default_hooks_data, -data__deploy_hook, -data__deploy_url, -data__domain_aliases, -data__force_ssl, -data__git_provider, -data__id, -data__id_domain, -data__managed_dns, -data__name, -data__notification_email, -data__password, -data__plan, -data__prerender, -data__processing_settings, -data__published_deploy, -data__screenshot_url, -data__session_id, -data__ssl, -data__ssl_url, -data__state, -data__updated_at, -data__url, -data__user_id, -data__repo, +INSERT INTO netlify.sites.sites ( +id, +state, +plan, +name, +custom_domain, +domain_aliases, +branch_deploy_custom_domain, +deploy_preview_custom_domain, +password, +notification_email, +url, +ssl_url, +admin_url, +screenshot_url, +created_at, +updated_at, +user_id, +session_id, +ssl, +force_ssl, +managed_dns, +deploy_url, +published_deploy, +account_id, +account_name, +account_slug, +git_provider, +deploy_hook, +capabilities, +processing_settings, +build_settings, +id_domain, +default_hooks_data, +build_image, +prerender, +functions_region, +prevent_non_git_prod_deploys, +repo, account_slug, configure_dns ) SELECT -'{{ account_name }}', -'{{ account_slug }}', -'{{ admin_url }}', -'{{ build_image }}', -'{{ build_settings }}', -'{{ capabilities }}', -'{{ created_at }}', -'{{ custom_domain }}', -'{{ default_hooks_data }}', -'{{ deploy_hook }}', -'{{ deploy_url }}', -'{{ domain_aliases }}', -{{ force_ssl }}, -'{{ git_provider }}', '{{ id }}', -'{{ id_domain }}', -{{ managed_dns }}, +'{{ state }}', +'{{ plan }}', '{{ name }}', -'{{ notification_email }}', +'{{ custom_domain }}', +'{{ domain_aliases }}', +'{{ branch_deploy_custom_domain }}', +'{{ deploy_preview_custom_domain }}', '{{ password }}', -'{{ plan }}', -'{{ prerender }}', -'{{ processing_settings }}', -'{{ published_deploy }}', -'{{ screenshot_url }}', -'{{ session_id }}', -{{ ssl }}, +'{{ notification_email }}', +'{{ url }}', '{{ ssl_url }}', -'{{ state }}', +'{{ admin_url }}', +'{{ screenshot_url }}', +'{{ created_at }}', '{{ updated_at }}', -'{{ url }}', '{{ user_id }}', +'{{ session_id }}', +{{ ssl }}, +{{ force_ssl }}, +{{ managed_dns }}, +'{{ deploy_url }}', +'{{ published_deploy }}', +'{{ account_id }}', +'{{ account_name }}', +'{{ account_slug }}', +'{{ git_provider }}', +'{{ deploy_hook }}', +'{{ capabilities }}', +'{{ processing_settings }}', +'{{ build_settings }}', +'{{ id_domain }}', +'{{ default_hooks_data }}', +'{{ build_image }}', +'{{ prerender }}', +'{{ functions_region }}', +{{ prevent_non_git_prod_deploys }}, '{{ repo }}', '{{ account_slug }}', '{{ configure_dns }}' RETURNING id, name, +account_id, session_id, user_id, account_name, account_slug, admin_url, +branch_deploy_custom_domain, build_image, build_settings, capabilities, @@ -932,9 +1074,11 @@ created_at, custom_domain, default_hooks_data, deploy_hook, +deploy_preview_custom_domain, deploy_url, domain_aliases, force_ssl, +functions_region, git_provider, id_domain, managed_dns, @@ -942,6 +1086,7 @@ notification_email, password, plan, prerender, +prevent_non_git_prod_deploys, processing_settings, published_deploy, screenshot_url, @@ -953,90 +1098,102 @@ url ; ``` - + -No description available. +**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [createEnvVars](https://open-api.netlify.com/#tag/environmentVariables/operation/createEnvVars) to create environment variables for a site. ```sql -INSERT INTO netlify.site.sites ( -data__account_name, -data__account_slug, -data__admin_url, -data__build_image, -data__build_settings, -data__capabilities, -data__created_at, -data__custom_domain, -data__default_hooks_data, -data__deploy_hook, -data__deploy_url, -data__domain_aliases, -data__force_ssl, -data__git_provider, -data__id, -data__id_domain, -data__managed_dns, -data__name, -data__notification_email, -data__password, -data__plan, -data__prerender, -data__processing_settings, -data__published_deploy, -data__screenshot_url, -data__session_id, -data__ssl, -data__ssl_url, -data__state, -data__updated_at, -data__url, -data__user_id, -data__repo, +INSERT INTO netlify.sites.sites ( +id, +state, +plan, +name, +custom_domain, +domain_aliases, +branch_deploy_custom_domain, +deploy_preview_custom_domain, +password, +notification_email, +url, +ssl_url, +admin_url, +screenshot_url, +created_at, +updated_at, +user_id, +session_id, +ssl, +force_ssl, +managed_dns, +deploy_url, +published_deploy, +account_id, +account_name, +account_slug, +git_provider, +deploy_hook, +capabilities, +processing_settings, +build_settings, +id_domain, +default_hooks_data, +build_image, +prerender, +functions_region, +prevent_non_git_prod_deploys, +repo, configure_dns ) SELECT -'{{ account_name }}', -'{{ account_slug }}', -'{{ admin_url }}', -'{{ build_image }}', -'{{ build_settings }}', -'{{ capabilities }}', -'{{ created_at }}', -'{{ custom_domain }}', -'{{ default_hooks_data }}', -'{{ deploy_hook }}', -'{{ deploy_url }}', -'{{ domain_aliases }}', -{{ force_ssl }}, -'{{ git_provider }}', '{{ id }}', -'{{ id_domain }}', -{{ managed_dns }}, +'{{ state }}', +'{{ plan }}', '{{ name }}', -'{{ notification_email }}', +'{{ custom_domain }}', +'{{ domain_aliases }}', +'{{ branch_deploy_custom_domain }}', +'{{ deploy_preview_custom_domain }}', '{{ password }}', -'{{ plan }}', -'{{ prerender }}', -'{{ processing_settings }}', -'{{ published_deploy }}', -'{{ screenshot_url }}', -'{{ session_id }}', -{{ ssl }}, +'{{ notification_email }}', +'{{ url }}', '{{ ssl_url }}', -'{{ state }}', +'{{ admin_url }}', +'{{ screenshot_url }}', +'{{ created_at }}', '{{ updated_at }}', -'{{ url }}', '{{ user_id }}', +'{{ session_id }}', +{{ ssl }}, +{{ force_ssl }}, +{{ managed_dns }}, +'{{ deploy_url }}', +'{{ published_deploy }}', +'{{ account_id }}', +'{{ account_name }}', +'{{ account_slug }}', +'{{ git_provider }}', +'{{ deploy_hook }}', +'{{ capabilities }}', +'{{ processing_settings }}', +'{{ build_settings }}', +'{{ id_domain }}', +'{{ default_hooks_data }}', +'{{ build_image }}', +'{{ prerender }}', +'{{ functions_region }}', +{{ prevent_non_git_prod_deploys }}, '{{ repo }}', '{{ configure_dns }}' RETURNING id, name, +account_id, session_id, user_id, account_name, account_slug, admin_url, +branch_deploy_custom_domain, build_image, build_settings, capabilities, @@ -1044,9 +1201,11 @@ created_at, custom_domain, default_hooks_data, deploy_hook, +deploy_preview_custom_domain, deploy_url, domain_aliases, force_ssl, +functions_region, git_provider, id_domain, managed_dns, @@ -1054,6 +1213,7 @@ notification_email, password, plan, prerender, +prevent_non_git_prod_deploys, processing_settings, published_deploy, screenshot_url, @@ -1067,81 +1227,267 @@ url -```yaml -# Description fields are for documentation purposes +{`# Description fields are for documentation purposes - name: sites props: - name: account_slug - value: string + value: "{{ account_slug }}" description: Required parameter for the sites resource. - - name: account_name - value: string - - name: account_slug - value: string - - name: admin_url - value: string - - name: build_image - value: string - - name: build_settings - value: object - - name: capabilities - value: object - - name: created_at - value: string - - name: custom_domain - value: string - - name: default_hooks_data - value: object - - name: deploy_hook - value: string - - name: deploy_url - value: string - - name: domain_aliases - value: array - - name: force_ssl - value: boolean - - name: git_provider - value: string - name: id - value: string - - name: id_domain - value: string - - name: managed_dns - value: boolean + value: "{{ id }}" + - name: state + value: "{{ state }}" + - name: plan + value: "{{ plan }}" - name: name - value: string - - name: notification_email - value: string + value: "{{ name }}" + - name: custom_domain + value: "{{ custom_domain }}" + - name: domain_aliases + value: + - "{{ domain_aliases }}" + - name: branch_deploy_custom_domain + value: "{{ branch_deploy_custom_domain }}" + - name: deploy_preview_custom_domain + value: "{{ deploy_preview_custom_domain }}" - name: password - value: string - - name: plan - value: string - - name: prerender - value: string - - name: processing_settings - value: object - - name: published_deploy - value: object - - name: screenshot_url - value: string - - name: session_id - value: string - - name: ssl - value: boolean + value: "{{ password }}" + - name: notification_email + value: "{{ notification_email }}" + - name: url + value: "{{ url }}" - name: ssl_url - value: string - - name: state - value: string + value: "{{ ssl_url }}" + - name: admin_url + value: "{{ admin_url }}" + - name: screenshot_url + value: "{{ screenshot_url }}" + - name: created_at + value: "{{ created_at }}" - name: updated_at - value: string - - name: url - value: string + value: "{{ updated_at }}" - name: user_id - value: string + value: "{{ user_id }}" + - name: session_id + value: "{{ session_id }}" + - name: ssl + value: {{ ssl }} + - name: force_ssl + value: {{ force_ssl }} + - name: managed_dns + value: {{ managed_dns }} + - name: deploy_url + value: "{{ deploy_url }}" + - name: published_deploy + value: + id: "{{ id }}" + site_id: "{{ site_id }}" + user_id: "{{ user_id }}" + build_id: "{{ build_id }}" + state: "{{ state }}" + name: "{{ name }}" + url: "{{ url }}" + ssl_url: "{{ ssl_url }}" + admin_url: "{{ admin_url }}" + deploy_url: "{{ deploy_url }}" + deploy_ssl_url: "{{ deploy_ssl_url }}" + screenshot_url: "{{ screenshot_url }}" + review_id: {{ review_id }} + draft: {{ draft }} + required: + - "{{ required }}" + required_functions: + - "{{ required_functions }}" + required_edge_functions: + - "{{ required_edge_functions }}" + error_message: "{{ error_message }}" + branch: "{{ branch }}" + commit_ref: "{{ commit_ref }}" + commit_url: "{{ commit_url }}" + skipped: {{ skipped }} + created_at: "{{ created_at }}" + updated_at: "{{ updated_at }}" + published_at: "{{ published_at }}" + title: "{{ title }}" + context: "{{ context }}" + locked: {{ locked }} + review_url: "{{ review_url }}" + framework: "{{ framework }}" + skew_protection_token: "{{ skew_protection_token }}" + function_schedules: + - name: "{{ name }}" + cron: "{{ cron }}" + functions_region: "{{ functions_region }}" + functions_region_overrides: + - name: "{{ name }}" + region: "{{ region }}" + - name: account_id + value: "{{ account_id }}" + - name: account_name + value: "{{ account_name }}" + - name: account_slug + value: "{{ account_slug }}" + - name: git_provider + value: "{{ git_provider }}" + - name: deploy_hook + value: "{{ deploy_hook }}" + - name: capabilities + value: "{{ capabilities }}" + - name: processing_settings + value: + html: + pretty_urls: {{ pretty_urls }} + - name: build_settings + value: + id: {{ id }} + provider: "{{ provider }}" + deploy_key_id: "{{ deploy_key_id }}" + repo_path: "{{ repo_path }}" + repo_branch: "{{ repo_branch }}" + dir: "{{ dir }}" + functions_dir: "{{ functions_dir }}" + cmd: "{{ cmd }}" + allowed_branches: + - "{{ allowed_branches }}" + public_repo: {{ public_repo }} + private_logs: {{ private_logs }} + repo_url: "{{ repo_url }}" + env: "{{ env }}" + installation_id: {{ installation_id }} + stop_builds: {{ stop_builds }} + - name: id_domain + value: "{{ id_domain }}" + - name: default_hooks_data + value: + access_token: "{{ access_token }}" + - name: build_image + value: "{{ build_image }}" + - name: prerender + value: "{{ prerender }}" + - name: functions_region + value: "{{ functions_region }}" + - name: prevent_non_git_prod_deploys + value: {{ prevent_non_git_prod_deploys }} + default: false - name: repo - value: object + value: + id: {{ id }} + provider: "{{ provider }}" + deploy_key_id: "{{ deploy_key_id }}" + repo_path: "{{ repo_path }}" + repo_branch: "{{ repo_branch }}" + dir: "{{ dir }}" + functions_dir: "{{ functions_dir }}" + cmd: "{{ cmd }}" + allowed_branches: + - "{{ allowed_branches }}" + public_repo: {{ public_repo }} + private_logs: {{ private_logs }} + repo_url: "{{ repo_url }}" + env: "{{ env }}" + installation_id: {{ installation_id }} + stop_builds: {{ stop_builds }} - name: configure_dns - value: boolean + value: {{ configure_dns }} +`} + + + + + +## `UPDATE` examples + + + + +**Note:** Environment variable keys and values have moved from `build_settings.env` and `repo.env` to a new endpoint. Please use [updateEnvVar](https://open-api.netlify.com/#tag/environmentVariables/operation/updateEnvVar) to update a site's environment variables. + +```sql +UPDATE netlify.sites.sites +SET +id = '{{ id }}', +state = '{{ state }}', +plan = '{{ plan }}', +name = '{{ name }}', +custom_domain = '{{ custom_domain }}', +domain_aliases = '{{ domain_aliases }}', +branch_deploy_custom_domain = '{{ branch_deploy_custom_domain }}', +deploy_preview_custom_domain = '{{ deploy_preview_custom_domain }}', +password = '{{ password }}', +notification_email = '{{ notification_email }}', +url = '{{ url }}', +ssl_url = '{{ ssl_url }}', +admin_url = '{{ admin_url }}', +screenshot_url = '{{ screenshot_url }}', +created_at = '{{ created_at }}', +updated_at = '{{ updated_at }}', +user_id = '{{ user_id }}', +session_id = '{{ session_id }}', +ssl = {{ ssl }}, +force_ssl = {{ force_ssl }}, +managed_dns = {{ managed_dns }}, +deploy_url = '{{ deploy_url }}', +published_deploy = '{{ published_deploy }}', +account_id = '{{ account_id }}', +account_name = '{{ account_name }}', +account_slug = '{{ account_slug }}', +git_provider = '{{ git_provider }}', +deploy_hook = '{{ deploy_hook }}', +capabilities = '{{ capabilities }}', +processing_settings = '{{ processing_settings }}', +build_settings = '{{ build_settings }}', +id_domain = '{{ id_domain }}', +default_hooks_data = '{{ default_hooks_data }}', +build_image = '{{ build_image }}', +prerender = '{{ prerender }}', +functions_region = '{{ functions_region }}', +prevent_non_git_prod_deploys = {{ prevent_non_git_prod_deploys }}, +repo = '{{ repo }}' +WHERE +site_id = '{{ site_id }}' --required +RETURNING +id, +name, +account_id, +session_id, +user_id, +account_name, +account_slug, +admin_url, +branch_deploy_custom_domain, +build_image, +build_settings, +capabilities, +created_at, +custom_domain, +default_hooks_data, +deploy_hook, +deploy_preview_custom_domain, +deploy_url, +domain_aliases, +force_ssl, +functions_region, +git_provider, +id_domain, +managed_dns, +notification_email, +password, +plan, +prerender, +prevent_non_git_prod_deploys, +processing_settings, +published_deploy, +screenshot_url, +ssl, +ssl_url, +state, +updated_at, +url; ``` @@ -1150,17 +1496,17 @@ url ## `DELETE` examples - + No description available. ```sql -DELETE FROM netlify.site.sites +DELETE FROM netlify.sites.sites WHERE site_id = '{{ site_id }}' --required ; ``` @@ -1171,55 +1517,58 @@ WHERE site_id = '{{ site_id }}' --required ## Lifecycle Methods - + -OK +Purges cached content from Netlify's CDN. Supports purging by Cache-Tag. ```sql -EXEC netlify.site.sites.updateSite -@site_id='{{ site_id }}' --required +EXEC netlify.sites.sites.purge_cache @@json= '{ -"account_name": "{{ account_name }}", -"account_slug": "{{ account_slug }}", -"admin_url": "{{ admin_url }}", -"build_image": "{{ build_image }}", -"build_settings": "{{ build_settings }}", -"capabilities": "{{ capabilities }}", -"created_at": "{{ created_at }}", -"custom_domain": "{{ custom_domain }}", -"default_hooks_data": "{{ default_hooks_data }}", -"deploy_hook": "{{ deploy_hook }}", -"deploy_url": "{{ deploy_url }}", -"domain_aliases": "{{ domain_aliases }}", -"force_ssl": {{ force_ssl }}, -"git_provider": "{{ git_provider }}", -"id": "{{ id }}", -"id_domain": "{{ id_domain }}", -"managed_dns": {{ managed_dns }}, -"name": "{{ name }}", -"notification_email": "{{ notification_email }}", -"password": "{{ password }}", -"plan": "{{ plan }}", -"prerender": "{{ prerender }}", -"processing_settings": "{{ processing_settings }}", -"published_deploy": "{{ published_deploy }}", -"screenshot_url": "{{ screenshot_url }}", -"session_id": "{{ session_id }}", -"ssl": {{ ssl }}, -"ssl_url": "{{ ssl_url }}", -"state": "{{ state }}", -"updated_at": "{{ updated_at }}", -"url": "{{ url }}", -"user_id": "{{ user_id }}", -"repo": "{{ repo }}" +"site_id": "{{ site_id }}", +"site_slug": "{{ site_slug }}", +"cache_tags": "{{ cache_tags }}" }' ; ``` + + +[Beta] Unlinks the repo from the site.<br /><br />This action will also:<br />- Delete associated deploy keys<br />- Delete outgoing webhooks for the repo<br />- Delete the site's build hooks + +```sql +EXEC netlify.sites.sites.unlink_repo +@site_id='{{ site_id }}' --required +; +``` + + + +Re-enables a site that was previously disabled by the user. Sites that were disabled for usage exceeded or marked as spam cannot be re-enabled via this endpoint. + +```sql +EXEC netlify.sites.sites.enable +@site_id='{{ site_id }}' --required +; +``` + + + +Disables a site, preventing it from serving content. The site can be re-enabled later using the enable endpoint. + +```sql +EXEC netlify.sites.sites.disable +@reason='{{ reason }}' --required, +@site_id='{{ site_id }}' --required +; +``` + diff --git a/website/docs/services/snippet/sites_snippets/index.md b/website/docs/services/sites/snippets/index.md similarity index 67% rename from website/docs/services/snippet/sites_snippets/index.md rename to website/docs/services/sites/snippets/index.md index 1d63ce2..6c96181 100644 --- a/website/docs/services/snippet/sites_snippets/index.md +++ b/website/docs/services/sites/snippets/index.md @@ -1,10 +1,10 @@ --- -title: sites_snippets +title: snippets hide_title: false hide_table_of_contents: false keywords: - - sites_snippets - - snippet + - snippets + - sites - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a sites_snippets resource. +Creates, updates, deletes, gets or lists a snippets resource. ## Overview - + - +
Namesites_snippets
Name
TypeResource
Id
Id
## Fields @@ -32,13 +33,13 @@ Creates, updates, deletes, gets or lists a sites_snippets resource. The following fields are returned by `SELECT` queries: - + @@ -87,7 +88,7 @@ The following fields are returned by `SELECT` queries:
- + @@ -154,36 +155,36 @@ The following methods are available for this resource: - + - + - + - - + + - - + + @@ -220,13 +221,13 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -239,13 +240,13 @@ general_position, goal, goal_position, title -FROM netlify.snippet.sites_snippets +FROM netlify.sites.snippets WHERE site_id = '{{ site_id }}' -- required AND snippet_id = '{{ snippet_id }}' -- required ; ``` - + OK @@ -258,7 +259,7 @@ general_position, goal, goal_position, title -FROM netlify.snippet.sites_snippets +FROM netlify.sites.snippets WHERE site_id = '{{ site_id }}' -- required ; ``` @@ -269,35 +270,35 @@ WHERE site_id = '{{ site_id }}' -- required ## `INSERT` examples - + No description available. ```sql -INSERT INTO netlify.snippet.sites_snippets ( -data__general, -data__general_position, -data__goal, -data__goal_position, -data__id, -data__site_id, -data__title, +INSERT INTO netlify.sites.snippets ( +id, +site_id, +title, +general, +general_position, +goal, +goal_position, site_id ) SELECT +{{ id }}, +'{{ site_id }}', +'{{ title }}', '{{ general }}', '{{ general_position }}', '{{ goal }}', '{{ goal_position }}', -{{ id }}, -'{{ site_id }}', -'{{ title }}', '{{ site_id }}' RETURNING id, @@ -312,80 +313,78 @@ title -```yaml -# Description fields are for documentation purposes -- name: sites_snippets +{`# Description fields are for documentation purposes +- name: snippets props: - name: site_id - value: string - description: Required parameter for the sites_snippets resource. + value: "{{ site_id }}" + description: Required parameter for the snippets resource. + - name: id + value: {{ id }} + - name: site_id + value: "{{ site_id }}" + - name: title + value: "{{ title }}" - name: general - value: string + value: "{{ general }}" - name: general_position - value: string + value: "{{ general_position }}" - name: goal - value: string + value: "{{ goal }}" - name: goal_position - value: string - - name: id - value: integer - - name: site_id - value: string - - name: title - value: string -``` + value: "{{ goal_position }}" +`} + -## `DELETE` examples +## `REPLACE` examples - + No description available. ```sql -DELETE FROM netlify.snippet.sites_snippets -WHERE site_id = '{{ site_id }}' --required -AND snippet_id = '{{ snippet_id }}' --required -; +REPLACE netlify.sites.snippets +SET +id = {{ id }}, +site_id = '{{ site_id }}', +title = '{{ title }}', +general = '{{ general }}', +general_position = '{{ general_position }}', +goal = '{{ goal }}', +goal_position = '{{ goal_position }}' +WHERE +site_id = '{{ site_id }}' --required +AND snippet_id = '{{ snippet_id }}' --required; ``` -## Lifecycle Methods +## `DELETE` examples - + -No content +No description available. ```sql -EXEC netlify.snippet.sites_snippets.updateSiteSnippet -@site_id='{{ site_id }}' --required, -@snippet_id='{{ snippet_id }}' --required -@@json= -'{ -"general": "{{ general }}", -"general_position": "{{ general_position }}", -"goal": "{{ goal }}", -"goal_position": "{{ goal_position }}", -"id": {{ id }}, -"site_id": "{{ site_id }}", -"title": "{{ title }}" -}' +DELETE FROM netlify.sites.snippets +WHERE site_id = '{{ site_id }}' --required +AND snippet_id = '{{ snippet_id }}' --required ; ``` diff --git a/website/docs/services/sites/ssl_certificates/index.md b/website/docs/services/sites/ssl_certificates/index.md new file mode 100644 index 0000000..c28cff3 --- /dev/null +++ b/website/docs/services/sites/ssl_certificates/index.md @@ -0,0 +1,306 @@ +--- +title: ssl_certificates +hide_title: false +hide_table_of_contents: false +keywords: + - ssl_certificates + - sites + - netlify + - infrastructure-as-code + - configuration-as-data + - cloud inventory +description: Query, deploy and manage netlify resources using SQL +custom_edit_url: null +image: /img/stackql-netlify-provider-featured-image.png +--- + +import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Creates, updates, deletes, gets or lists a ssl_certificates resource. + +## Overview +
site_id, snippet_id
site_id
site_id
site_id, snippet_id
site_id, snippet_id
+ + + +
Name
TypeResource
Id
+ +## Fields + +The following fields are returned by `SELECT` queries: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (dateTime)
array
string (dateTime)
string
string (dateTime)
+
+ + +Array of SNI Certificates + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string (dateTime)
array
string (dateTime)
string
string (dateTime)
+
+
+ +## Methods + +The following methods are available for this resource: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAccessible byRequired ParamsOptional ParamsDescription
site_id
site_id, domain
site_idcertificate, key, ca_certificatesProvisions or updates a TLS certificate for the site.<br /><br />**Creating a certificate (site has no certificate):**<br />- Omit certificate params to initiate Let's Encrypt provisioning<br />- Provide certificate, key, and ca_certificates to upload a custom certificate<br /><br />**Updating a certificate (site already has a certificate):**<br />- REQUIRES certificate, key, and ca_certificates to replace with a new custom certificate<br />- Use POST /api/v1/sites/{site_id}/ssl/renew to renew an existing Let's Encrypt certificate
+ +## Parameters + +Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDatatypeDescription
string
string
stringPEM-encoded CA certificate chain. Required when updating an existing certificate.
stringPEM-encoded certificate. Required when updating an existing certificate.
stringPEM-encoded private key. Required when updating an existing certificate.
+ +## `SELECT` examples + + + + +OK + +```sql +SELECT +created_at, +domains, +expires_at, +state, +updated_at +FROM netlify.sites.ssl_certificates +WHERE site_id = '{{ site_id }}' -- required +; +``` + + + +Array of SNI Certificates + +```sql +SELECT +created_at, +domains, +expires_at, +state, +updated_at +FROM netlify.sites.ssl_certificates +WHERE site_id = '{{ site_id }}' -- required +AND domain = '{{ domain }}' -- required +; +``` + + + + +## `INSERT` examples + + + + +Provisions or updates a TLS certificate for the site.<br /><br />**Creating a certificate (site has no certificate):**<br />- Omit certificate params to initiate Let's Encrypt provisioning<br />- Provide certificate, key, and ca_certificates to upload a custom certificate<br /><br />**Updating a certificate (site already has a certificate):**<br />- REQUIRES certificate, key, and ca_certificates to replace with a new custom certificate<br />- Use POST /api/v1/sites/{site_id}/ssl/renew to renew an existing Let's Encrypt certificate + +```sql +INSERT INTO netlify.sites.ssl_certificates ( +site_id, +certificate, +key, +ca_certificates +) +SELECT +'{{ site_id }}', +'{{ certificate }}', +'{{ key }}', +'{{ ca_certificates }}' +RETURNING +created_at, +domains, +expires_at, +state, +updated_at +; +``` + + + +{`# Description fields are for documentation purposes +- name: ssl_certificates + props: + - name: site_id + value: "{{ site_id }}" + description: Required parameter for the ssl_certificates resource. + - name: certificate + value: "{{ certificate }}" + description: PEM-encoded certificate. Required when updating an existing certificate. + description: PEM-encoded certificate. Required when updating an existing certificate. + - name: key + value: "{{ key }}" + description: PEM-encoded private key. Required when updating an existing certificate. + description: PEM-encoded private key. Required when updating an existing certificate. + - name: ca_certificates + value: "{{ ca_certificates }}" + description: PEM-encoded CA certificate chain. Required when updating an existing certificate. + description: PEM-encoded CA certificate chain. Required when updating an existing certificate. +`} + + + diff --git a/website/docs/services/sni_certificate/index.md b/website/docs/services/sni_certificate/index.md deleted file mode 100644 index cb72319..0000000 --- a/website/docs/services/sni_certificate/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: sni_certificate -hide_title: false -hide_table_of_contents: false -keywords: - - sni_certificate - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -sni_certificate service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources -
- -
- -
-
\ No newline at end of file diff --git a/website/docs/services/sni_certificate/sites_ssl/index.md b/website/docs/services/sni_certificate/sites_ssl/index.md deleted file mode 100644 index 010be34..0000000 --- a/website/docs/services/sni_certificate/sites_ssl/index.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: sites_ssl -hide_title: false -hide_table_of_contents: false -keywords: - - sites_ssl - - sni_certificate - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a sites_ssl resource. - -## Overview - - - - -
Namesites_ssl
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
site_id
site_idcertificate, key, ca_certificates
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
string
- -## Lifecycle Methods - - - - -OK - -```sql -EXEC netlify.sni_certificate.sites_ssl.showSiteTLSCertificate -@site_id='{{ site_id }}' --required -; -``` - - - -OK - -```sql -EXEC netlify.sni_certificate.sites_ssl.provisionSiteTLSCertificate -@site_id='{{ site_id }}' --required, -@certificate='{{ certificate }}', -@key='{{ key }}', -@ca_certificates='{{ ca_certificates }}' -; -``` - - diff --git a/website/docs/services/snippet/index.md b/website/docs/services/snippet/index.md deleted file mode 100644 index 76c49eb..0000000 --- a/website/docs/services/snippet/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: snippet -hide_title: false -hide_table_of_contents: false -keywords: - - snippet - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -snippet service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources -
- -
- -
-
\ No newline at end of file diff --git a/website/docs/services/split_test/sites_traffic_splits_publish/index.md b/website/docs/services/split_test/sites_traffic_splits_publish/index.md deleted file mode 100644 index a254e7d..0000000 --- a/website/docs/services/split_test/sites_traffic_splits_publish/index.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: sites_traffic_splits_publish -hide_title: false -hide_table_of_contents: false -keywords: - - sites_traffic_splits_publish - - split_test - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a sites_traffic_splits_publish resource. - -## Overview - - - - -
Namesites_traffic_splits_publish
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, split_test_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
- -## Lifecycle Methods - - - - -enable - -```sql -EXEC netlify.split_test.sites_traffic_splits_publish.enableSplitTest -@site_id='{{ site_id }}' --required, -@split_test_id='{{ split_test_id }}' --required -; -``` - - diff --git a/website/docs/services/split_test/sites_traffic_splits_unpublish/index.md b/website/docs/services/split_test/sites_traffic_splits_unpublish/index.md deleted file mode 100644 index 60f5e1b..0000000 --- a/website/docs/services/split_test/sites_traffic_splits_unpublish/index.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: sites_traffic_splits_unpublish -hide_title: false -hide_table_of_contents: false -keywords: - - sites_traffic_splits_unpublish - - split_test - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a sites_traffic_splits_unpublish resource. - -## Overview - - - - -
Namesites_traffic_splits_unpublish
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - -`SELECT` not supported for this resource, use `SHOW METHODS` to view available operations for the resource. - - -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
site_id, split_test_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
- -## Lifecycle Methods - - - - -disabled - -```sql -EXEC netlify.split_test.sites_traffic_splits_unpublish.disableSplitTest -@site_id='{{ site_id }}' --required, -@split_test_id='{{ split_test_id }}' --required -; -``` - - diff --git a/website/docs/services/audit_log/index.md b/website/docs/services/split_tests/index.md similarity index 78% rename from website/docs/services/audit_log/index.md rename to website/docs/services/split_tests/index.md index 415e418..3679325 100644 --- a/website/docs/services/audit_log/index.md +++ b/website/docs/services/split_tests/index.md @@ -1,9 +1,9 @@ --- -title: audit_log +title: split_tests hide_title: false hide_table_of_contents: false keywords: - - audit_log + - split_tests - netlify - stackql - infrastructure-as-code @@ -14,7 +14,7 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -audit_log service documentation. +split_tests service documentation. :::info[Service Summary] @@ -25,7 +25,7 @@ total resources: __1__ ## Resources
diff --git a/website/docs/services/split_test/sites_traffic_splits/index.md b/website/docs/services/split_tests/split_tests/index.md similarity index 65% rename from website/docs/services/split_test/sites_traffic_splits/index.md rename to website/docs/services/split_tests/split_tests/index.md index cb495d0..3cd3442 100644 --- a/website/docs/services/split_test/sites_traffic_splits/index.md +++ b/website/docs/services/split_tests/split_tests/index.md @@ -1,10 +1,10 @@ --- -title: sites_traffic_splits +title: split_tests hide_title: false hide_table_of_contents: false keywords: - - sites_traffic_splits - - split_test + - split_tests + - split_tests - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a sites_traffic_splits resource. +Creates, updates, deletes, gets or lists a split_tests resource. ## Overview - + - +
Namesites_traffic_splits
Name
TypeResource
Id
Id
## Fields @@ -32,13 +33,13 @@ Creates, updates, deletes, gets or lists a sites_traffic_splits res The following fields are returned by `SELECT` queries: - + split_test @@ -99,7 +100,7 @@ split_test - + split_tests @@ -178,28 +179,42 @@ The following methods are available for this resource: - + site_id, split_test_id - + site_id - + site_id - + + + site_id, split_test_id + + + + + + + site_id, split_test_id + + + + + site_id, split_test_id @@ -237,13 +252,13 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + split_test @@ -258,13 +273,13 @@ created_at, path, unpublished_at, updated_at -FROM netlify.split_test.sites_traffic_splits +FROM netlify.split_tests.split_tests WHERE site_id = '{{ site_id }}' -- required AND split_test_id = '{{ split_test_id }}' -- required ; ``` - + split_tests @@ -279,7 +294,7 @@ created_at, path, unpublished_at, updated_at -FROM netlify.split_test.sites_traffic_splits +FROM netlify.split_tests.split_tests WHERE site_id = '{{ site_id }}' -- required ; ``` @@ -290,19 +305,19 @@ WHERE site_id = '{{ site_id }}' -- required ## `INSERT` examples - + No description available. ```sql -INSERT INTO netlify.split_test.sites_traffic_splits ( -data__branch_tests, +INSERT INTO netlify.split_tests.split_tests ( +branch_tests, site_id ) SELECT @@ -323,15 +338,51 @@ updated_at -```yaml -# Description fields are for documentation purposes -- name: sites_traffic_splits +{`# Description fields are for documentation purposes +- name: split_tests props: - name: site_id - value: string - description: Required parameter for the sites_traffic_splits resource. + value: "{{ site_id }}" + description: Required parameter for the split_tests resource. - name: branch_tests - value: object + value: "{{ branch_tests }}" + description: | + (opaque JSON object) +`} + + + + + +## `REPLACE` examples + + + + +No description available. + +```sql +REPLACE netlify.split_tests.split_tests +SET +branch_tests = '{{ branch_tests }}' +WHERE +site_id = '{{ site_id }}' --required +AND split_test_id = '{{ split_test_id }}' --required +RETURNING +id, +name, +site_id, +active, +branches, +created_at, +path, +unpublished_at, +updated_at; ``` @@ -340,23 +391,31 @@ updated_at ## Lifecycle Methods - + + +enable + +```sql +EXEC netlify.split_tests.split_tests.publish +@site_id='{{ site_id }}' --required, +@split_test_id='{{ split_test_id }}' --required +; +``` + + -Created +disabled ```sql -EXEC netlify.split_test.sites_traffic_splits.updateSplitTest +EXEC netlify.split_tests.split_tests.unpublish @site_id='{{ site_id }}' --required, -@split_test_id='{{ split_test_id }}' --required -@@json= -'{ -"branch_tests": "{{ branch_tests }}" -}' +@split_test_id='{{ split_test_id }}' --required ; ``` diff --git a/website/docs/services/submission/forms_submissions/index.md b/website/docs/services/submission/forms_submissions/index.md deleted file mode 100644 index bb85cbf..0000000 --- a/website/docs/services/submission/forms_submissions/index.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -title: forms_submissions -hide_title: false -hide_table_of_contents: false -keywords: - - forms_submissions - - submission - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a forms_submissions resource. - -## Overview - - - - -
Nameforms_submissions
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
string
string
string
string (dateTime)
object
string
integer (int32)
string
string
-
-
- -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
form_idpage, per_page
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
integer (int32)
integer (int32)
- -## `SELECT` examples - - - - -OK - -```sql -SELECT -id, -name, -first_name, -last_name, -body, -company, -created_at, -data, -email, -number, -site_url, -summary -FROM netlify.submission.forms_submissions -WHERE form_id = '{{ form_id }}' -- required -AND page = '{{ page }}' -AND per_page = '{{ per_page }}' -; -``` - - diff --git a/website/docs/services/submission/sites_submissions/index.md b/website/docs/services/submission/sites_submissions/index.md deleted file mode 100644 index bde96c6..0000000 --- a/website/docs/services/submission/sites_submissions/index.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -title: sites_submissions -hide_title: false -hide_table_of_contents: false -keywords: - - sites_submissions - - submission - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a sites_submissions resource. - -## Overview - - - - -
Namesites_submissions
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
string
string
string
string (dateTime)
object
string
integer (int32)
string
string
-
-
- -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
site_idpage, per_page
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
integer (int32)
integer (int32)
- -## `SELECT` examples - - - - -OK - -```sql -SELECT -id, -name, -first_name, -last_name, -body, -company, -created_at, -data, -email, -number, -site_url, -summary -FROM netlify.submission.sites_submissions -WHERE site_id = '{{ site_id }}' -- required -AND page = '{{ page }}' -AND per_page = '{{ per_page }}' -; -``` - - diff --git a/website/docs/services/submission/submissions/index.md b/website/docs/services/submission/submissions/index.md deleted file mode 100644 index af18505..0000000 --- a/website/docs/services/submission/submissions/index.md +++ /dev/null @@ -1,221 +0,0 @@ ---- -title: submissions -hide_title: false -hide_table_of_contents: false -keywords: - - submissions - - submission - - netlify - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Creates, updates, deletes, gets or lists a submissions resource. - -## Overview - - - - -
Namesubmissions
TypeResource
Id
- -## Fields - -The following fields are returned by `SELECT` queries: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
string
string
string
string
string
string (dateTime)
object
string
integer (int32)
string
string
-
-
- -## Methods - -The following methods are available for this resource: - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameAccessible byRequired ParamsOptional ParamsDescription
submission_id
submission_id
- -## Parameters - -Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](#methods) section to see which parameters are required or optional for each operation. - - - - - - - - - - - - - - - - -
NameDatatypeDescription
string
- -## `SELECT` examples - - - - -OK - -```sql -SELECT -id, -name, -first_name, -last_name, -body, -company, -created_at, -data, -email, -number, -site_url, -summary -FROM netlify.submission.submissions -WHERE submission_id = '{{ submission_id }}' -- required -; -``` - - - - -## `DELETE` examples - - - - -No description available. - -```sql -DELETE FROM netlify.submission.submissions -WHERE submission_id = '{{ submission_id }}' --required -; -``` - - diff --git a/website/docs/services/ticket/index.md b/website/docs/services/ticket/index.md deleted file mode 100644 index 4ccbb92..0000000 --- a/website/docs/services/ticket/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: ticket -hide_title: false -hide_table_of_contents: false -keywords: - - ticket - - netlify - - stackql - - infrastructure-as-code - - configuration-as-data - - cloud inventory -description: Query, deploy and manage netlify resources using SQL -custom_edit_url: null -image: /img/stackql-netlify-provider-featured-image.png ---- - -ticket service documentation. - -:::info[Service Summary] - -total resources: __1__ - -::: - -## Resources -
- -
- -
-
\ No newline at end of file diff --git a/website/docs/services/user/index.md b/website/docs/services/users/index.md similarity index 83% rename from website/docs/services/user/index.md rename to website/docs/services/users/index.md index 35fab8d..f36b95e 100644 --- a/website/docs/services/user/index.md +++ b/website/docs/services/users/index.md @@ -1,9 +1,9 @@ --- -title: user +title: users hide_title: false hide_table_of_contents: false keywords: - - user + - users - netlify - stackql - infrastructure-as-code @@ -14,7 +14,7 @@ custom_edit_url: null image: /img/stackql-netlify-provider-featured-image.png --- -user service documentation. +users service documentation. :::info[Service Summary] @@ -25,7 +25,7 @@ total resources: __1__ ## Resources
diff --git a/website/docs/services/user/user/index.md b/website/docs/services/users/users/index.md similarity index 82% rename from website/docs/services/user/user/index.md rename to website/docs/services/users/users/index.md index 816b7ae..7b9edca 100644 --- a/website/docs/services/user/user/index.md +++ b/website/docs/services/users/users/index.md @@ -1,10 +1,10 @@ --- -title: user +title: users hide_title: false hide_table_of_contents: false keywords: - - user - - user + - users + - users - netlify - infrastructure-as-code - configuration-as-data @@ -15,16 +15,17 @@ image: /img/stackql-netlify-provider-featured-image.png --- import CopyableCode from '@site/src/components/CopyableCode/CopyableCode'; +import CodeBlock from '@theme/CodeBlock'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Creates, updates, deletes, gets or lists a user resource. +Creates, updates, deletes, gets or lists a users resource. ## Overview - + - +
Nameuser
Name
TypeResource
Id
Id
## Fields @@ -32,12 +33,12 @@ Creates, updates, deletes, gets or lists a user resource. The following fields are returned by `SELECT` queries: - + @@ -124,7 +125,7 @@ The following methods are available for this resource: - + @@ -152,12 +153,12 @@ Parameters can be passed in the `WHERE` clause of a query. Check the [Methods](# ## `SELECT` examples - + OK @@ -174,7 +175,7 @@ login_providers, onboarding_progress, site_count, uid -FROM netlify.user.user +FROM netlify.users.users ; ``` diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 9a85219..745b3f4 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -1,232 +1,41 @@ -// @ts-check -// `@type` JSDoc annotations allow editor autocompletion and type checking -// (when paired with `@ts-check`). -// There are various equivalent ways to declare your Docusaurus config. -// See: https://docusaurus.io/docs/api/docusaurus-config - import {themes as prismThemes} from 'prism-react-renderer'; +import { createConfig } from './.shared-config/index.js'; +import { providerName, providerTitle } from './provider.js'; + +const config = createConfig({ + providerName, + providerTitle, + prismThemes, + overrides: { + // Docusaurus Faster (rspack + swc, via @docusaurus/faster) - not + // strictly required at this site's page count, but kept for build + // speed and consistency with the other provider microsites. + future: { + v4: true, + faster: true, + }, + }, +}); + +// Use the locally vendored registry-branded logos (STACKQL>> | REGISTRY, +// matching the awscc microsite) instead of the shared config's hotlinked +// main-site wordmark - self-contained assets, no cross-origin fetch. +// global.css swaps in the -mobile variants below 996px. +const registryLogo = { + alt: 'StackQL', + href: '/', + src: 'img/stackql-registry-logo.svg', + srcDark: 'img/stackql-registry-logo-white.svg', +}; +config.themeConfig.navbar.logo = { ...registryLogo }; +config.themeConfig.footer.logo = { ...registryLogo }; -// Provider configuration - change these for different providers -const providerName = "netlify"; -const providerTitle = "Netlify"; - -const providerDropDownListItems = [ - { - label: 'AWS', - to: '/providers/aws', - }, - { - label: 'Azure', - to: '/providers/azure', - }, - { - label: 'Google', - to: '/providers/google', - }, - { - label: 'Databricks', - to: '/providers/databricks', - }, - { - label: 'Snowflake', - to: '/providers/snowflake', - }, - { - label: 'Confluent', - to: '/providers/confluent', - }, - { - label: 'Okta', - to: '/providers/okta', - }, - { - label: 'GitHub', - to: '/providers/github', - }, - { - label: 'OpenAI', - to: '/providers/openai', - }, - { - label: '... More', - to: '/providers', - }, -]; - -const footerStackQLItems = [ - { - label: 'Documentation', - to: '/stackqldocs', - }, - { - label: 'Install', - to: '/install', - }, - { - label: 'Contact us', - to: '/contact-us', - }, -]; - -const footerMoreItems = [ - { - label: 'Providers', - to: '/providers', - }, - { - label: 'stackql-deploy', - to: '/stackql-deploy', - }, - { - label: 'Blog', - to: '/blog', - }, - { - label: 'Tutorials', - to: '/tutorials', - }, -]; - -// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) - -/** @type {import('@docusaurus/types').Config} */ -const config = { - title: `StackQL ${providerTitle} Provider`, - tagline: `Query and Provision ${providerTitle} Resources using StackQL`, - favicon: 'img/favicon.ico', - staticDirectories: ['static'], - // Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future - future: { - v4: true, // Improve compatibility with the upcoming Docusaurus v4 - }, - - // Set the production url of your site here - url: `https://${providerName}-provider.stackql.io`, - // Set the // pathname under which your site is served - // For GitHub pages deployment, it is often '//' - baseUrl: '/', - - // GitHub pages deployment config. - // If you aren't using GitHub pages, you don't need these. - organizationName: 'stackql', // Usually your GitHub org/user name. - projectName: `stackql-provider-${providerName}`, // Usually your repo name. - - onBrokenLinks: 'warn', - onBrokenMarkdownLinks: 'warn', - - // Even if you don't use internationalization, you can use this field to set - // useful metadata like html lang. For example, if your site is Chinese, you - // may want to replace "en" with "zh-Hans". - i18n: { - defaultLocale: 'en', - locales: ['en'], - }, - - presets: [ - [ - 'classic', - /** @type {import('@docusaurus/preset-classic').Options} */ - ({ - docs: { - sidebarPath: './sidebars.js', - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - // editUrl: 'https://github.com/stackql/stackql-deploy/tree/main/website/', - routeBasePath: '/', // Set the docs to be the root of the site - }, - theme: { - customCss: './src/css/custom.css', - }, - }), - ], - ], +// Date-stamp every doc page ("Last updated on ..."). Timestamps come from +// git history, so the regenerated docs tree must be committed after each +// provider refresh for pages to carry the refresh date (the deploy workflow +// checks out with fetch-depth: 0 for this). +config.presets[0][1].docs.showLastUpdateTime = true; - themeConfig: - /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ - ({ - // Replace with your project's social card - image: 'img/stackql-cover.png', - navbar: { - logo: { - alt: 'StackQL Registry', - href: '/providers', - src: 'img/stackql-registry-logo.svg', - srcDark: 'img/stackql-registry-logo-white.svg', - }, - items: [ - { - to: '/install', - position: 'left', - label: 'Install', - }, - { - to: '/stackql-deploy', - position: 'left', - label: 'stackql-deploy', - }, - { - to: '/providers', - type: 'dropdown', - label: 'Providers', - position: 'left', - items: providerDropDownListItems, - }, - { - type: 'dropdown', - label: 'More', - position: 'left', - items: [ - { - to: '/stackqldocs', - label: 'StackQL Docs', - }, - { - to: '/blog', - label: 'Blog', - }, - { - to: '/tutorials', - label: 'Tutorials', - }, - ], - }, - { - href: 'https://github.com/stackql/stackql', - position: 'right', - className: 'header-github-link', - 'aria-label': 'GitHub repository', - }, - ], - }, - footer: { - style: 'dark', - logo: { - alt: 'StackQL', - href: '/providers', - src: 'img/stackql-registry-logo.svg', - srcDark: 'img/stackql-registry-logo-white.svg', - }, - links: [ - { - title: 'StackQL', - items: footerStackQLItems, - }, - { - title: 'More', - items: footerMoreItems, - }, - ], - copyright: `© ${new Date().getFullYear()} StackQL Studios`, - }, - colorMode: { - // using user system preferences, instead of the hardcoded defaultMode - respectPrefersColorScheme: true, - }, - prism: { - theme: prismThemes.nightOwl, - darkTheme: prismThemes.dracula, - }, - }), -}; +config.projectName = 'stackql-provider-netlify'; export default config; diff --git a/website/package.json b/website/package.json index 8f57f6c..3c098a2 100644 --- a/website/package.json +++ b/website/package.json @@ -4,6 +4,10 @@ "private": true, "scripts": { "docusaurus": "docusaurus", + "vendor-config": "rimraf .shared-config && git clone --depth 1 --branch main https://github.com/stackql/docusaurus-config.git .shared-config", + "prestart": "yarn vendor-config", + "prebuild": "yarn vendor-config", + "sanitize-docs": "node scripts/sanitize-docs.mjs", "start": "docusaurus start", "build": "docusaurus build", "swizzle": "docusaurus swizzle", @@ -14,8 +18,11 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/preset-classic": "3.8.1", + "@docusaurus/core": "^3.10.2", + "@docusaurus/faster": "^3.10.2", + "@docusaurus/plugin-ideal-image": "^3.10.2", + "@docusaurus/preset-classic": "^3.10.2", + "@docusaurus/theme-mermaid": "^3.10.2", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", "@iconify/react": "^6.0.0", @@ -29,8 +36,23 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.8.1", - "@docusaurus/types": "3.8.1" + "@docusaurus/module-type-aliases": "^3.10.2", + "@docusaurus/types": "^3.10.2", + "rimraf": "^6.0.1" + }, + "overrides": { + "rimraf": "^6.0.1", + "glob": "^13.0.0", + "memfs": "^4.17.0", + "uuid": "^11.0.0", + "@ungap/structured-clone": "^1.3.1" + }, + "resolutions": { + "rimraf": "^6.0.1", + "glob": "^13.0.0", + "memfs": "^4.17.0", + "uuid": "^11.0.0", + "@ungap/structured-clone": "^1.3.1" }, "browserslist": { "production": [ @@ -45,7 +67,7 @@ ] }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "license": "MIT" } diff --git a/website/provider.js b/website/provider.js new file mode 100644 index 0000000..d7c610f --- /dev/null +++ b/website/provider.js @@ -0,0 +1,2 @@ +export const providerName = 'netlify'; +export const providerTitle = 'Netlify'; diff --git a/website/scripts/sanitize-docs.mjs b/website/scripts/sanitize-docs.mjs new file mode 100644 index 0000000..a512ac8 --- /dev/null +++ b/website/scripts/sanitize-docs.mjs @@ -0,0 +1,190 @@ +#!/usr/bin/env node +// Post-docgen sanitizer for the generated provider docs. +// +// Upstream descriptions can carry literal angle-bracket placeholders +// (), stray unpaired HTML and braces ({...}). MDX v3 parses any raw +// as JSX and fails the build on the first mismatch; braces parse as +// JSX expressions with the same failure mode. +// +// The doc generator's own structure is line-shaped: one `` +// cell per line, and description text ONLY ever appears as td inner +// content. So the deterministic fix: inside every description cell, +// escape ALL angle brackets and braces (protecting the stage-1 +// backtick-wrapped `` tokens as spans); leave +// every other line - tables, Tabs/TabItem/CodeBlock, CopyableCode, +// index link lists - byte-for-byte untouched. +// +// Run after `npm run generate-docs`, before building the website. + +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const docsDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'docs'); + +const TD_LINE = /^(\s* per line). + const m = TD_LINE.exec(line); + if (m) { + const inner = m[2]; + if (/^]*\/>$/.test(inner)) continue; + // Structural link cells in the Methods/Parameters tables: one or + // more comma-separated anchor-wrapped tokens + // ( or + // x). Generated structure, + // not description text - must stay verbatim. + if (LINK_TOKEN_CELL.test(inner)) continue; + const codeCell = /^([^<>]*)<\/code>$/.exec(inner); + if (codeCell) { + // Type/pattern cells: regex patterns form accidental markdown + // links ("[...](...)" inside character classes) and MDX brace + // expressions ({4,7} quantifiers). Neutralise both; entities + // decode inside the element so rendering is unchanged. + const escaped = codeCell[1] + .replace(/\[/g, '[') + .replace(/\]/g, ']') + .replace(/\{/g, '{') + .replace(/\}/g, '}') + .replace(/:\/\//g, ':​//'); + if (escaped !== codeCell[1]) { + lines[i] = m[1] + '' + escaped + '' + m[3]; + cellsEscaped++; + changed = true; + } + continue; + } + const escaped = escapeDescription(inner); + if (escaped !== inner) { + lines[i] = m[1] + escaped + m[3]; + cellsEscaped++; + changed = true; + } + continue; + } + + // Method-description prose inside blocks (the paragraphs + // between the TabItem opener and the ```sql fence). Prose never + // starts with '<'; anything with raw angle brackets or braces there + // is hostile description content. + if (inTabItemProse && trimmed && !trimmed.startsWith('<') && /[<>{}]/.test(line)) { + const escaped = escapeDescription(line); + if (escaped !== line) { + lines[i] = escaped; + cellsEscaped++; + changed = true; + } + } + } + return { text: lines.join('\n'), changed }; +} + +// Netlify's descriptions link to anchors on its own API reference page +// (e.g. "#tag/environmentVariables/operation/getEnvVars"); resolved against +// the provider docs they are broken anchors, so point them at the reference. +const NETLIFY_API_REF = 'https://open-api.netlify.com/'; +function rewriteUpstreamAnchors(text) { + return text.split('(#tag/').join('(' + NETLIFY_API_REF + '#tag/').split('href="#tag/').join('href="' + NETLIFY_API_REF + '#tag/'); +} + +function walk(dir) { + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const p = path.join(dir, entry.name); + if (entry.isDirectory()) { + walk(p); + } else if (entry.name.endsWith('.md') || entry.name.endsWith('.mdx')) { + const raw = fs.readFileSync(p, 'utf8'); + const before = rewriteUpstreamAnchors(raw); + const { text: after, changed } = sanitize(before, p); + if (changed || before !== raw) { + fs.writeFileSync(p, after); + filesChanged++; + } + } + } +} + +walk(docsDir); +console.log(`sanitize-docs: escaped ${cellsEscaped} description cell(s) across ${filesChanged} file(s)`); diff --git a/website/sidebars.js b/website/sidebars.js index 72e3166..f719984 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -1,42 +1,14 @@ -// @ts-check +import { providerTitle } from './provider.js'; -// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) - -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - - @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} - */ - -import config from './docusaurus.config'; - -const providerTitle = config.title.replace(/^StackQL /, '').replace(/ Provider$/, ''); - - const sidebars = { +const sidebars = { mainSidebar: [ - { - type: 'link', - label: 'All Providers', - href: '/providers', - }, + { type: 'link', label: 'All Providers', href: '/providers' }, { type: 'category', label: `${providerTitle} Provider`, - link: {type: 'doc', id: 'provider-intro'}, - items: [ - { - type: 'autogenerated', - dirName: 'services', - } - ] - }, + link: { type: 'doc', id: 'provider-intro' }, + items: [{ type: 'autogenerated', dirName: 'services' }], + }, ], }; diff --git a/website/src/components/CopyableCode/CopyableCode.js b/website/src/components/CopyableCode/CopyableCode.js index 8115f33..d17969f 100644 --- a/website/src/components/CopyableCode/CopyableCode.js +++ b/website/src/components/CopyableCode/CopyableCode.js @@ -1,29 +1,29 @@ -import React, { useState } from 'react'; -import Clipboard from 'clipboard'; - -const CopyableCode = ({ code }) => { - const [isCopied, setIsCopied] = useState(false); - - const handleCopy = () => { - const clipboard = new Clipboard('.copyable-code', { - text: () => code, - }); - - clipboard.on('success', function() { - setIsCopied(true); - window.setTimeout(() => setIsCopied(false), 2000); - clipboard.destroy(); - }); - }; - - return ( - - - {code} - - {isCopied ? Copied! : null} - - ); -}; - -export default CopyableCode; +import React, { useState } from 'react'; +import Clipboard from 'clipboard'; + +const CopyableCode = ({ code }) => { + const [isCopied, setIsCopied] = useState(false); + + const handleCopy = () => { + const clipboard = new Clipboard('.copyable-code', { + text: () => code, + }); + + clipboard.on('success', function() { + setIsCopied(true); + window.setTimeout(() => setIsCopied(false), 2000); + clipboard.destroy(); + }); + }; + + return ( + + + {code} + + {isCopied ? Copied! : null} + + ); +}; + +export default CopyableCode; diff --git a/website/src/components/SchemaTable/SchemaTable.js b/website/src/components/SchemaTable/SchemaTable.js new file mode 100644 index 0000000..2553353 --- /dev/null +++ b/website/src/components/SchemaTable/SchemaTable.js @@ -0,0 +1,49 @@ +import React, { useState } from 'react'; +import styles from './SchemaTable.module.css'; + +function SchemaRow({ name, type, description, children, depth = 0 }) { + const [expanded, setExpanded] = useState(false); + const hasChildren = children && children.length > 0; + + return ( + <> + + + + + {expanded && children?.map((child, idx) => ( + + ))} + + ); +} + +export default function SchemaTable({ fields }) { + return ( +
...)(.*)(<\/td>\s*)$/; +const LINK_TOKEN = '(?:]*\\/>|[^<>]*<\\/code>)<\\/a>'; +const LINK_TOKEN_CELL = new RegExp(`^${LINK_TOKEN}(?:,\\s*${LINK_TOKEN})*$`); +const BACKTICKED = /`<([A-Za-z][A-Za-z0-9_.:-]*)>`/g; +// Control-char sentinels: cannot occur in generated markdown. +const OPEN = ''; +const CLOSE = ''; + +let filesChanged = 0; +let cellsEscaped = 0; + +function escapeDescription(inner) { + let out = inner.replace(BACKTICKED, (m, name) => OPEN + name + CLOSE); + out = out + .replace(//g, '>') + .replace(/\{/g, '{') + .replace(/\}/g, '}') + // Regex fragments in descriptions ("s3://([^/]+)(/.*)?") read as + // markdown links ("[...](...)") and crash the link resolver. + .replace(/\[/g, '[') + .replace(/\]/g, ']') + // GFM autolinks bare "scheme://..." literals on the DECODED text + // tree (entity escapes cannot evade it) and Docusaurus crashes on + // regex-shaped ones ("https://.+"). A zero-width space inside "://" + // is invisible in rendering but breaks the autolink prefix match. + .replace(/:\/\//g, ':​//'); + out = out.split(OPEN).join('<').split(CLOSE).join('>'); + return out; +} + +// Inside a CodeBlock template literal, a lone backslash before u/x is a JS +// string escape (backslash-u007F evaluates to a DEL byte at build time), and ${ +// starts interpolation. Double the backslash / escape the $ so the source +// text renders verbatim. +// The (?{`...`} spans hold verbatim SQL in a JSX + // template literal. The MDX/HTML escapes applied elsewhere must NOT + // touch these lines, but JS still evaluates the template literal, so + // sequences like backslash-u007F in AWS description text become raw control + // characters in the built HTML. Neutralize JS escape starts (\u, \x) + // and interpolation (${) so the text survives verbatim. + if (inCodeBlock) { + if (/<\/CodeBlock>/.test(line)) inCodeBlock = false; + const esc = escapeTemplateLiteral(line); + if (esc !== line) { lines[i] = esc; changed = true; } + continue; + } + if (//.test(line)) inCodeBlock = true; + const esc = escapeTemplateLiteral(line); + if (esc !== line) { lines[i] = esc; changed = true; } + continue; + } + if (/^/.test(trimmed)) { + inTabItemProse = false; + continue; + } + + // Description table cells (one ...
+ {hasChildren && ( + setExpanded(!expanded)} + > + {expanded ? '▼' : '▶'} + + )} + {name} + {type} +
+ + + + + + + + + {fields.map((field, idx) => ( + + ))} + +
NameDatatypeDescription
+ ); +} \ No newline at end of file diff --git a/website/src/components/SchemaTable/SchemaTable.module.css b/website/src/components/SchemaTable/SchemaTable.module.css new file mode 100644 index 0000000..ed4ef36 --- /dev/null +++ b/website/src/components/SchemaTable/SchemaTable.module.css @@ -0,0 +1,27 @@ +.schemaTable { + width: 100%; + border-collapse: collapse; +} + +.schemaTable th, +.schemaTable td { + border: 1px solid var(--ifm-table-border-color); + padding: 8px 12px; + text-align: left; +} + +.schemaTable th { + background: var(--ifm-table-head-background); +} + +.row:hover { + background: var(--ifm-table-stripe-background); +} + +.expander { + cursor: pointer; + margin-right: 8px; + user-select: none; + color: var(--ifm-color-primary); + font-size: 10px; +} \ No newline at end of file diff --git a/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.js b/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.js new file mode 100644 index 0000000..b252fd7 --- /dev/null +++ b/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.js @@ -0,0 +1,400 @@ +import React, { useState } from 'react'; +import Button from '@mui/material/Button'; +import Menu from '@mui/material/Menu'; +import MenuItem from '@mui/material/MenuItem'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import DownloadIcon from '@mui/icons-material/Download'; +import ContentCopyIcon from '@mui/icons-material/ContentCopy'; +import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; +import {useLocation} from '@docusaurus/router'; +import styles from './StackqlDeployDropdown.module.css'; + +/** + * Collects all DOM elements between a heading and the next

. + */ +function getElementsBetweenHeadings(heading) { + const elements = []; + let el = heading.nextElementSibling; + while (el && el.tagName !== 'H2') { + elements.push(el); + el = el.nextElementSibling; + } + return elements; +} + +/** + * Extracts text from a element, preserving newlines. + * prism-react-renderer wraps each line in a child element (div or span), + * and textContent concatenates them without newlines, so we join manually. + */ +function getCodeText(codeEl) { + if (codeEl.children.length > 0) { + return Array.from(codeEl.children) + .map(line => line.textContent.replace(/\n$/, '')) + .join('\n'); + } + return codeEl.textContent; +} + +/** + * Extracts the text content of a code block from within a set of elements. + * If preferredTab is provided, looks for a tab with that label first. + */ +function extractCodeFromElements(elements, preferredTab) { + if (preferredTab) { + for (const el of elements) { + const tabs = el.querySelectorAll('[role="tab"]'); + const panels = el.querySelectorAll('[role="tabpanel"]'); + for (let i = 0; i < tabs.length; i++) { + const tabLabel = tabs[i].textContent.trim().toLowerCase(); + if (tabLabel === preferredTab.toLowerCase() && panels[i]) { + const codeEl = panels[i].querySelector('pre code'); + if (codeEl) return getCodeText(codeEl); + } + } + } + } + // Fallback: first code block in the section + for (const el of elements) { + const codeEl = el.querySelector('pre code'); + if (codeEl) return getCodeText(codeEl); + } + return null; +} + +/** + * Scans the rendered page DOM for SQL example sections and extracts + * code blocks to build a context-aware stackql-deploy template. + * + * Section heading IDs generated by Docusaurus: + * ## `SELECT` examples -> #select-examples + * ## `INSERT` examples -> #insert-examples + * ## `UPDATE` examples -> #update-examples + * ## `REPLACE` examples -> #replace-examples + * ## `DELETE` examples -> #delete-examples + * ## Lifecycle Methods -> #lifecycle-methods + */ +function extractTemplateFromPage() { + const sections = {}; + + // --- SELECT (prefer "get" tab for a single-resource check) --- + const selectH2 = document.getElementById('select-examples'); + if (selectH2) { + const els = getElementsBetweenHeadings(selectH2); + sections.select = extractCodeFromElements(els, 'get (all properties)') + || extractCodeFromElements(els, 'get') + || extractCodeFromElements(els); + } + + // --- INSERT (prefer "create" tab -- skip "Manifest" yaml tab) --- + const insertH2 = document.getElementById('insert-examples') || document.getElementById('insert-example'); + if (insertH2) { + const els = getElementsBetweenHeadings(insertH2); + sections.insert = extractCodeFromElements(els, 'All Properties') + || extractCodeFromElements(els, 'create') + || extractCodeFromElements(els); + } + + // --- UPDATE --- + const updateH2 = document.getElementById('update-examples') || document.getElementById('update-example'); + if (updateH2) { + const els = getElementsBetweenHeadings(updateH2); + sections.update = extractCodeFromElements(els); + } + + // --- REPLACE --- + const replaceH2 = document.getElementById('replace-examples'); + if (replaceH2) { + const els = getElementsBetweenHeadings(replaceH2); + sections.replace = extractCodeFromElements(els); + } + + // --- DELETE (standalone section) --- + const deleteH2 = document.getElementById('delete-examples') || document.getElementById('delete-example'); + if (deleteH2) { + const els = getElementsBetweenHeadings(deleteH2); + sections.delete = extractCodeFromElements(els); + } + + // --- Lifecycle Methods: look for a "delete" tab if no standalone DELETE --- + if (!sections.delete) { + const lifecycleH2 = document.getElementById('lifecycle-methods'); + if (lifecycleH2) { + const els = getElementsBetweenHeadings(lifecycleH2); + sections.delete = extractCodeFromElements(els, 'delete'); + } + } + + return sections; +} + +/** + * Parses a SELECT SQL string into its components: + * fields - column names from the SELECT list + * table - fully-qualified table reference after FROM + * where - the raw WHERE clause (conditions only, no leading WHERE) + */ +function parseSelectSQL(sql) { + const selectFromMatch = sql.match(/SELECT\s+([\s\S]+?)\s+FROM\s+/i); + const fromMatch = sql.match(/FROM\s+(\S+)/i); + const whereMatch = sql.match(/WHERE\s+([\s\S]+?)(?:\s*;\s*$|$)/i); + + const fields = selectFromMatch + ? selectFromMatch[1] + .split(',') + .map(f => f.trim()) + .filter(f => f && f !== '*') + : []; + + const table = fromMatch ? fromMatch[1] : ''; + const where = whereMatch ? whereMatch[1].trim().replace(/;\s*$/, '').trim() : ''; + + return { fields, table, where }; +} + +// Parses column names from an INSERT INTO ... (...) statement +// and returns the base field names (stripping data__ prefix). +function parseInsertColumns(sql) { + const match = sql.match(/INSERT\s+INTO\s+\S+\s*\(([\s\S]+?)\)/i); + if (!match) return []; + return match[1] + .split(',') + // .map(c => c.trim().replace(/^data__/, '')) + .map(c => c.trim()) + .filter(Boolean); +} + +// Builds an "exists" hint query - a simplified count query using only the +// original WHERE params (required parameters from the page). +function buildExistsQuery(parsed) { + let sql = `SELECT count(*) as count\nFROM ${parsed.table}`; + if (parsed.where) { + const conditions = parsed.where.split(/\s+AND\s+/i).map(c => c.trim()); + sql += `\nWHERE ${conditions.join(' AND\n')}`; + } + sql += '\n;'; + return sql; +} + +// Builds a "statecheck" hint query - a count query where SELECT fields become +// equality checks in the WHERE clause, followed by the original WHERE params. +function buildStatecheckQuery(parsed) { + // Extract condition field names from WHERE clause to avoid duplicates + const whereConditionFields = new Set(); + if (parsed.where) { + parsed.where.split(/\s+AND\s+/i).forEach(c => { + const match = c.trim().match(/^\s*(\w+)\s*=/); + if (match) whereConditionFields.add(match[1].toLowerCase()); + }); + } + + // Filter out fields already in the WHERE clause (e.g., region) + const filteredFields = parsed.fields.filter(f => !whereConditionFields.has(f.toLowerCase())); + const fieldConditions = filteredFields.map(f => `${f} = {{ ${f} }}`); + + // Collect all WHERE conditions + const allConditions = [...fieldConditions]; + if (parsed.where) { + parsed.where.split(/\s+AND\s+/i).forEach(c => allConditions.push(c.trim())); + } + + let sql = `SELECT count(*) as count\nFROM ${parsed.table}`; + if (allConditions.length > 0) { + sql += `\nWHERE \n${allConditions.join(' AND\n')}`; + } + sql += '\n;'; + return sql; +} + +/** + * Builds the stackql-deploy IQL template from extracted sections. + * Only includes anchors for operations that actually exist on the page. + */ +function buildTemplate(sections) { + const parts = []; + let parsed = null; + + if (sections.select) { + parsed = parseSelectSQL(sections.select); + parts.push(`/*+ exists */\n${buildExistsQuery(parsed)}`); + } + + if (sections.insert) { + parts.push(sections.insert); + } + + if (sections.update) { + parts.push(sections.update); + } else if (sections.replace) { + parts.push(sections.replace); + } + + if (parsed) { + // If INSERT exists, narrow to mutable fields only (skip created_at, etc.) + let mutableParsed = parsed; + if (sections.insert) { + const insertColSet = new Set(parseInsertColumns(sections.insert)); + const mutableFields = parsed.fields.filter(f => insertColSet.has(f)); + if (mutableFields.length > 0) { + mutableParsed = { ...parsed, fields: mutableFields }; + } + } + + parts.push(`/*+ statecheck, retries=5, retry_delay=10 */\n${buildStatecheckQuery(mutableParsed)}`); + + // Use all GET fields minus region for exports + const exportFields = parsed.fields.filter(f => f.toLowerCase() !== 'region'); + let exportsSql = `SELECT\n${exportFields.join(',\n')}\nFROM ${parsed.table}`; + if (parsed.where) { + const conditions = parsed.where.split(/\s+AND\s+/i).map(c => c.trim()); + exportsSql += `\nWHERE ${conditions.join(' AND\n')}`; + } + exportsSql += ';'; + parts.push(`/*+ exports */\n${exportsSql}`); + } + + if (sections.delete) { + parts.push(sections.delete); + } + + return parts.join('\n\n'); +} + +function getResourceName(pathname) { + const match = pathname.match(/\/services\/[^/]+\/([^/]+)/); + return match ? match[1] : null; +} + +export default function StackqlDeployDropdown() { + const [anchorEl, setAnchorEl] = useState(null); + const [copied, setCopied] = useState(false); + const open = Boolean(anchorEl); + const location = useLocation(); + + const resourceName = getResourceName(location.pathname); + + // Only render on resource pages (URL: /services/{service}/{resource}) + if (!resourceName) return null; + + const filename = `${resourceName}.iql`; + + function getTemplate() { + const sections = extractTemplateFromPage(); + return buildTemplate(sections); + } + + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + const handleDownload = () => { + const template = getTemplate(); + if (!template) { + handleClose(); + return; + } + const blob = new Blob([template], { type: 'text/plain' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + handleClose(); + }; + + const handleCopy = async () => { + const template = getTemplate(); + if (!template) { + handleClose(); + return; + } + try { + await navigator.clipboard.writeText(template); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } catch { + const textarea = document.createElement('textarea'); + textarea.value = template; + document.body.appendChild(textarea); + textarea.select(); + document.execCommand('copy'); + document.body.removeChild(textarea); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } + handleClose(); + }; + + return ( +
+ + + + + + + + Download + + + + + + + + {copied ? 'Copied!' : 'Copy'} + + + +
+ ); +} diff --git a/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.module.css b/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.module.css new file mode 100644 index 0000000..cdb453c --- /dev/null +++ b/website/src/components/StackqlDeployDropdown/StackqlDeployDropdown.module.css @@ -0,0 +1,12 @@ +/* Only show on md+ viewports (Docusaurus default breakpoint: 996px) */ +.dropdownWrapper { + display: none; + flex-shrink: 0; +} + +@media screen and (min-width: 997px) { + .dropdownWrapper { + display: flex; + align-items: center; + } +} diff --git a/website/src/css/custom.css b/website/src/css/global.css similarity index 89% rename from website/src/css/custom.css rename to website/src/css/global.css index ce0b531..3e50218 100644 --- a/website/src/css/custom.css +++ b/website/src/css/global.css @@ -256,4 +256,32 @@ div:has(> .vhsImage) { .providerDocColumn { width: 100%; } - } \ No newline at end of file + } + +/* +* breadcrumbs with actions (stackql-deploy dropdown) +*/ +.breadcrumbs-with-actions { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: nowrap; +} + +.breadcrumbs-with-actions nav { + flex: 1; + min-width: 0; +} + +/* +* registry logo: swap to the narrower -mobile mark below the Docusaurus +* mobile breakpoint (996px), per theme +*/ +@media (max-width: 996px) { + .navbar__logo img[src$='stackql-registry-logo.svg'] { + content: url('/img/stackql-registry-logo-mobile.svg'); + } + .navbar__logo img[src$='stackql-registry-logo-white.svg'] { + content: url('/img/stackql-registry-logo-white-mobile.svg'); + } +} \ No newline at end of file diff --git a/website/src/pages/blog.js b/website/src/pages/blog.js deleted file mode 100644 index e435012..0000000 --- a/website/src/pages/blog.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Blog() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/contact-us.js b/website/src/pages/contact-us.js deleted file mode 100644 index b6850d8..0000000 --- a/website/src/pages/contact-us.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function ConactUs() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/install.js b/website/src/pages/install.js deleted file mode 100644 index 341a4bb..0000000 --- a/website/src/pages/install.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Install() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/providers/aws.js b/website/src/pages/providers/aws.js deleted file mode 100644 index 780099a..0000000 --- a/website/src/pages/providers/aws.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Registry() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/providers/azure.js b/website/src/pages/providers/azure.js deleted file mode 100644 index 467f77a..0000000 --- a/website/src/pages/providers/azure.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Registry() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/providers/confluent.js b/website/src/pages/providers/confluent.js deleted file mode 100644 index e886aaf..0000000 --- a/website/src/pages/providers/confluent.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Registry() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/providers/databricks.js b/website/src/pages/providers/databricks.js deleted file mode 100644 index a04b603..0000000 --- a/website/src/pages/providers/databricks.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Registry() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/providers/github.js b/website/src/pages/providers/github.js deleted file mode 100644 index b425c6c..0000000 --- a/website/src/pages/providers/github.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Registry() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/providers/google.js b/website/src/pages/providers/google.js deleted file mode 100644 index 01fe8b7..0000000 --- a/website/src/pages/providers/google.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Registry() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/providers/index.js b/website/src/pages/providers/index.js deleted file mode 100644 index 9afaa02..0000000 --- a/website/src/pages/providers/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Providers() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/providers/okta.js b/website/src/pages/providers/okta.js deleted file mode 100644 index cdddc72..0000000 --- a/website/src/pages/providers/okta.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Registry() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/providers/openai.js b/website/src/pages/providers/openai.js deleted file mode 100644 index 9884c84..0000000 --- a/website/src/pages/providers/openai.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Registry() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/providers/snowflake.js b/website/src/pages/providers/snowflake.js deleted file mode 100644 index 7b3ec43..0000000 --- a/website/src/pages/providers/snowflake.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Registry() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/stackql-deploy.js b/website/src/pages/stackql-deploy.js deleted file mode 100644 index 95e18b3..0000000 --- a/website/src/pages/stackql-deploy.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Deploy() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/stackqldocs.js b/website/src/pages/stackqldocs.js deleted file mode 100644 index 7182d93..0000000 --- a/website/src/pages/stackqldocs.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function StackQLDocs() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/tutorials.js b/website/src/pages/tutorials.js deleted file mode 100644 index 2bb5f07..0000000 --- a/website/src/pages/tutorials.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Tutorials() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/theme/DocBreadcrumbs/index.js b/website/src/theme/DocBreadcrumbs/index.js new file mode 100644 index 0000000..2c5c7cf --- /dev/null +++ b/website/src/theme/DocBreadcrumbs/index.js @@ -0,0 +1,12 @@ +import React from 'react'; +import DocBreadcrumbs from '@theme-original/DocBreadcrumbs'; +import StackqlDeployDropdown from '@site/src/components/StackqlDeployDropdown/StackqlDeployDropdown'; + +export default function DocBreadcrumbsWrapper(props) { + return ( +
+ + +
+ ); +} diff --git a/website/src/theme/Footer/index.tsx b/website/src/theme/Footer/index.tsx index 99ba9d5..eb3d03a 100644 --- a/website/src/theme/Footer/index.tsx +++ b/website/src/theme/Footer/index.tsx @@ -1,262 +1,262 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import React from 'react'; -import clsx from 'clsx'; - -import Link from '@docusaurus/Link'; -import {FooterLinkItem, useThemeConfig} from '@docusaurus/theme-common'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import isInternalUrl from '@docusaurus/isInternalUrl'; -import styles from './styles.module.css'; -import ThemedImage, {Props as ThemedImageProps} from '@theme/ThemedImage'; -import IconExternalLink from '@theme/Icon/ExternalLink'; -import { IconButton } from '@mui/material'; -import { useColorMode } from '@docusaurus/theme-common'; - -import { Icon } from '@iconify/react'; - -// add for responsive logo image -import { useWindowSize } from '@docusaurus/theme-common'; - -// Custom styles to fix the spacing issue -const socialIconsContainerStyle: React.CSSProperties = { - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - flexWrap: 'wrap', // Allow wrapping on small screens - margin: '16px 0', -}; - -const iconButtonStyle = { - padding: '12px', // Ensure buttons have enough clickable area -}; - -function FooterLink({ - to, - href, - label, - prependBaseUrlToHref, - ...props -}: FooterLinkItem) { - const toUrl = useBaseUrl(to); - const normalizedHref = useBaseUrl(href, {forcePrependBaseUrl: true}); - - return ( - - {href && !isInternalUrl(href) ? ( - - {label} - - - ) : ( - label - )} - - ); -} - -const FooterLogo = ({ - sources, - alt, - width, - height, - logo, -}: Pick & { logo: any }) => { - // Get window width for responsiveness - const windowSize = useWindowSize(); - - // Set threshold for mobile view (e.g., 768px) - const isMobile = windowSize === 'mobile' ? true : false; - - const getMobileLogoPath = (path: string) => path?.replace('.svg', '-mobile.svg'); - - // Choose appropriate image sources based on screen size - // const responsiveSources = { - // light: useBaseUrl(isMobile ? getMobileLogoPath(logo.src) : logo.src), - // dark: useBaseUrl(isMobile ? getMobileLogoPath(logo.srcDark || logo.src) : (logo.srcDark || logo.src)), - // }; - const responsiveSources = { - light: useBaseUrl(isMobile ? getMobileLogoPath(logo?.src) : logo?.src), - dark: useBaseUrl(isMobile ? getMobileLogoPath(logo?.srcDark || logo?.src) : (logo?.srcDark || logo?.src)), - }; - - return ( - - ); -} - -function Footer(): JSX.Element | null { - const socialLinks = { - linkedin: "https://www.linkedin.com/company/stackql", - twitter: "https://twitter.com/stackql", - github: "https://github.com/stackql", - discord: "https://discord.com/invite/xVXZ9d5NxN", - slack: "https://join.slack.com/t/stackqlcommunity/shared_invite/zt-1cbdq9s5v-CkY65IMAesCgFqjN6FU6hg", - }; - - const {colorMode} = useColorMode(); - - const {footer} = useThemeConfig(); - - const {copyright, links = [], logo = { src: '' }} = footer || {}; - const sources = { - light: useBaseUrl(logo.src), - dark: useBaseUrl(logo.srcDark || logo.src), - }; - - if (!footer) { - return null; - } - - return ( -
-
- {links && links.length > 0 && ( -
-
- {logo && (logo.src || logo.srcDark) && ( -
- {logo.href ? ( - - - - ) : ( - - )} -
- )} -

- A new approach to querying and
- provisioning cloud services. -

-
- {links.map((linkItem, i) => ( -
- {linkItem.title != null ? ( -

{linkItem.title}

- ) : null} - {linkItem.items != null && - Array.isArray(linkItem.items) && - linkItem.items.length > 0 ? ( -
    - {linkItem.items.map((item, key) => - item.html ? ( -
  • - ) : ( -
  • - -
  • - ), - )} -
- ) : null} -
- ))} -
- )} -
- {(logo || copyright) && ( - <> -
- {copyright ? ( -
- ) : null} -
- {/* Social Icons Container with Fixed Spacing */} -
- - - - - - - - - - - - - - - -
- - )} -
-
- ); -} - +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import React from 'react'; +import clsx from 'clsx'; + +import Link from '@docusaurus/Link'; +import {FooterLinkItem, useThemeConfig} from '@docusaurus/theme-common'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import isInternalUrl from '@docusaurus/isInternalUrl'; +import styles from './styles.module.css'; +import ThemedImage, {Props as ThemedImageProps} from '@theme/ThemedImage'; +import IconExternalLink from '@theme/Icon/ExternalLink'; +import { IconButton } from '@mui/material'; +import { useColorMode } from '@docusaurus/theme-common'; + +import { Icon } from '@iconify/react'; + +// add for responsive logo image +import { useWindowSize } from '@docusaurus/theme-common'; + +// Custom styles to fix the spacing issue +const socialIconsContainerStyle: React.CSSProperties = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + flexWrap: 'wrap', // Allow wrapping on small screens + margin: '16px 0', +}; + +const iconButtonStyle = { + padding: '12px', // Ensure buttons have enough clickable area +}; + +function FooterLink({ + to, + href, + label, + prependBaseUrlToHref, + ...props +}: FooterLinkItem) { + const toUrl = useBaseUrl(to); + const normalizedHref = useBaseUrl(href, {forcePrependBaseUrl: true}); + + return ( + + {href && !isInternalUrl(href) ? ( + + {label} + + + ) : ( + label + )} + + ); +} + +const FooterLogo = ({ + sources, + alt, + width, + height, + logo, +}: Pick & { logo: any }) => { + // Get window width for responsiveness + const windowSize = useWindowSize(); + + // Set threshold for mobile view (e.g., 768px) + const isMobile = windowSize === 'mobile' ? true : false; + + const getMobileLogoPath = (path: string) => path?.replace('.svg', '-mobile.svg'); + + // Choose appropriate image sources based on screen size + // const responsiveSources = { + // light: useBaseUrl(isMobile ? getMobileLogoPath(logo.src) : logo.src), + // dark: useBaseUrl(isMobile ? getMobileLogoPath(logo.srcDark || logo.src) : (logo.srcDark || logo.src)), + // }; + const responsiveSources = { + light: useBaseUrl(isMobile ? getMobileLogoPath(logo?.src) : logo?.src), + dark: useBaseUrl(isMobile ? getMobileLogoPath(logo?.srcDark || logo?.src) : (logo?.srcDark || logo?.src)), + }; + + return ( + + ); +} + +function Footer(): JSX.Element | null { + const socialLinks = { + linkedin: "https://www.linkedin.com/company/stackql", + twitter: "https://twitter.com/stackql", + github: "https://github.com/stackql", + discord: "https://discord.com/invite/xVXZ9d5NxN", + slack: "https://join.slack.com/t/stackqlcommunity/shared_invite/zt-1cbdq9s5v-CkY65IMAesCgFqjN6FU6hg", + }; + + const {colorMode} = useColorMode(); + + const {footer} = useThemeConfig(); + + const {copyright, links = [], logo = { src: '' }} = footer || {}; + const sources = { + light: useBaseUrl(logo.src), + dark: useBaseUrl(logo.srcDark || logo.src), + }; + + if (!footer) { + return null; + } + + return ( +
+
+ {links && links.length > 0 && ( +
+
+ {logo && (logo.src || logo.srcDark) && ( +
+ {logo.href ? ( + + + + ) : ( + + )} +
+ )} +

+ A new approach to querying and
+ provisioning cloud services. +

+
+ {links.map((linkItem, i) => ( +
+ {linkItem.title != null ? ( +

{linkItem.title}

+ ) : null} + {linkItem.items != null && + Array.isArray(linkItem.items) && + linkItem.items.length > 0 ? ( +
    + {linkItem.items.map((item, key) => + item.html ? ( +
  • + ) : ( +
  • + +
  • + ), + )} +
+ ) : null} +
+ ))} +
+ )} +
+ {(logo || copyright) && ( + <> +
+ {copyright ? ( +
+ ) : null} +
+ {/* Social Icons Container with Fixed Spacing */} +
+ + + + + + + + + + + + + + + +
+ + )} +
+
+ ); +} + export default Footer; \ No newline at end of file diff --git a/website/static/CNAME b/website/static/CNAME index 1f7a4f5..53c63c8 100644 --- a/website/static/CNAME +++ b/website/static/CNAME @@ -1 +1 @@ -snowflake-provider.stackql.io +netlify-provider.stackql.io diff --git a/website/static/apple-touch-icon.png b/website/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..54d5bf4c39a0ea69edae2faf1de88b441fc77799 GIT binary patch literal 7748 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 KpUXO@geCwPM^2Og literal 0 HcmV?d00001 diff --git a/website/static/favicon-32x32.png b/website/static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..f1efee03ab3cbef83577a5b041c102fb9d599fe9 GIT binary patch literal 1533 zcmZ`%dpwj`82(Uchjz8tNl{ZFmeHsPT{ap&cO%BNW*f$kA~Tv{#wFkR$X!?>*DfpD zg?2C%)-|lz&@Rm)^HUl>>qo6?|Gm1Jn#EF=Z|v|ogA&UV76l*2-;#} zO>{;PC*7On&`c~&`W=N0{^kzm5LBL~AokuUZPKir9Uv%N8-n0i2wFiYcnX5p1PGd@ zLXg>Y2*NT7YEB)6AlYOmd$Q#i4~|8^l^B2kX+%eZOW}YM2>|>rgVvFkKeu4u86+*( z5gm7sxY(fHE37zP*| z5W)qven8h1(R4wy$cQ!>*+)hQo`_o@u=4|Ij)=rn@&K(t&C z0}qr3ny&F?{#oiyF<5(8$1};qFB5AI3_X!;_Q1?PvwKi<`$>mAyKv{JSbJ7s@5r0$ zzqVNh=Ni#62F7RB*VpG4K9)6fyGQ-Jha88sgNebpuV)vg=NF5sI!R$Sb~#_M4#_X9 ze75*;xmwWY6L(MBJ<*ACqon5f%)7;Ri%aECgiP<%YWO+sWxUKhluVhu*=%eSZJ!$JZ8Fc+SJGi-PXmn~`*DEO?xvai( zU~y^L)GrfHNo8hKw04gyEw2iMqj*Zn{vT6WS(VRv##UCv5{V@FPQwmTOjKS~*MLYY zUK6iLghNxHsK(eg!t!z%CNayyv&}P>>Q$w}hZD;22tjbBVhU z3idc7=h@(Z7joz{qUVMjJBv660Cf_w`xN342uvsl-W|z#B(op=ulg)!M;8>KusccBM) zmW_j@{KTejs8nzI3-e7i;f%)TO@9a)Tg!r}35qEx-i0v)=4)^-PLF}vqL7x5l61A4{~;w+ zA&q2hA5uwlqt4_Ne2Xp0%Ptxfsify#(@6m!5eP-s$Cgxb$?x zt!nOgiSfR9dj69@N(HCu@!XK3^(c?#&slo-D&lBiVBOMNh2dywKlzDlRyxa+GsQdN z(J?3JqP3A)RB#pxnoi)(s;>WCk0#mm7lzpaCR3!J?me2Qbdsn_Y^tuT%8V(S6|gn6yDX7}v<=ZnWH_twmRL zH8OGPJpnl|@j-qNti4Yt64&$5C)Z+Gda!)GS#&d62pt9J0O0@uPcX(C8j%SH%?O5O zhQ@k?17-xmkrr^_KZ2lO-vB@E{|jt$O?y#+dpOyHM-?TM=rmJ#&?_JtOGn~E3o7ytz75d- literal 0 HcmV?d00001 diff --git a/website/static/favicon.ico b/website/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0145fbfbd5b887d60a9edca52036888a7d3cbd0d GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/website/static/img/docusaurus-social-card.jpg b/website/static/img/docusaurus-social-card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ffcb448210e1a456cb3588ae8b396a597501f187 GIT binary patch literal 55746 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 fgzs%Vr*-jYG(YMS<ttdtee# literal 0 HcmV?d00001 diff --git a/website/static/img/docusaurus.png b/website/static/img/docusaurus.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 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 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/website/static/img/logo.svg b/website/static/img/logo.svg new file mode 100644 index 0000000..9db6d0d --- /dev/null +++ b/website/static/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/static/img/stackql-digitalocean-provider-featured-image.png b/website/static/img/stackql-digitalocean-provider-featured-image.png deleted file mode 100644 index b141ec71bded7a195b6bdf0d5dc5ba03747b69a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23974 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 Y#5x*y>S=)4?+3-TD|S|u7G9742QxT=#{d8T literal 0 HcmV?d00001 diff --git a/website/static/img/undraw_docusaurus_mountain.svg b/website/static/img/undraw_docusaurus_mountain.svg new file mode 100644 index 0000000..af961c4 --- /dev/null +++ b/website/static/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/undraw_docusaurus_react.svg b/website/static/img/undraw_docusaurus_react.svg new file mode 100644 index 0000000..94b5cf0 --- /dev/null +++ b/website/static/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/img/undraw_docusaurus_tree.svg b/website/static/img/undraw_docusaurus_tree.svg new file mode 100644 index 0000000..d9161d3 --- /dev/null +++ b/website/static/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/static/safari-pinned-tab.svg b/website/static/safari-pinned-tab.svg new file mode 100644 index 0000000..2563f76 --- /dev/null +++ b/website/static/safari-pinned-tab.svg @@ -0,0 +1,27 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + diff --git a/website/static/site.webmanifest b/website/static/site.webmanifest new file mode 100644 index 0000000..c0f898a --- /dev/null +++ b/website/static/site.webmanifest @@ -0,0 +1,11 @@ +{ + "name": "StackQL AWS Provider", + "short_name": "StackQL AWS", + "icons": [ + { "src": "/favicon-32x32.png", "sizes": "32x32", "type": "image/png" }, + { "src": "/favicon-16x16.png", "sizes": "16x16", "type": "image/png" } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/website/yarn.lock b/website/yarn.lock index 13a8418..d89b2ca 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -2,192 +2,223 @@ # yarn lockfile v1 -"@algolia/abtesting@1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.3.0.tgz#3fade769bf5b03244baaee8034b83e2b49f8e86c" - integrity sha512-KqPVLdVNfoJzX5BKNGM9bsW8saHeyax8kmPFXul5gejrSPN3qss7PgsFH5mMem7oR8tvjvNkia97ljEYPYCN8Q== - dependencies: - "@algolia/client-common" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" - -"@algolia/autocomplete-core@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz#83374c47dc72482aa45d6b953e89377047f0dcdc" - integrity sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ== - dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.17.9" - "@algolia/autocomplete-shared" "1.17.9" - -"@algolia/autocomplete-plugin-algolia-insights@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz#74c86024d09d09e8bfa3dd90b844b77d9f9947b6" - integrity sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ== - dependencies: - "@algolia/autocomplete-shared" "1.17.9" - -"@algolia/autocomplete-preset-algolia@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz#911f3250544eb8ea4096fcfb268f156b085321b5" - integrity sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ== - dependencies: - "@algolia/autocomplete-shared" "1.17.9" - -"@algolia/autocomplete-shared@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz#5f38868f7cb1d54b014b17a10fc4f7e79d427fa8" - integrity sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ== - -"@algolia/client-abtesting@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.37.0.tgz#37df3674ccc37dfb0aa4cbfea42002bb136fb909" - integrity sha512-Dp2Zq+x9qQFnuiQhVe91EeaaPxWBhzwQ6QnznZQnH9C1/ei3dvtmAFfFeaTxM6FzfJXDLvVnaQagTYFTQz3R5g== - dependencies: - "@algolia/client-common" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" - -"@algolia/client-analytics@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.37.0.tgz#6fb4d748e1af43d8bc9f955d73d98205ce1c1ee5" - integrity sha512-wyXODDOluKogTuZxRII6mtqhAq4+qUR3zIUJEKTiHLe8HMZFxfUEI4NO2qSu04noXZHbv/sRVdQQqzKh12SZuQ== - dependencies: - "@algolia/client-common" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" - -"@algolia/client-common@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.37.0.tgz#f7ca097c4bae44e4ea365ee8f420693d0005c98e" - integrity sha512-GylIFlPvLy9OMgFG8JkonIagv3zF+Dx3H401Uo2KpmfMVBBJiGfAb9oYfXtplpRMZnZPxF5FnkWaI/NpVJMC+g== - -"@algolia/client-insights@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.37.0.tgz#f4f4011fc89bc0b2dfc384acc3c6fb38f633f4ec" - integrity sha512-T63afO2O69XHKw2+F7mfRoIbmXWGzgpZxgOFAdP3fR4laid7pWBt20P4eJ+Zn23wXS5kC9P2K7Bo3+rVjqnYiw== - dependencies: - "@algolia/client-common" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" - -"@algolia/client-personalization@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.37.0.tgz#c1688db681623b189f353599815a118033ceebb5" - integrity sha512-1zOIXM98O9zD8bYDCJiUJRC/qNUydGHK/zRK+WbLXrW1SqLFRXECsKZa5KoG166+o5q5upk96qguOtE8FTXDWQ== - dependencies: - "@algolia/client-common" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" - -"@algolia/client-query-suggestions@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.37.0.tgz#fa514df8d36fb548258c712f3ba6f97eb84ebb87" - integrity sha512-31Nr2xOLBCYVal+OMZn1rp1H4lPs1914Tfr3a34wU/nsWJ+TB3vWjfkUUuuYhWoWBEArwuRzt3YNLn0F/KRVkg== - dependencies: - "@algolia/client-common" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" - -"@algolia/client-search@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.37.0.tgz#38c7110d96fbbbda7b7fb0578a18b8cad3c25af2" - integrity sha512-DAFVUvEg+u7jUs6BZiVz9zdaUebYULPiQ4LM2R4n8Nujzyj7BZzGr2DCd85ip4p/cx7nAZWKM8pLcGtkTRTdsg== - dependencies: - "@algolia/client-common" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" +"@11ty/gray-matter@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@11ty/gray-matter/-/gray-matter-1.0.0.tgz#35ee04d76b870893c053f64f659c923a7a9db2d7" + integrity sha512-7mJJl+wf1AByoT0PknQiQfOPnVNT4fevGrUBVWO4HXsnYn1aQPyRyrELYrNUFleUBM++KzMKN6QaxHPk0t/6/g== + dependencies: + js-yaml "^4.1.0" + kind-of "^6.0.3" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +"@algolia/abtesting@1.21.1": + version "1.21.1" + resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.21.1.tgz#bf5c7881302a5843b78c6f44431d27ba5eb8f179" + integrity sha512-Wia5/mNTfiU0PIUN25UMfAGGdASkkwuCS9nBAdmhqrNPY/ff7U/6MgBVdwFDPsa3sA1msutPtO50gvOzx6MOXA== + dependencies: + "@algolia/client-common" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" + +"@algolia/autocomplete-core@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz#702df67a08cb3cfe8c33ee1111ef136ec1a9e232" + integrity sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.19.2" + "@algolia/autocomplete-shared" "1.19.2" + +"@algolia/autocomplete-core@^1.19.2": + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.9.tgz#bbed371e56aeea4a31a3af239f16733e1b8aedca" + integrity sha512-4U2JKLMWlDu0CotYyUkWakDxr8AIav3QtIUXXRpfavYN29aVWfzlwJp9T0rPKEf/dO2QCPAUc0Kq1Tj1GJxo2A== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.19.9" + "@algolia/autocomplete-shared" "1.19.9" + +"@algolia/autocomplete-plugin-algolia-insights@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz#3584b625b9317e333d1ae43664d02358e175c52d" + integrity sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg== + dependencies: + "@algolia/autocomplete-shared" "1.19.2" + +"@algolia/autocomplete-plugin-algolia-insights@1.19.9": + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.9.tgz#f799737d13bf0c4ec8421619c7107fa05c836535" + integrity sha512-6mExC6X7762s2SV3eJy3QOkB8bdMmnUhQ2agvGVDuzwoGyr3PquGSY/0vPQXCfiAiCaXUz1rXn+lwghgSi0l0w== + dependencies: + "@algolia/autocomplete-shared" "1.19.9" + +"@algolia/autocomplete-shared@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz#c0b7b8dc30a5c65b70501640e62b009535e4578f" + integrity sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w== + +"@algolia/autocomplete-shared@1.19.9": + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.9.tgz#c5b05e23c71027e4e45a301f286593dffdcdfbdf" + integrity sha512-YosP9Uoek6y/Ur1r1qeogk4biMe/hzkyNcgMCciw0//3XpCM7VlYLSHnyt/vOnEOGhCCc0+3v+unEiH6zz+Z1A== + +"@algolia/client-abtesting@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.55.1.tgz#192d0fd57ec9b7d6924a8b19cd98e72c7e8ae6de" + integrity sha512-miW8RzAtBgNiEJ9fGEhsOPgWUpekAe64YcVufqXrlykj0Jjmo5nj0a5f/HAzRVX5ZuU1GAVd7BkzFDx7q50P3A== + dependencies: + "@algolia/client-common" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" + +"@algolia/client-analytics@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.55.1.tgz#2e6e14d03f1cb181c2086fd60324c24f5f3007f9" + integrity sha512-eR3J3kB9JX6DdCvDRi3I4KPfwO6fR9HWYRXhVke2TXIoOQafMKCRAneg33JRmIrb+DnnJ/eWApJLF1O1CLPERg== + dependencies: + "@algolia/client-common" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" + +"@algolia/client-common@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.55.1.tgz#4e023b4127805f8d2a3229f1711822927f3f4303" + integrity sha512-P5ak7EurwYqgAiDyb95mgA3WRR/Zu8CPMv36lWTISvL2AmlPyqQPy2nX/KEJRTcwaeTWwrk6wJV4/M93GfjOWw== + +"@algolia/client-insights@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.55.1.tgz#f58d7908071e9f5fb328533368e3bb2dad797fe5" + integrity sha512-OVtj9uA//+pjvKQI5INnzbyLrf3ClNv3XRbWswwJ2kHIStQNHtBfHo+LofNB/WhM9xjuXlW5ANn2aMj65UGx7w== + dependencies: + "@algolia/client-common" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" + +"@algolia/client-personalization@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.55.1.tgz#1b4d2bd3ba031864b1c8cd3e839ecb81146f8023" + integrity sha512-oKlVFlp+qbIEe4p7E54zSiP2gEV/vDu972Ykv8VDMFwEvreS7m0YKA3a8hGGHwc7yiBUGGiR3LlwzMLfnJmy6Q== + dependencies: + "@algolia/client-common" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" + +"@algolia/client-query-suggestions@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.55.1.tgz#7ddb439a51f348711d2b5b7bddef9497e906be86" + integrity sha512-BOVrld6vdtsFmotVDMTVQfYXwrVplJ+DUvy60JFi+tkWV698q2J9NNPKEO3dr5qxtSLKQP4vHF8n+3U5PDWhOQ== + dependencies: + "@algolia/client-common" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" + +"@algolia/client-search@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.55.1.tgz#8a918fb875b9f3c8e73b7331e508196a33538e71" + integrity sha512-GAqHl9zERhC3bbBfubwUu07G3UXO06gORvOcsiTBZB3et0s3auNUbHlYdYNp4VKa3sUZqH5AcD3OKzU/KDGXjQ== + dependencies: + "@algolia/client-common" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.37.0": - version "1.37.0" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.37.0.tgz#bb6016e656c68014050814abf130e103f977794e" - integrity sha512-pkCepBRRdcdd7dTLbFddnu886NyyxmhgqiRcHHaDunvX03Ij4WzvouWrQq7B7iYBjkMQrLS8wQqSP0REfA4W8g== +"@algolia/ingestion@1.55.1": + version "1.55.1" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.55.1.tgz#036d40d394314d3f94dd1779d33378d8a65f48a5" + integrity sha512-BXZw+C+gsWL7pZvbnhJUnCXASiDLGcQxVV7h55Pyh2DmSzwdZIVccE5xc9RVD2trtrhIqk5smuODTxtaZqd0IA== + dependencies: + "@algolia/client-common" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" + +"@algolia/monitoring@1.55.1": + version "1.55.1" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.55.1.tgz#307c71309cd52dbcc43d0fbd7f35a698354dd6d8" + integrity sha512-9g/ceZrZTqA62FA3588Xj0onRPjDNfu0pVQqefK0rrHp9H6Wblph/YmzGjZ2g8uqbTh0ZGIvAGCzErU8f7MHpA== dependencies: - "@algolia/client-common" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" + "@algolia/client-common" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" -"@algolia/monitoring@1.37.0": - version "1.37.0" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.37.0.tgz#6d20c220d648db8faea45679350f1516917cc13d" - integrity sha512-fNw7pVdyZAAQQCJf1cc/ih4fwrRdQSgKwgor4gchsI/Q/ss9inmC6bl/69jvoRSzgZS9BX4elwHKdo0EfTli3w== +"@algolia/recommend@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.55.1.tgz#72b5440d6221283acf5dde2828cf442769f5315a" + integrity sha512-cZTIrGyAP+W4A6jDVwvWM/JOaoJKQkD/2a5eLUEeNdKAD45jN7BCpsMDONyhZlosLa4UwL8uiINQzj4iFy9nqg== dependencies: - "@algolia/client-common" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" + "@algolia/client-common" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" -"@algolia/recommend@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.37.0.tgz#dd5e814f30bbb92395902e120fdb28a120b91341" - integrity sha512-U+FL5gzN2ldx3TYfQO5OAta2TBuIdabEdFwD5UVfWPsZE5nvOKkc/6BBqP54Z/adW/34c5ZrvvZhlhNTZujJXQ== +"@algolia/requester-browser-xhr@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.55.1.tgz#6809cfab8aab74f6cb3d69cd4c1e2d2c2be362da" + integrity sha512-N6I3leW0UO8Y9Zv90yo2UHgYGuxZO0mjbvzNxDIJDjO0qECEF7Z9XMvSNeUWXQh/iNDA9lr8MfEy3rmZGIcclw== dependencies: - "@algolia/client-common" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" + "@algolia/client-common" "5.55.1" -"@algolia/requester-browser-xhr@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.37.0.tgz#8851ab846d8005055c36a59422161ebe1594ae48" - integrity sha512-Ao8GZo8WgWFABrU7iq+JAftXV0t+UcOtCDL4mzHHZ+rQeTTf1TZssr4d0vIuoqkVNnKt9iyZ7T4lQff4ydcTrw== +"@algolia/requester-fetch@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.55.1.tgz#f75cc8681524bd8eb60d5d976c31f568dbdbe0ea" + integrity sha512-ukU5zeeFs44rQkzv+TRdYard+d+3lmPGs8lPZhHtWE8rfz+LlBSF6s9kP3VQ7LeOYL8Dz0u6tZfnyTrqrumbHQ== dependencies: - "@algolia/client-common" "5.37.0" + "@algolia/client-common" "5.55.1" -"@algolia/requester-fetch@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.37.0.tgz#93602fdc9a59b41ecd53768c53c11cddb0db846a" - integrity sha512-H7OJOXrFg5dLcGJ22uxx8eiFId0aB9b0UBhoOi4SMSuDBe6vjJJ/LeZyY25zPaSvkXNBN3vAM+ad6M0h6ha3AA== +"@algolia/requester-node-http@5.55.1": + version "5.55.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.55.1.tgz#1920f83d70be909739dbc4d1421ca241bc0f1e0e" + integrity sha512-lCwXyijwPm3vbYHpBXPRomMcD6mgiptmps27gnMCf4HK+u/AOeFPBnIFh4V3l4A5SnP9VRiKBZqwGBpUH0vaTg== dependencies: - "@algolia/client-common" "5.37.0" + "@algolia/client-common" "5.55.1" -"@algolia/requester-node-http@5.37.0": - version "5.37.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.37.0.tgz#83da1b52f3ee86f262a5d4b2a88a74db665211c2" - integrity sha512-npZ9aeag4SGTx677eqPL3rkSPlQrnzx/8wNrl1P7GpWq9w/eTmRbOq+wKrJ2r78idlY0MMgmY/mld2tq6dc44g== +"@antfu/install-pkg@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-1.1.0.tgz#78fa036be1a6081b5a77a5cf59f50c7752b6ba26" + integrity sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ== dependencies: - "@algolia/client-common" "5.37.0" + package-manager-detector "^1.3.0" + tinyexec "^1.0.1" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.7.tgz#f2fbbfea87c44a21590ec515b778b2c26d8866e7" + integrity sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw== dependencies: - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.29.7" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.4.tgz#96fdf1af1b8859c8474ab39c295312bfb7c24b04" - integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== +"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.7.tgz#6f0237f0f36d2e51c0570a636faed9d2d0efe629" + integrity sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg== "@babel/core@^7.21.3", "@babel/core@^7.25.9": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.4.tgz#12a550b8794452df4c8b084f95003bce1742d496" - integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.3" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helpers" "^7.28.4" - "@babel/parser" "^7.28.4" - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.4" - "@babel/types" "^7.28.4" + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.7.tgz#80c10b17248082968b57a857b91640971f2070f7" + integrity sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helpers" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -195,213 +226,221 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.9", "@babel/generator@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" - integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== +"@babel/generator@^7.25.9", "@babel/generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.7.tgz#cca0b8827e6bcf3ba176788e7f3b180ad6db2fa3" + integrity sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ== dependencies: - "@babel/parser" "^7.28.3" - "@babel/types" "^7.28.2" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3": - version "7.27.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" - integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== +"@babel/helper-annotate-as-pure@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz#c70fe3c6ecbdc3fd2dd1b0f498428b88b82ce47f" + integrity sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw== dependencies: - "@babel/types" "^7.27.3" + "@babel/types" "^7.29.7" -"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== +"@babel/helper-compilation-targets@^7.28.6", "@babel/helper-compilation-targets@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz#7a1def704302401c47f64fa85589e974ae217042" + integrity sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g== dependencies: - "@babel/compat-data" "^7.27.2" - "@babel/helper-validator-option" "^7.27.1" + "@babel/compat-data" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz#3e747434ea007910c320c4d39a6b46f20f371d46" - integrity sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-member-expression-to-functions" "^7.27.1" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.28.3" +"@babel/helper-create-class-features-plugin@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz#6eddf286f2ec418f740c91d60a83347c55838ddd" + integrity sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-member-expression-to-functions" "^7.29.7" + "@babel/helper-optimise-call-expression" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/traverse" "^7.29.7" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" - integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz#5d4c3f928f315cf6c4184ea2fc3b5b38745b2430" + integrity sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - regexpu-core "^6.2.0" + "@babel/helper-annotate-as-pure" "^7.29.7" + regexpu-core "^6.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.5": - version "0.6.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753" - integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg== +"@babel/helper-define-polyfill-provider@^0.6.5", "@babel/helper-define-polyfill-provider@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz#cf1e4462b613f2b54c41e6ff758d5dfcaa2c85d1" + integrity sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA== dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - debug "^4.4.1" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + debug "^4.4.3" lodash.debounce "^4.0.8" - resolve "^1.22.10" - -"@babel/helper-globals@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" - integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== - -"@babel/helper-member-expression-to-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" - integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" - integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz#a2b37d3da3b2344fe085dab234426f2b9a2fa5f6" - integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== - dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.28.3" - -"@babel/helper-optimise-call-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" - integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== - dependencies: - "@babel/types" "^7.27.1" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" - integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== - -"@babel/helper-remap-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" - integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-wrap-function" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-replace-supers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" - integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.27.1" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" - integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== - -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== - -"@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== - -"@babel/helper-wrap-function@^7.27.1": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz#fe4872092bc1438ffd0ce579e6f699609f9d0a7a" - integrity sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g== - dependencies: - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.3" - "@babel/types" "^7.28.2" - -"@babel/helpers@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.4.tgz#fe07274742e95bdf7cf1443593eeb8926ab63827" - integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== - dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + resolve "^1.22.11" + +"@babel/helper-globals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz#f04a96fbd8473241b1079243f5b3f03a3010ab7b" + integrity sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA== + +"@babel/helper-member-expression-to-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz#8dbdb3ce0b5c487e1aec10e13c9a43a500814df8" + integrity sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg== + dependencies: + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz#ef25048a518e828d7393fac5882ddd73921d7396" + integrity sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g== + dependencies: + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helper-module-transforms@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz#b062747a5997ba138637201328bbff77960574ae" + integrity sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg== + dependencies: + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/helper-optimise-call-expression@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz#77b0b5b94f1997fa9d6e3125f445227b1faf9d85" + integrity sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong== + dependencies: + "@babel/types" "^7.29.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.29.7", "@babel/helper-plugin-utils@^7.8.0": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz#c0a0766f1a13617d8a17407d7ab8f9d486225ea4" + integrity sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw== + +"@babel/helper-remap-async-to-generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz#34b1f68dd75b86d31df781a29c3ff2df88da82e6" + integrity sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og== + dependencies: + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-wrap-function" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/helper-replace-supers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz#bc3c3964329043c79112e513c1b198f16589ac21" + integrity sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.29.7" + "@babel/helper-optimise-call-expression" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz#50c95c7e4c4f54936cfa0116428edc559862d551" + integrity sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ== + dependencies: + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helper-string-parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz#7f0871d99824d23137d60f86fcf6130fd5a1b51f" + integrity sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw== + +"@babel/helper-validator-identifier@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz#bd87084ced0c796ec46bda492de6e83d29e89fc2" + integrity sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg== + +"@babel/helper-validator-option@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz#cf315be940213b354eb4abcc0bd01ebe3f73bc2a" + integrity sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw== + +"@babel/helper-wrap-function@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz#eec72163044548a0935e9d182bf2d547ec5ff483" + integrity sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw== + dependencies: + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/helpers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.7.tgz#45abfde7548997e34376c3e69feb475cffb4a607" + integrity sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg== + dependencies: + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" - integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== +"@babel/parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.7.tgz#837b87387cbf5ec5530cb634b3c622f68edb9334" + integrity sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg== dependencies: - "@babel/types" "^7.28.4" - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" - integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== + "@babel/types" "^7.29.7" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz#2b535896d933a85aa92377eaa3d51a437d54a4e3" + integrity sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" - integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz#b00711a9e52bf4fe55ef7e54b2ef4a881bf804c8" + integrity sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz#2375328852026a3cf6bc0bcf2de7d236f2d5e701" + integrity sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + +"@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz#759a857c46c4d2a6199685cf71070d81ae5f743a" + integrity sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz#86de98dd8e03836178231ea96c27dab26016a705" + integrity sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" - integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/plugin-transform-optional-chaining" "^7.29.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" - integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz#f5d892681dbf4b08753436a5e55000d5ba728d6d" + integrity sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz#373f6e2de0016f73caf8f27004f61d167743742a" - integrity sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -415,33 +454,33 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-import-assertions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" - integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== +"@babel/plugin-syntax-import-assertions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz#c5cd868505269126cc18882e1f01f7b0e0e24b4e" + integrity sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-syntax-import-attributes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" - integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== +"@babel/plugin-syntax-import-attributes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz#6115264516e95ead0f35a41710906612e447f605" + integrity sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-syntax-jsx@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" - integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== +"@babel/plugin-syntax-jsx@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz#622c16f9ad63782fe6e83dadc7e40330744b7f1e" + integrity sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-syntax-typescript@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" - integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== +"@babel/plugin-syntax-typescript@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz#7c29388932313ed58413a0343048d75d92fb5b24" + integrity sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -451,540 +490,541 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" - integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== +"@babel/plugin-transform-arrow-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz#d651343f562c03f47951bd1802195d0e10605f27" + integrity sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-async-generator-functions@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2" - integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q== +"@babel/plugin-transform-async-generator-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz#a5365617921d82a1fee33124a1102bb38a1e677d" + integrity sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.28.0" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-remap-async-to-generator" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" - integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== +"@babel/plugin-transform-async-to-generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz#3b5e8f1fb58133cf701bcf0baaf6f01bfd1a8889" + integrity sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-remap-async-to-generator" "^7.29.7" -"@babel/plugin-transform-block-scoped-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" - integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== +"@babel/plugin-transform-block-scoped-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz#96d292634434082d6687bcdb81139affedf77e8c" + integrity sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-block-scoping@^7.28.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz#e19ac4ddb8b7858bac1fd5c1be98a994d9726410" - integrity sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A== +"@babel/plugin-transform-block-scoping@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz#baa376691ae16244cd14335422fca6900f54e17d" + integrity sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-class-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" - integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== +"@babel/plugin-transform-class-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz#034897b8a21beec163332fac2de235b14409abdf" + integrity sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-class-static-block@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz#d1b8e69b54c9993bc558203e1f49bfc979bfd852" - integrity sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg== +"@babel/plugin-transform-class-static-block@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz#fed8efd19f3dd3e1114ee390707c70912778fd7c" + integrity sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-classes@^7.28.3": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz#75d66175486788c56728a73424d67cbc7473495c" - integrity sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA== +"@babel/plugin-transform-classes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz#61d3e5aaae0c838acc3204d9db7c8dc05c25815b" + integrity sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-globals" "^7.28.0" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/traverse" "^7.28.4" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-computed-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" - integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== +"@babel/plugin-transform-computed-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz#95028787ca31901b9a20b5c6d9605c32346f55ad" + integrity sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/template" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/template" "^7.29.7" -"@babel/plugin-transform-destructuring@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz#0f156588f69c596089b7d5b06f5af83d9aa7f97a" - integrity sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A== +"@babel/plugin-transform-destructuring@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz#5781ec6947852e27b64c1165f0db431f408090e4" + integrity sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.0" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-dotall-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" - integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== +"@babel/plugin-transform-dotall-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz#b203de9740e4c7ff6b55ce436ed5313b88d70af8" + integrity sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-duplicate-keys@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" - integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== +"@babel/plugin-transform-duplicate-keys@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz#8f3fe721835cb7a433420841dae90afc962ea7ae" + integrity sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" - integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz#dc6c405e55c01b7657e1827a25332c4ac17e9cac" + integrity sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-dynamic-import@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" - integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== +"@babel/plugin-transform-dynamic-import@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz#a83a6faec5bab5b619adf9d0eac6c1c270123c2a" + integrity sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-explicit-resource-management@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a" - integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ== +"@babel/plugin-transform-explicit-resource-management@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz#65c8b9f76ec915b02a0e1df703125a0fca58abaa" + integrity sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" -"@babel/plugin-transform-exponentiation-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" - integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== +"@babel/plugin-transform-exponentiation-operator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz#00bf002fde8794356171f5d4df200f6bc0d5a303" + integrity sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-export-namespace-from@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" - integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== +"@babel/plugin-transform-export-namespace-from@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz#d6014f45cec61d7691335c6c9804204bee801d51" + integrity sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-for-of@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" - integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== +"@babel/plugin-transform-for-of@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz#c65a678592117717aacdb10c1b73a9cb85e830be" + integrity sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-transform-function-name@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" - integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== +"@babel/plugin-transform-function-name@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz#8b87f8a7504dbcd96135167e3fc4f61126a7bd86" + integrity sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg== dependencies: - "@babel/helper-compilation-targets" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-json-strings@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" - integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== +"@babel/plugin-transform-json-strings@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz#f57d63dcc05b4481c281acedcd8fc4e3e439a1d4" + integrity sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" - integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== +"@babel/plugin-transform-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz#b90bd47463326c2a9d779e1bd5e1f88b9f421921" + integrity sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-logical-assignment-operators@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" - integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== +"@babel/plugin-transform-logical-assignment-operators@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz#9b29425adf5c794967aabe4b046a046a167bac2f" + integrity sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-member-expression-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" - integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== +"@babel/plugin-transform-member-expression-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz#1281689fa2fefc17b110d21ebafd0fe9402d5309" + integrity sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-modules-amd@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" - integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== +"@babel/plugin-transform-modules-amd@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz#f05ca662c8a1dc4be2f337af9c7e80369c942d6c" + integrity sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-modules-commonjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" - integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== +"@babel/plugin-transform-modules-commonjs@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz#70e6835abf2663dafbe94b8ef1f51de7351ef135" + integrity sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-modules-systemjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" - integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== +"@babel/plugin-transform-modules-systemjs@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz#e575dd2ab9882906de120ff7dc9dee9914d8b6f3" + integrity sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-modules-umd@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" - integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== +"@babel/plugin-transform-modules-umd@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz#391d1c0215aca6307257f2f608598dfe55feb6cf" + integrity sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" - integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== +"@babel/plugin-transform-named-capturing-groups-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz#21e75d847b31189842fa7a77703722ed4b43d27d" + integrity sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-new-target@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" - integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== +"@babel/plugin-transform-new-target@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz#714147ce7947e1b49cbd84137ca2e75e92b2a067" + integrity sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" - integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz#8a54cdf88c3f50433a6173117a286195b67714cc" + integrity sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-numeric-separator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" - integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== +"@babel/plugin-transform-numeric-separator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz#0266d5cd42ab87ec40fee45a4e36483cfdcbc66a" + integrity sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-object-rest-spread@^7.28.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz#9ee1ceca80b3e6c4bac9247b2149e36958f7f98d" - integrity sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew== +"@babel/plugin-transform-object-rest-spread@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz#e0d5060241803922c545676613cc8acbbda0d266" + integrity sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A== dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" - "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/traverse" "^7.28.4" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + "@babel/plugin-transform-parameters" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-object-super@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" - integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== +"@babel/plugin-transform-object-super@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz#e89283d14fa3c35817d4493ffc6bc649aa10e4eb" + integrity sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" -"@babel/plugin-transform-optional-catch-binding@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" - integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== +"@babel/plugin-transform-optional-catch-binding@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz#729664f79985be504eba112c51de9f71d009030b" + integrity sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" - integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== +"@babel/plugin-transform-optional-chaining@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz#b84a1b574b3c73001023092567e16c492b720e51" + integrity sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-transform-parameters@^7.27.7": - version "7.27.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" - integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== +"@babel/plugin-transform-parameters@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz#a5ddc3b9bfb534814cb8334cbeba47d9cf9db090" + integrity sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-private-methods@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" - integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== +"@babel/plugin-transform-private-methods@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz#cea8bd3ab99533892897a02999d5b752584ad145" + integrity sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-private-property-in-object@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" - integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== +"@babel/plugin-transform-private-property-in-object@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz#4a2f6be5aba47be7afbdb4cd7903c46edf3a7661" + integrity sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-property-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" - integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== +"@babel/plugin-transform-property-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz#d45817cd72f9e134ab1f7fbb79264cfcb85cf636" + integrity sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-transform-react-constant-elements@^7.21.3": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz#6c6b50424e749a6e48afd14cf7b92f98cb9383f9" - integrity sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.29.7.tgz#8264440ea2ffc5ec405aebd7eac074815d6e28b1" + integrity sha512-J0wGhKan+rIiE2OhfhRptySLrJ6SjQYM6b6N1FMlhyhCcw1Mig8vQjWchyB+bgHGDvaWo6Diu6CLRMra2uMtmg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-react-display-name@^7.27.1": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz#6f20a7295fea7df42eb42fed8f896813f5b934de" - integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA== +"@babel/plugin-transform-react-display-name@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.29.7.tgz#bf161a6d750267b79db7ff6f8fb89c3369b02df3" + integrity sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-react-jsx-development@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz#47ff95940e20a3a70e68ad3d4fcb657b647f6c98" - integrity sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q== +"@babel/plugin-transform-react-jsx-development@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.29.7.tgz#64e6aacb5cb43b9e80d3d5f19ddefc158a624f09" + integrity sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g== dependencies: - "@babel/plugin-transform-react-jsx" "^7.27.1" + "@babel/plugin-transform-react-jsx" "^7.29.7" -"@babel/plugin-transform-react-jsx@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz#1023bc94b78b0a2d68c82b5e96aed573bcfb9db0" - integrity sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw== +"@babel/plugin-transform-react-jsx@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz#3d16a0e5773f079400a8c82a190709cdf92ee204" + integrity sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-syntax-jsx" "^7.27.1" - "@babel/types" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-syntax-jsx" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/plugin-transform-react-pure-annotations@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz#339f1ce355eae242e0649f232b1c68907c02e879" - integrity sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA== +"@babel/plugin-transform-react-pure-annotations@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.29.7.tgz#76445c90112dd0a7371b63264563bfa9a4fcd6e3" + integrity sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-regenerator@^7.28.3": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz#9d3fa3bebb48ddd0091ce5729139cd99c67cea51" - integrity sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA== +"@babel/plugin-transform-regenerator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz#0f42626a7dbb0e7a7f52e036d3e43deebdc3ea4e" + integrity sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-regexp-modifiers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" - integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== +"@babel/plugin-transform-regexp-modifiers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz#68311c0c10af2198212528863f8542843e424025" + integrity sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-reserved-words@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" - integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== +"@babel/plugin-transform-reserved-words@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz#a6feeb179b36a5f1fc6e3154c1eb727bdbe35876" + integrity sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-transform-runtime@^7.25.9": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz#f5990a1b2d2bde950ed493915e0719841c8d0eaa" - integrity sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz#7c7fb6e2a46dce67e278b6cc84421c1d16da5695" + integrity sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" babel-plugin-polyfill-corejs2 "^0.4.14" babel-plugin-polyfill-corejs3 "^0.13.0" babel-plugin-polyfill-regenerator "^0.6.5" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" - integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== +"@babel/plugin-transform-shorthand-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz#25c0436b98f4bd9ca4b98e1fbd662743bbaab9bf" + integrity sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-spread@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" - integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== +"@babel/plugin-transform-spread@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz#a128bcdd6b5e5e47054907b2e50bc19c3f856edd" + integrity sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-transform-sticky-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" - integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== +"@babel/plugin-transform-sticky-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz#a42c0fd1fa42f7e98e1e0c7757f72a1bbca3a015" + integrity sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-template-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" - integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== +"@babel/plugin-transform-template-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz#ada97d8e0832bca8edb315888aa654b1570f3835" + integrity sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-typeof-symbol@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" - integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== +"@babel/plugin-transform-typeof-symbol@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz#d848a4677c1ee3485ab017f4018f04597798911c" + integrity sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-typescript@^7.27.1": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz#796cbd249ab56c18168b49e3e1d341b72af04a6b" - integrity sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg== +"@babel/plugin-transform-typescript@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz#f0449c3df7037bbe232043476851c38f5e4a7615" + integrity sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-syntax-typescript" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/plugin-syntax-typescript" "^7.29.7" -"@babel/plugin-transform-unicode-escapes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" - integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== +"@babel/plugin-transform-unicode-escapes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz#1e99554b0cddfd650d649a9f2b996049893e5720" + integrity sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-property-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" - integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== +"@babel/plugin-transform-unicode-property-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz#44444afc73768c2190fac4d95f7716817b7f204a" + integrity sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" - integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== +"@babel/plugin-transform-unicode-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz#c3064b293ff7f1794b71f7650eec8db9896d3e59" + integrity sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-sets-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" - integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== +"@babel/plugin-transform-unicode-sets-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz#b03ac9f27326f6197e8e574add83bbf33fc34ecd" + integrity sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/preset-env@^7.20.2", "@babel/preset-env@^7.25.9": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.3.tgz#2b18d9aff9e69643789057ae4b942b1654f88187" - integrity sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg== - dependencies: - "@babel/compat-data" "^7.28.0" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.3" + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.7.tgz#5e2ab5e764b493fdefc99c43aeaa70a9533a37fd" + integrity sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA== + dependencies: + "@babel/compat-data" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.29.7" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.29.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.29.7" + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array" "^7.29.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.29.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.29.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.27.1" - "@babel/plugin-syntax-import-attributes" "^7.27.1" + "@babel/plugin-syntax-import-assertions" "^7.29.7" + "@babel/plugin-syntax-import-attributes" "^7.29.7" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.28.0" - "@babel/plugin-transform-async-to-generator" "^7.27.1" - "@babel/plugin-transform-block-scoped-functions" "^7.27.1" - "@babel/plugin-transform-block-scoping" "^7.28.0" - "@babel/plugin-transform-class-properties" "^7.27.1" - "@babel/plugin-transform-class-static-block" "^7.28.3" - "@babel/plugin-transform-classes" "^7.28.3" - "@babel/plugin-transform-computed-properties" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" - "@babel/plugin-transform-dotall-regex" "^7.27.1" - "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" - "@babel/plugin-transform-dynamic-import" "^7.27.1" - "@babel/plugin-transform-explicit-resource-management" "^7.28.0" - "@babel/plugin-transform-exponentiation-operator" "^7.27.1" - "@babel/plugin-transform-export-namespace-from" "^7.27.1" - "@babel/plugin-transform-for-of" "^7.27.1" - "@babel/plugin-transform-function-name" "^7.27.1" - "@babel/plugin-transform-json-strings" "^7.27.1" - "@babel/plugin-transform-literals" "^7.27.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" - "@babel/plugin-transform-member-expression-literals" "^7.27.1" - "@babel/plugin-transform-modules-amd" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-modules-systemjs" "^7.27.1" - "@babel/plugin-transform-modules-umd" "^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" - "@babel/plugin-transform-new-target" "^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" - "@babel/plugin-transform-numeric-separator" "^7.27.1" - "@babel/plugin-transform-object-rest-spread" "^7.28.0" - "@babel/plugin-transform-object-super" "^7.27.1" - "@babel/plugin-transform-optional-catch-binding" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" - "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/plugin-transform-private-methods" "^7.27.1" - "@babel/plugin-transform-private-property-in-object" "^7.27.1" - "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.3" - "@babel/plugin-transform-regexp-modifiers" "^7.27.1" - "@babel/plugin-transform-reserved-words" "^7.27.1" - "@babel/plugin-transform-shorthand-properties" "^7.27.1" - "@babel/plugin-transform-spread" "^7.27.1" - "@babel/plugin-transform-sticky-regex" "^7.27.1" - "@babel/plugin-transform-template-literals" "^7.27.1" - "@babel/plugin-transform-typeof-symbol" "^7.27.1" - "@babel/plugin-transform-unicode-escapes" "^7.27.1" - "@babel/plugin-transform-unicode-property-regex" "^7.27.1" - "@babel/plugin-transform-unicode-regex" "^7.27.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" + "@babel/plugin-transform-arrow-functions" "^7.29.7" + "@babel/plugin-transform-async-generator-functions" "^7.29.7" + "@babel/plugin-transform-async-to-generator" "^7.29.7" + "@babel/plugin-transform-block-scoped-functions" "^7.29.7" + "@babel/plugin-transform-block-scoping" "^7.29.7" + "@babel/plugin-transform-class-properties" "^7.29.7" + "@babel/plugin-transform-class-static-block" "^7.29.7" + "@babel/plugin-transform-classes" "^7.29.7" + "@babel/plugin-transform-computed-properties" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + "@babel/plugin-transform-dotall-regex" "^7.29.7" + "@babel/plugin-transform-duplicate-keys" "^7.29.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.7" + "@babel/plugin-transform-dynamic-import" "^7.29.7" + "@babel/plugin-transform-explicit-resource-management" "^7.29.7" + "@babel/plugin-transform-exponentiation-operator" "^7.29.7" + "@babel/plugin-transform-export-namespace-from" "^7.29.7" + "@babel/plugin-transform-for-of" "^7.29.7" + "@babel/plugin-transform-function-name" "^7.29.7" + "@babel/plugin-transform-json-strings" "^7.29.7" + "@babel/plugin-transform-literals" "^7.29.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.29.7" + "@babel/plugin-transform-member-expression-literals" "^7.29.7" + "@babel/plugin-transform-modules-amd" "^7.29.7" + "@babel/plugin-transform-modules-commonjs" "^7.29.7" + "@babel/plugin-transform-modules-systemjs" "^7.29.7" + "@babel/plugin-transform-modules-umd" "^7.29.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.7" + "@babel/plugin-transform-new-target" "^7.29.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.29.7" + "@babel/plugin-transform-numeric-separator" "^7.29.7" + "@babel/plugin-transform-object-rest-spread" "^7.29.7" + "@babel/plugin-transform-object-super" "^7.29.7" + "@babel/plugin-transform-optional-catch-binding" "^7.29.7" + "@babel/plugin-transform-optional-chaining" "^7.29.7" + "@babel/plugin-transform-parameters" "^7.29.7" + "@babel/plugin-transform-private-methods" "^7.29.7" + "@babel/plugin-transform-private-property-in-object" "^7.29.7" + "@babel/plugin-transform-property-literals" "^7.29.7" + "@babel/plugin-transform-regenerator" "^7.29.7" + "@babel/plugin-transform-regexp-modifiers" "^7.29.7" + "@babel/plugin-transform-reserved-words" "^7.29.7" + "@babel/plugin-transform-shorthand-properties" "^7.29.7" + "@babel/plugin-transform-spread" "^7.29.7" + "@babel/plugin-transform-sticky-regex" "^7.29.7" + "@babel/plugin-transform-template-literals" "^7.29.7" + "@babel/plugin-transform-typeof-symbol" "^7.29.7" + "@babel/plugin-transform-unicode-escapes" "^7.29.7" + "@babel/plugin-transform-unicode-property-regex" "^7.29.7" + "@babel/plugin-transform-unicode-regex" "^7.29.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.29.7" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.14" - babel-plugin-polyfill-corejs3 "^0.13.0" - babel-plugin-polyfill-regenerator "^0.6.5" - core-js-compat "^3.43.0" + babel-plugin-polyfill-corejs2 "^0.4.15" + babel-plugin-polyfill-corejs3 "^0.14.0" + babel-plugin-polyfill-regenerator "^0.6.6" + core-js-compat "^3.48.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -997,69 +1037,72 @@ esutils "^2.0.2" "@babel/preset-react@^7.18.6", "@babel/preset-react@^7.25.9": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.27.1.tgz#86ea0a5ca3984663f744be2fd26cb6747c3fd0ec" - integrity sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.29.7.tgz#2ed18366e38c2081bbf1760dc01e88fa5674eb17" + integrity sha512-C+PV1TFUPTmBQGoPBL8j2QmLpZ117YTCwxIZeJOM96GbYMFSc7/pOXU5lVykwnZxyTqQxRsvoRk6f2FktZgGHA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-transform-react-display-name" "^7.27.1" - "@babel/plugin-transform-react-jsx" "^7.27.1" - "@babel/plugin-transform-react-jsx-development" "^7.27.1" - "@babel/plugin-transform-react-pure-annotations" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-transform-react-display-name" "^7.29.7" + "@babel/plugin-transform-react-jsx" "^7.29.7" + "@babel/plugin-transform-react-jsx-development" "^7.29.7" + "@babel/plugin-transform-react-pure-annotations" "^7.29.7" "@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.25.9": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz#190742a6428d282306648a55b0529b561484f912" - integrity sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-syntax-jsx" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-typescript" "^7.27.1" - -"@babel/runtime-corejs3@^7.25.9": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz#c25be39c7997ce2f130d70b9baecb8ed94df93fa" - integrity sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ== - dependencies: - core-js-pure "^3.43.0" - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.25.9", "@babel/runtime@^7.28.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" - integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== - -"@babel/template@^7.27.1", "@babel/template@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.2" - "@babel/types" "^7.27.1" - -"@babel/traverse@^7.25.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" - integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.3" - "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.4" - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz#de9be1f47b785c979ec7b3a71f4cd8bae5267b62" + integrity sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ== + dependencies: + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-syntax-jsx" "^7.29.7" + "@babel/plugin-transform-modules-commonjs" "^7.29.7" + "@babel/plugin-transform-typescript" "^7.29.7" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.25.9", "@babel/runtime@^7.28.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.7.tgz#12022450c45a4da6d8d8287b18a4ff2ddb23f768" + integrity sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw== + +"@babel/template@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.29.7.tgz#4d9d4004f645cdd304de958c725162784ecac700" + integrity sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/traverse@^7.25.9", "@babel/traverse@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.7.tgz#c47b07a41b95da0907d026b5dd894d98de7d2f2d" + integrity sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw== + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" debug "^4.3.1" -"@babel/types@^7.21.3", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.4.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" - integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== +"@babel/types@^7.21.3", "@babel/types@^7.29.7", "@babel/types@^7.4.4": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.7.tgz#8005e31d82712ee7adaef6e23c63b71a62770a92" + integrity sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA== dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-string-parser" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + +"@braintree/sanitize-url@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz#ca2035b0fefe956a8676ff0c69af73e605fcd81f" + integrity sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA== + +"@chevrotain/types@~11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@chevrotain/types/-/types-11.1.2.tgz#e83a1a2704f0c5e49e7592b214031a0f4a34d7e5" + integrity sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw== "@colors/colors@1.5.0": version "1.5.0" @@ -1104,15 +1147,15 @@ resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz#7aec77bcb89c2da80ef207e73f474ef9e1b3cdf1" integrity sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ== -"@csstools/postcss-alpha-function@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.0.tgz#8764fbbf25a5f1e106fb623ae632e01a220a6fc2" - integrity sha512-r2L8KNg5Wriq5n8IUQcjzy2Rh37J5YjzP9iOyHZL5fxdWYHB08vqykHQa4wAzN/tXwDuCHnhQDGCtxfS76xn7g== +"@csstools/postcss-alpha-function@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz#7989605711de7831bc7cd75b94c9b5bac9c3728e" + integrity sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" "@csstools/postcss-cascade-layers@^5.0.2": @@ -1123,58 +1166,69 @@ "@csstools/selector-specificity" "^5.0.0" postcss-selector-parser "^7.0.0" -"@csstools/postcss-color-function-display-p3-linear@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.0.tgz#27395b62a5d9a108eefcc0eb463247a15f4269a1" - integrity sha512-7q+OuUqfowRrP84m/Jl0wv3pfCQyUTCW5MxDIux+/yty5IkUUHOTigCjrC0Fjy3OT0ncGLudHbfLWmP7E1arNA== +"@csstools/postcss-color-function-display-p3-linear@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz#3017ff5e1f65307d6083e58e93d76724fb1ebf9f" + integrity sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-color-function@^4.0.11": - version "4.0.11" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-4.0.11.tgz#03c34a51dc00943a6674294fb1163e7af9e87ffd" - integrity sha512-AtH22zLHTLm64HLdpv5EedT/zmYTm1MtdQbQhRZXxEB6iYtS6SrS1jLX3TcmUWMFzpumK/OVylCm3HcLms4slw== +"@csstools/postcss-color-function@^4.0.12": + version "4.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz#a7c85a98c77b522a194a1bbb00dd207f40c7a771" + integrity sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-color-mix-function@^3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.11.tgz#6db0a1c749fabaf2bf978b37044700d1c1b09fc2" - integrity sha512-cQpXBelpTx0YhScZM5Ve0jDCA4RzwFc7oNafzZOGgCHt/GQVYiU8Vevz9QJcwy/W0Pyi/BneY+KMjz23lI9r+Q== +"@csstools/postcss-color-mix-function@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz#2f1ee9f8208077af069545c9bd79bb9733382c2a" + integrity sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-color-mix-variadic-function-arguments@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.1.tgz#2dd9d66ded0d41cd7b2c13a1188f03e894c17d7e" - integrity sha512-c7hyBtbF+jlHIcUGVdWY06bHICgguV9ypfcELU3eU3W/9fiz2dxM8PqxQk2ndXYTzLnwPvNNqu1yCmQ++N6Dcg== +"@csstools/postcss-color-mix-variadic-function-arguments@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz#b4012b62a4eaa24d694172bb7137f9d2319cb8f2" + integrity sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-content-alt-text@^2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.7.tgz#ac0a263e8acb0be99cdcfc0b1792c62141825747" - integrity sha512-cq/zWaEkpcg3RttJ5+GdNwk26NwxY5KgqgtNL777Fdd28AVGHxuBvqmK4Jq4oKhW1NX4M2LbgYAVVN0NZ+/XYQ== +"@csstools/postcss-content-alt-text@^2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz#1d52da1762893c32999ff76839e48d6ec7c7a4cb" + integrity sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q== dependencies: "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-contrast-color-function@^2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz#ca46986d095c60f208d9e3f24704d199c9172637" + integrity sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" "@csstools/postcss-exponential-functions@^2.0.9": @@ -1203,34 +1257,34 @@ "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" -"@csstools/postcss-gradients-interpolation-method@^5.0.11": - version "5.0.11" - resolved "https://registry.yarnpkg.com/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.11.tgz#f1c5c431a44ed9655cb408aea8666ed2c5250490" - integrity sha512-8M3mcNTL3cGIJXDnvrJ2oWEcKi3zyw7NeYheFKePUlBmLYm1gkw9Rr/BA7lFONrOPeQA3yeMPldrrws6lqHrug== +"@csstools/postcss-gradients-interpolation-method@^5.0.12": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz#0955cce4d97203b861bf66742bbec611b2f3661c" + integrity sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-hwb-function@^4.0.11": - version "4.0.11" - resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.11.tgz#4bb173f1c8c2361bf46a842a948ee687471ae4ea" - integrity sha512-9meZbsVWTZkWsSBazQips3cHUOT29a/UAwFz0AMEXukvpIGGDR9+GMl3nIckWO5sPImsadu4F5Zy+zjt8QgCdA== +"@csstools/postcss-hwb-function@^4.0.12": + version "4.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz#07f7ecb08c50e094673bd20eaf7757db0162beee" + integrity sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-ic-unit@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.3.tgz#ba0375e9d346e6e5a42dc8c2cb1133b2262f9ffa" - integrity sha512-RtYYm2qUIu9vAaHB0cC8rQGlOCQAUgEc2tMr7ewlGXYipBQKjoWmyVArqsk7SEr8N3tErq6P6UOJT3amaVof5Q== +"@csstools/postcss-ic-unit@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz#2ee2da0690db7edfbc469279711b9e69495659d2" + integrity sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg== dependencies: - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" postcss-value-parser "^4.2.0" @@ -1247,14 +1301,14 @@ "@csstools/selector-specificity" "^5.0.0" postcss-selector-parser "^7.0.0" -"@csstools/postcss-light-dark-function@^2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.10.tgz#b606f13d1f81efd297763c6ad1ac515c3ca4165b" - integrity sha512-g7Lwb294lSoNnyrwcqoooh9fTAp47rRNo+ILg7SLRSMU3K9ePIwRt566sNx+pehiCelv4E1ICaU1EwLQuyF2qw== +"@csstools/postcss-light-dark-function@^2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz#0df448aab9a33cb9a085264ff1f396fb80c4437d" + integrity sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA== dependencies: "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" "@csstools/postcss-logical-float-and-clear@^3.0.0": @@ -1314,31 +1368,44 @@ "@csstools/utilities" "^2.0.0" postcss-value-parser "^4.2.0" -"@csstools/postcss-normalize-display-values@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz#ecdde2daf4e192e5da0c6fd933b6d8aff32f2a36" - integrity sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q== +"@csstools/postcss-normalize-display-values@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#3738ecadb38cd6521c9565635d61aa4bf5457d27" + integrity sha512-TQUGBuRvxdc7TgNSTevYqrL8oItxiwPDixk20qCB5me/W8uF7BPbhRrAvFuhEoywQp/woRsUZ6SJ+sU5idZAIA== dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-oklab-function@^4.0.11": - version "4.0.11" - resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.11.tgz#d69242a9b027dda731bd79db7293bc938bb6df97" - integrity sha512-9f03ZGxZ2VmSCrM4SDXlAYP+Xpu4VFzemfQUQFL9OYxAbpvDy0FjDipZ0i8So1pgs8VIbQI0bNjFWgfdpGw8ig== +"@csstools/postcss-oklab-function@^4.0.12": + version "4.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz#416640ef10227eea1375b47b72d141495950971d" + integrity sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-progressive-custom-properties@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.0.tgz#7f15349c2cd108478d28e1503c660d4037925030" - integrity sha512-fWCXRasX17N1NCPTCuwC3FJDV+Wc031f16cFuuMEfIsYJ1q5ABCa59W0C6VeMGqjNv6ldf37vvwXXAeaZjD9PA== +"@csstools/postcss-position-area-property@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-position-area-property/-/postcss-position-area-property-1.0.0.tgz#41f0cbc737a81a42890d5ec035fa26a45f4f4ad4" + integrity sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q== + +"@csstools/postcss-progressive-custom-properties@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz#c39780b9ff0d554efb842b6bd75276aa6f1705db" + integrity sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw== dependencies: postcss-value-parser "^4.2.0" +"@csstools/postcss-property-rule-prelude-list@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-property-rule-prelude-list/-/postcss-property-rule-prelude-list-1.0.0.tgz#700b7aa41228c02281bda074ae778f36a09da188" + integrity sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-random-function@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz#3191f32fe72936e361dadf7dbfb55a0209e2691e" @@ -1348,15 +1415,15 @@ "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" -"@csstools/postcss-relative-color-syntax@^3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.11.tgz#d81d59ff123fa5f3e4a0493b1e2b0585353bb541" - integrity sha512-oQ5fZvkcBrWR+k6arHXk0F8FlkmD4IxM+rcGDLWrF2f31tWyEM3lSraeWAV0f7BGH6LIrqmyU3+Qo/1acfoJng== +"@csstools/postcss-relative-color-syntax@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz#ced792450102441f7c160e1d106f33e4b44181f8" + integrity sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" "@csstools/postcss-scope-pseudo-class@^4.0.1": @@ -1384,6 +1451,21 @@ "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" +"@csstools/postcss-syntax-descriptor-syntax-production@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-syntax-descriptor-syntax-production/-/postcss-syntax-descriptor-syntax-production-1.0.1.tgz#98590e372e547cdae60aef47cfee11f3881307dd" + integrity sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow== + dependencies: + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-system-ui-font-family@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-system-ui-font-family/-/postcss-system-ui-font-family-1.0.0.tgz#bd65b79078debf6f67b318dc9b71a8f9fa16f8c8" + integrity sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-text-decoration-shorthand@^4.0.3": version "4.0.3" resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz#fae1b70f07d1b7beb4c841c86d69e41ecc6f743c" @@ -1426,25 +1508,29 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@docsearch/css@3.9.0": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.9.0.tgz#3bc29c96bf024350d73b0cfb7c2a7b71bf251cd5" - integrity sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA== +"@docsearch/core@4.6.3": + version "4.6.3" + resolved "https://registry.yarnpkg.com/@docsearch/core/-/core-4.6.3.tgz#9954c75c3ae28418e06f8e7537a920d6cd2bc22e" + integrity sha512-rUOujwIpxJRgD7+kicVsI3D5sqBvdiRTquzWBpTEXZs8ZXfGbfzpus5HqumaNYTppN2HvH8E2yNuRwYdHJeOlA== -"@docsearch/react@^3.9.0": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.9.0.tgz#d0842b700c3ee26696786f3c8ae9f10c1a3f0db3" - integrity sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ== +"@docsearch/css@4.6.3": + version "4.6.3" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-4.6.3.tgz#a94065af4a996dd927dc5dda383395e583dbd638" + integrity sha512-nlOwcXcsNAptQl4vlL4MA78qNJKO0Qlds5GuBjCoePgkebTXLSf8Qt1oyZ3YBshYupKXG9VRGEsk1zr23d+bzQ== + +"@docsearch/react@^3.9.0 || ^4.3.2": + version "4.6.3" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-4.6.3.tgz#80df785f9c5e484c960b914a22ea2a3e4c7210ad" + integrity sha512-Bg2wdDsoQVlNCcEKuEJAU04tvHCqgx8rIu+uIoM4pRtcx3TBKJuXutJik3LTA8LRc9YEyHkrYUrmcC0D7BYf+g== dependencies: - "@algolia/autocomplete-core" "1.17.9" - "@algolia/autocomplete-preset-algolia" "1.17.9" - "@docsearch/css" "3.9.0" - algoliasearch "^5.14.2" + "@algolia/autocomplete-core" "1.19.2" + "@docsearch/core" "4.6.3" + "@docsearch/css" "4.6.3" -"@docusaurus/babel@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.8.1.tgz#db329ac047184214e08e2dbc809832c696c18506" - integrity sha512-3brkJrml8vUbn9aeoZUlJfsI/GqyFcDgQJwQkmBtclJgWDEQBKKeagZfOgx0WfUQhagL1sQLNW0iBdxnI863Uw== +"@docusaurus/babel@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.10.2.tgz#4d5f8ac4d16bfe26c06f256687831787edb46e8a" + integrity sha512-aJ1hpGyvfkte3dDAfNbWM4biW4yWZBVz7TIGLZP+v+tWOBgxX3e0N5ZIXHIvmfNNXTI77pcHUx3KmtOk05Ze3Q== dependencies: "@babel/core" "^7.25.9" "@babel/generator" "^7.25.9" @@ -1454,25 +1540,24 @@ "@babel/preset-react" "^7.25.9" "@babel/preset-typescript" "^7.25.9" "@babel/runtime" "^7.25.9" - "@babel/runtime-corejs3" "^7.25.9" "@babel/traverse" "^7.25.9" - "@docusaurus/logger" "3.8.1" - "@docusaurus/utils" "3.8.1" + "@docusaurus/logger" "3.10.2" + "@docusaurus/utils" "3.10.2" babel-plugin-dynamic-import-node "^2.3.3" fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/bundler@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.8.1.tgz#e2b11d615f09a6e470774bb36441b8d06736b94c" - integrity sha512-/z4V0FRoQ0GuSLToNjOSGsk6m2lQUG4FRn8goOVoZSRsTrU8YR2aJacX5K3RG18EaX9b+52pN4m1sL3MQZVsQA== +"@docusaurus/bundler@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.10.2.tgz#323492eb0550b6a7f6e5fa6b9877cdb2c53b1be3" + integrity sha512-i0ZNcy0f0WhaOlYVgzLsWhIoEXO9kS3HRoKPtgE6vQtZUq7arKZaYdNBudr3mqCmd+TyOkwtwfHgs1ENj07r5g== dependencies: "@babel/core" "^7.25.9" - "@docusaurus/babel" "3.8.1" - "@docusaurus/cssnano-preset" "3.8.1" - "@docusaurus/logger" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils" "3.8.1" + "@docusaurus/babel" "3.10.2" + "@docusaurus/cssnano-preset" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" babel-loader "^9.2.1" clean-css "^5.3.3" copy-webpack-plugin "^11.0.0" @@ -1490,20 +1575,20 @@ tslib "^2.6.0" url-loader "^4.1.1" webpack "^5.95.0" - webpackbar "^6.0.1" - -"@docusaurus/core@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.8.1.tgz#c22e47c16a22cb7d245306c64bc54083838ff3db" - integrity sha512-ENB01IyQSqI2FLtOzqSI3qxG2B/jP4gQPahl2C3XReiLebcVh5B5cB9KYFvdoOqOWPyr5gXK4sjgTKv7peXCrA== - dependencies: - "@docusaurus/babel" "3.8.1" - "@docusaurus/bundler" "3.8.1" - "@docusaurus/logger" "3.8.1" - "@docusaurus/mdx-loader" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-common" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" + webpackbar "^7.0.0" + +"@docusaurus/core@3.10.2", "@docusaurus/core@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.10.2.tgz#349cae728fc3769b3f8aef4cf538ccb79aace8d0" + integrity sha512-EYByj6nk+aD9KeVxV6Hmo2/nAAT79P21Y82ycTBOBtrmqilloIbIEhgL2/8Xpt2Jz/pgNqHAwyusOGwmbKeJmA== + dependencies: + "@docusaurus/babel" "3.10.2" + "@docusaurus/bundler" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" boxen "^6.2.1" chalk "^4.1.2" chokidar "^3.5.3" @@ -1511,11 +1596,11 @@ combine-promises "^1.1.0" commander "^5.1.0" core-js "^3.31.1" - detect-port "^1.5.1" + detect-port "^2.1.0" escape-html "^1.0.3" eta "^2.2.0" eval "^0.1.8" - execa "5.1.1" + execa "^5.1.1" fs-extra "^11.1.1" html-tags "^3.3.1" html-webpack-plugin "^5.6.0" @@ -1526,46 +1611,73 @@ prompts "^2.4.2" react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" react-loadable "npm:@docusaurus/react-loadable@6.0.0" - react-loadable-ssr-addon-v5-slorber "^1.0.1" + react-loadable-ssr-addon-v5-slorber "^1.0.3" react-router "^5.3.4" react-router-config "^5.1.1" react-router-dom "^5.3.4" semver "^7.5.4" - serve-handler "^6.1.6" + serve-handler "^6.1.7" tinypool "^1.0.2" tslib "^2.6.0" update-notifier "^6.0.2" webpack "^5.95.0" webpack-bundle-analyzer "^4.10.2" - webpack-dev-server "^4.15.2" + webpack-dev-server "^5.2.2" webpack-merge "^6.0.1" -"@docusaurus/cssnano-preset@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.8.1.tgz#bd55026251a6ab8e2194839a2042458ef9880c44" - integrity sha512-G7WyR2N6SpyUotqhGznERBK+x84uyhfMQM2MmDLs88bw4Flom6TY46HzkRkSEzaP9j80MbTN8naiL1fR17WQug== +"@docusaurus/cssnano-preset@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.2.tgz#e3ac7e85585f77e8fdef95176ab7c211d1296630" + integrity sha512-4gCnHRbJLTloiwfvFAa92tgb2gI4KYhvjfQVYnEaiMO/EgvWfCo1LwytHXen+1oZAN0VAlS0JAPxp3MsvKDa3A== dependencies: cssnano-preset-advanced "^6.1.2" postcss "^8.5.4" postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" -"@docusaurus/logger@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.8.1.tgz#45321b2e2e14695d0dbd8b4104ea7b0fbaa98700" - integrity sha512-2wjeGDhKcExEmjX8k1N/MRDiPKXGF2Pg+df/bDDPnnJWHXnVEZxXj80d6jcxp1Gpnksl0hF8t/ZQw9elqj2+ww== +"@docusaurus/faster@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/faster/-/faster-3.10.2.tgz#6cacd14085445d5826990f7525c5df1cf371e04a" + integrity sha512-p/5E5/RyHv+QWusJMPN5i3OMJTqTgkhuwzVbB1AReDWTUHXQCmf5mlTFzGiDrWeQWIDOKsuOPn1jJh0s9LUOHA== + dependencies: + "@docusaurus/types" "3.10.2" + "@rspack/core" "^1.7.10" + "@swc/core" "^1.15.40" + "@swc/html" "^1.15.40" + browserslist "^4.24.2" + lightningcss "^1.27.0" + semver "^7.5.4" + swc-loader "^0.2.6" + tslib "^2.6.0" + webpack "^5.95.0" + +"@docusaurus/logger@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.10.2.tgz#280bed53d0eb9cdc56e896a155036207910e89c9" + integrity sha512-gSEwqtPfCAnC3ZSJY6xL7tcIfgg0vFD39jbv93eakuweyvO2864xR0K+kmKwBhkTCtWRNjuGGnb5rdmkD/ndqw== dependencies: chalk "^4.1.2" tslib "^2.6.0" -"@docusaurus/mdx-loader@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.8.1.tgz#74309b3614bbcef1d55fb13e6cc339b7fb000b5f" - integrity sha512-DZRhagSFRcEq1cUtBMo4TKxSNo/W6/s44yhr8X+eoXqCLycFQUylebOMPseHi5tc4fkGJqwqpWJLz6JStU9L4w== +"@docusaurus/lqip-loader@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-3.10.2.tgz#6cfe52091e4df3832acfec4001910d0e0889158b" + integrity sha512-U9ON9YXhfQcF7s4JUrcw02Nxez9ctI5nu/+6XGGmLJ+yx36ALT1fFCHzHfd7+TvSB1H7aoT/6T5BdfZvRp++Wg== + dependencies: + "@docusaurus/logger" "3.10.2" + file-loader "^6.2.0" + lodash "^4.17.21" + sharp "^0.32.3" + tslib "^2.6.0" + +"@docusaurus/mdx-loader@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.10.2.tgz#3b4e7ffacff4ed856db2ec4e94c13b0a652d62eb" + integrity sha512-9Fd4V/SFjfrVQ0JH5EN0+iPWyFunvTeQE3gfyFeetqPaXMP0OylIjOw16dCuXG4NZJrYdBqwzjh18/h3gRi47w== dependencies: - "@docusaurus/logger" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" + "@docusaurus/logger" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" "@mdx-js/mdx" "^3.0.0" "@slorber/remark-comment" "^1.0.0" escape-html "^1.0.3" @@ -1588,12 +1700,12 @@ vfile "^6.0.1" webpack "^5.88.1" -"@docusaurus/module-type-aliases@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.8.1.tgz#454de577bd7f50b5eae16db0f76b49ca5e4e281a" - integrity sha512-6xhvAJiXzsaq3JdosS7wbRt/PwEPWHr9eM4YNYqVlbgG1hSK3uQDXTVvQktasp3VO6BmfYWPozueLWuj4gB+vg== +"@docusaurus/module-type-aliases@3.10.2", "@docusaurus/module-type-aliases@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.2.tgz#7c3b940c77d72e71d33a1e76f0e003b418e6163a" + integrity sha512-h/I5e4jaAhDHW4vaLENi1i2hnOEnXY1t9R+nnRTbgUl7ymVRzN/HF7dDfj8rKYGj8gfIge+Ef+iYRAMtbGvsrQ== dependencies: - "@docusaurus/types" "3.8.1" + "@docusaurus/types" "3.10.2" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1601,20 +1713,21 @@ react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" react-loadable "npm:@docusaurus/react-loadable@6.0.0" -"@docusaurus/plugin-content-blog@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.8.1.tgz#88d842b562b04cf59df900d9f6984b086f821525" - integrity sha512-vNTpMmlvNP9n3hGEcgPaXyvTljanAKIUkuG9URQ1DeuDup0OR7Ltvoc8yrmH+iMZJbcQGhUJF+WjHLwuk8HSdw== - dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/logger" "3.8.1" - "@docusaurus/mdx-loader" "3.8.1" - "@docusaurus/theme-common" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-common" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" +"@docusaurus/plugin-content-blog@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.10.2.tgz#2374886ec3d76e8f014e85db8c3c010de6c419be" + integrity sha512-0cbEnNKf0InmLkhj/+nVRmqEnWEoOE8Mh+2x1qOXI0qYpCnphq4RXknVJ8BvybKRXqYVvbmdMfiJSup+k4tm5w== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" cheerio "1.0.0-rc.12" + combine-promises "^1.1.0" feed "^4.2.2" fs-extra "^11.1.1" lodash "^4.17.21" @@ -1625,20 +1738,20 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.8.1.tgz#40686a206abb6373bee5638de100a2c312f112a4" - integrity sha512-oByRkSZzeGNQByCMaX+kif5Nl2vmtj2IHQI2fWjCfCootsdKZDPFLonhIp5s3IGJO7PLUfe0POyw0Xh/RrGXJA== - dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/logger" "3.8.1" - "@docusaurus/mdx-loader" "3.8.1" - "@docusaurus/module-type-aliases" "3.8.1" - "@docusaurus/theme-common" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-common" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" +"@docusaurus/plugin-content-docs@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.2.tgz#249bbc806437f227b06410ecc771eb67d8910a9a" + integrity sha512-Sqwl4FPoZBDrlY8I2VU2H8O0M91CHp9T8ToMSkTZmjvHCif+1laqfXi6sTk8IfyVS/trN5yNjcWd1bFsGB6W5Q== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" "@types/react-router-config" "^5.0.7" combine-promises "^1.1.0" fs-extra "^11.1.1" @@ -1649,142 +1762,163 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-pages@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.8.1.tgz#41b684dbd15390b7bb6a627f78bf81b6324511ac" - integrity sha512-a+V6MS2cIu37E/m7nDJn3dcxpvXb6TvgdNI22vJX8iUTp8eoMoPa0VArEbWvCxMY/xdC26WzNv4wZ6y0iIni/w== +"@docusaurus/plugin-content-pages@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.10.2.tgz#377c11b36a6a5e0c0c14dd9dea799f986d662ed7" + integrity sha512-h5R12sZ/vV9EPiVjvIl9YFCOwkpwXes7dQMYt3EvP6Pphu4amHxxTqWxf08Fl5DR8h+oZMbWpFTNw5vKEYfvzQ== dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/mdx-loader" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" fs-extra "^11.1.1" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/plugin-css-cascade-layers@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.8.1.tgz#cb414b4a82aa60fc64ef2a435ad0105e142a6c71" - integrity sha512-VQ47xRxfNKjHS5ItzaVXpxeTm7/wJLFMOPo1BkmoMG4Cuz4nuI+Hs62+RMk1OqVog68Swz66xVPK8g9XTrBKRw== +"@docusaurus/plugin-css-cascade-layers@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.10.2.tgz#54edc6450b0bb95be5990ea416b4c4dc5e6bdde0" + integrity sha512-UkdvQby5OQUKWrw3lLnSTJXQ6VETaUVTuPQX9AABtmFm5h+ifEBx1OQ+LN726Q4byuwBf2ElHkf4qU4hTxdvRg== dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" tslib "^2.6.0" -"@docusaurus/plugin-debug@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.8.1.tgz#45b107e46b627caaae66995f53197ace78af3491" - integrity sha512-nT3lN7TV5bi5hKMB7FK8gCffFTBSsBsAfV84/v293qAmnHOyg1nr9okEw8AiwcO3bl9vije5nsUvP0aRl2lpaw== +"@docusaurus/plugin-debug@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.10.2.tgz#2452f258668bb2514085d2d5fff700457c531aad" + integrity sha512-8vbZNOSCpnsT57EY6CgN7sgRVmx3KTYwO8Uvo2pbxOyb8tbqAwtT9SslqaQ41HbA1v1hpn5RP7u5s2KvRwAFpQ== dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils" "3.8.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" fs-extra "^11.1.1" react-json-view-lite "^2.3.0" tslib "^2.6.0" -"@docusaurus/plugin-google-analytics@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.8.1.tgz#64a302e62fe5cb6e007367c964feeef7b056764a" - integrity sha512-Hrb/PurOJsmwHAsfMDH6oVpahkEGsx7F8CWMjyP/dw1qjqmdS9rcV1nYCGlM8nOtD3Wk/eaThzUB5TSZsGz+7Q== +"@docusaurus/plugin-google-analytics@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.10.2.tgz#7a0375c5a238cd9220166d9be8afc00ba508c55d" + integrity sha512-kMHMBK9j4VAtgd5owwrRLRIi0EjkrpXlX7ePj1+y68XfVZV9I1T4S+koPDm+Hfw2TtnyHvh0uNrDvjz+DjQGVA== dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" tslib "^2.6.0" -"@docusaurus/plugin-google-gtag@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.8.1.tgz#8c76f8a1d96448f2f0f7b10e6bde451c40672b95" - integrity sha512-tKE8j1cEZCh8KZa4aa80zpSTxsC2/ZYqjx6AAfd8uA8VHZVw79+7OTEP2PoWi0uL5/1Is0LF5Vwxd+1fz5HlKg== +"@docusaurus/plugin-google-gtag@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.10.2.tgz#65df25eb5fb3f2a3f2d0fba8ddd423060e09e1ca" + integrity sha512-Vt90nNFhtAChRe9+it1hcHFgFvETdSnOkL5Bma+p6E/yU2tAYrvvyk+gv+LJGM2ZUkyKuKXLRsZ2Lb0bO7+Vog== dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" - "@types/gtag.js" "^0.0.12" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" tslib "^2.6.0" -"@docusaurus/plugin-google-tag-manager@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.8.1.tgz#88241ffd06369f4a4d5fb982ff3ac2777561ae37" - integrity sha512-iqe3XKITBquZq+6UAXdb1vI0fPY5iIOitVjPQ581R1ZKpHr0qe+V6gVOrrcOHixPDD/BUKdYwkxFjpNiEN+vBw== +"@docusaurus/plugin-google-tag-manager@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.10.2.tgz#882a24e51dc42487d2c1d4f2cde3f59c99a276cb" + integrity sha512-MLCffCldysi/R0nzJQP7ZWd0xAoGNnSTiVOo6TTR6mKVGFhE+/XArGe67ZcaZv1uytgQXoXs92VJrgVDrz80rQ== dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" tslib "^2.6.0" -"@docusaurus/plugin-sitemap@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.8.1.tgz#3aebd39186dc30e53023f1aab44625bc0bdac892" - integrity sha512-+9YV/7VLbGTq8qNkjiugIelmfUEVkTyLe6X8bWq7K5qPvGXAjno27QAfFq63mYfFFbJc7z+pudL63acprbqGzw== - dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/logger" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-common" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" +"@docusaurus/plugin-ideal-image@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-3.10.2.tgz#51fa3048328ce403b2f153aee1fa676827d49106" + integrity sha512-M1uRffUaE5hqbo7368jSclYSU6oOOFdJ3/fq644kwaoComeG+jjBJ9piFrHkExtiU2Q7zcm1dWaqtfJVrR9wSQ== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/lqip-loader" "3.10.2" + "@docusaurus/responsive-loader" "^1.7.0" + "@docusaurus/theme-translations" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + sharp "^0.32.3" + tslib "^2.6.0" + webpack "^5.88.1" + +"@docusaurus/plugin-sitemap@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.10.2.tgz#6c662c7df3bb7d36887f8b73f54d85dc4d36371d" + integrity sha512-PODkwg5XetLML3hU/3xpCKJUZ9cqExLaBnD/Fzzwj2VHogLeqnDisLIujae87zuze7T4mCm2A6KEqZkyiz07EQ== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" fs-extra "^11.1.1" sitemap "^7.1.1" tslib "^2.6.0" -"@docusaurus/plugin-svgr@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-svgr/-/plugin-svgr-3.8.1.tgz#6f340be8eae418a2cce540d8ece096ffd9c9b6ab" - integrity sha512-rW0LWMDsdlsgowVwqiMb/7tANDodpy1wWPwCcamvhY7OECReN3feoFwLjd/U4tKjNY3encj0AJSTxJA+Fpe+Gw== +"@docusaurus/plugin-svgr@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-svgr/-/plugin-svgr-3.10.2.tgz#916fd0a5d39bf73cb621de9789cce243a7ef1754" + integrity sha512-JgfT3jWM0TJ8Uw0cEcqxHpybngQY1vlBYpuuNO+gEh5iPh5Ar+vxq/u9CFrYsWeXy48BN7Db76Pzp2edNXUQ8A== dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" "@svgr/core" "8.1.0" "@svgr/webpack" "^8.1.0" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/preset-classic@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.8.1.tgz#bb79fd12f3211363720c569a526c7e24d3aa966b" - integrity sha512-yJSjYNHXD8POMGc2mKQuj3ApPrN+eG0rO1UPgSx7jySpYU+n4WjBikbrA2ue5ad9A7aouEtMWUoiSRXTH/g7KQ== - dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/plugin-content-blog" "3.8.1" - "@docusaurus/plugin-content-docs" "3.8.1" - "@docusaurus/plugin-content-pages" "3.8.1" - "@docusaurus/plugin-css-cascade-layers" "3.8.1" - "@docusaurus/plugin-debug" "3.8.1" - "@docusaurus/plugin-google-analytics" "3.8.1" - "@docusaurus/plugin-google-gtag" "3.8.1" - "@docusaurus/plugin-google-tag-manager" "3.8.1" - "@docusaurus/plugin-sitemap" "3.8.1" - "@docusaurus/plugin-svgr" "3.8.1" - "@docusaurus/theme-classic" "3.8.1" - "@docusaurus/theme-common" "3.8.1" - "@docusaurus/theme-search-algolia" "3.8.1" - "@docusaurus/types" "3.8.1" - -"@docusaurus/theme-classic@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.8.1.tgz#1e45c66d89ded359225fcd29bf3258d9205765c1" - integrity sha512-bqDUCNqXeYypMCsE1VcTXSI1QuO4KXfx8Cvl6rYfY0bhhqN6d2WZlRkyLg/p6pm+DzvanqHOyYlqdPyP0iz+iw== - dependencies: - "@docusaurus/core" "3.8.1" - "@docusaurus/logger" "3.8.1" - "@docusaurus/mdx-loader" "3.8.1" - "@docusaurus/module-type-aliases" "3.8.1" - "@docusaurus/plugin-content-blog" "3.8.1" - "@docusaurus/plugin-content-docs" "3.8.1" - "@docusaurus/plugin-content-pages" "3.8.1" - "@docusaurus/theme-common" "3.8.1" - "@docusaurus/theme-translations" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-common" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" +"@docusaurus/preset-classic@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.10.2.tgz#e4419c811723ab913a946c63efcc15e7f5f60a0a" + integrity sha512-a4B3VczmDl99zK0EufDQYomdJ186WDingjmDXxhN2PNPS9Ty/Y2M5CLFX1KQMRKqRTLiRDKfutzG5IY1FC/ceg== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/plugin-content-blog" "3.10.2" + "@docusaurus/plugin-content-docs" "3.10.2" + "@docusaurus/plugin-content-pages" "3.10.2" + "@docusaurus/plugin-css-cascade-layers" "3.10.2" + "@docusaurus/plugin-debug" "3.10.2" + "@docusaurus/plugin-google-analytics" "3.10.2" + "@docusaurus/plugin-google-gtag" "3.10.2" + "@docusaurus/plugin-google-tag-manager" "3.10.2" + "@docusaurus/plugin-sitemap" "3.10.2" + "@docusaurus/plugin-svgr" "3.10.2" + "@docusaurus/theme-classic" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/theme-search-algolia" "3.10.2" + "@docusaurus/types" "3.10.2" + +"@docusaurus/responsive-loader@^1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@docusaurus/responsive-loader/-/responsive-loader-1.7.1.tgz#fe22a657263350cbc777e296e8d8403c53d2f247" + integrity sha512-jAebZ43f8GVpZSrijLGHVVp7Y0OMIPRaL+HhiIWQ+f/b72lTsKLkSkOVHEzvd2psNJ9lsoiM3gt6akpak6508w== + dependencies: + loader-utils "^2.0.0" + +"@docusaurus/theme-classic@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.10.2.tgz#a64bd600c789b33c67c30c256b07e2ca0f57e2ae" + integrity sha512-JqTSLQmqmA9uKWZsD5iwBGJ4JyKB4/yTw6PsSXVPRJG/6GAm/u+add9Iip+hvwP12/AnPNztrdxsI14NJW4KeA== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/plugin-content-blog" "3.10.2" + "@docusaurus/plugin-content-docs" "3.10.2" + "@docusaurus/plugin-content-pages" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/theme-translations" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" "@mdx-js/react" "^3.0.0" clsx "^2.0.0" copy-text-to-clipboard "^3.2.0" @@ -1799,15 +1933,15 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-common@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.8.1.tgz#17c23316fbe3ee3f7e707c7298cb59a0fff38b4b" - integrity sha512-UswMOyTnPEVRvN5Qzbo+l8k4xrd5fTFu2VPPfD6FcW/6qUtVLmJTQCktbAL3KJ0BVXGm5aJXz/ZrzqFuZERGPw== +"@docusaurus/theme-common@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.10.2.tgz#5cf2a8b76554b8b38c6afe8448470c411f683e5b" + integrity sha512-R9b/vMpK1yye6hNZTA6x/ivRv+at6GhxnXcxkpzCGzO1R1RwiquqiFg2wMFh6aqlJTpWRFKpFD2TzCDQcyOU0A== dependencies: - "@docusaurus/mdx-loader" "3.8.1" - "@docusaurus/module-type-aliases" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-common" "3.8.1" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1817,21 +1951,35 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.8.1.tgz#3aa3d99c35cc2d4b709fcddd4df875a9b536e29b" - integrity sha512-NBFH5rZVQRAQM087aYSRKQ9yGEK9eHd+xOxQjqNpxMiV85OhJDD4ZGz6YJIod26Fbooy54UWVdzNU0TFeUUUzQ== - dependencies: - "@docsearch/react" "^3.9.0" - "@docusaurus/core" "3.8.1" - "@docusaurus/logger" "3.8.1" - "@docusaurus/plugin-content-docs" "3.8.1" - "@docusaurus/theme-common" "3.8.1" - "@docusaurus/theme-translations" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-validation" "3.8.1" - algoliasearch "^5.17.1" - algoliasearch-helper "^3.22.6" +"@docusaurus/theme-mermaid@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-mermaid/-/theme-mermaid-3.10.2.tgz#826e47a01fefbe49fdbb0f4f575c9399d3ccd92c" + integrity sha512-Stssh5MYQJ+EdYugUXf+ZcpeJFQPKXf0KCd/SWp10o3CmXNaOoh5IEgVjVqY1e1XhQf3on4+Y4BnrMiD95E2SQ== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + mermaid ">=11.6.0" + tslib "^2.6.0" + +"@docusaurus/theme-search-algolia@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.10.2.tgz#e7756d4088a7df4d11fd734bfe0e8fa28ceac1dd" + integrity sha512-1msxllyhi/5m77JukXtp5UFnUAriwZIC1oJ7MTnpQpCwLTbclJi5BK5n28CTZuSXpQN2ewbbnqRgAhMM6c6ihg== + dependencies: + "@algolia/autocomplete-core" "^1.19.2" + "@docsearch/react" "^3.9.0 || ^4.3.2" + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/plugin-content-docs" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/theme-translations" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + algoliasearch "^5.37.0" + algoliasearch-helper "^3.26.0" clsx "^2.0.0" eta "^2.2.0" fs-extra "^11.1.1" @@ -1839,21 +1987,22 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.8.1.tgz#4b1d76973eb53861e167c7723485e059ba4ffd0a" - integrity sha512-OTp6eebuMcf2rJt4bqnvuwmm3NVXfzfYejL+u/Y1qwKhZPrjPoKWfk1CbOP5xH5ZOPkiAsx4dHdQBRJszK3z2g== +"@docusaurus/theme-translations@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.10.2.tgz#cd649083babd12df324e7129008aaccacd4cfb13" + integrity sha512-iv20wrxnyXkY89LM3TzRlzGlt5fIGO5UnaR6UL1ZVfB9RRFjxQFQ6awDrwAc6Km8Y5gD8pInuwYPF+6/TiCxXA== dependencies: fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/types@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.8.1.tgz#83ab66c345464e003b576a49f78897482061fc26" - integrity sha512-ZPdW5AB+pBjiVrcLuw3dOS6BFlrG0XkS2lDGsj8TizcnREQg3J8cjsgfDviszOk4CweNfwo1AEELJkYaMUuOPg== +"@docusaurus/types@3.10.2", "@docusaurus/types@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.10.2.tgz#9ffe35adfb4587e49158ee9e10d94b86419a5932" + integrity sha512-B6rvfwIFSapUqUJjMriZswX13K8l5Z7AcmVE6uTEJpYddQieSTR12DsGaFtcZAIDsQd4p+0WTl0Vc6jmZK0Trw== dependencies: "@mdx-js/mdx" "^3.0.0" "@types/history" "^4.7.11" + "@types/mdast" "^4.0.2" "@types/react" "*" commander "^5.1.0" joi "^17.9.2" @@ -1862,43 +2011,43 @@ webpack "^5.95.0" webpack-merge "^5.9.0" -"@docusaurus/utils-common@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.8.1.tgz#c369b8c3041afb7dcd595d4172beb1cc1015c85f" - integrity sha512-zTZiDlvpvoJIrQEEd71c154DkcriBecm4z94OzEE9kz7ikS3J+iSlABhFXM45mZ0eN5pVqqr7cs60+ZlYLewtg== +"@docusaurus/utils-common@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.10.2.tgz#a65fcfffafa4e15a59fe61d7ba315ee5d4c49269" + integrity sha512-x3Dz6jv6iQKBNjBmVTu8p57abMp/VNTUgKBMgRVXJc5444orBTsArv0+cdfrXTiz/VMmHfDRVkPbL7GH2B7T7w== dependencies: - "@docusaurus/types" "3.8.1" + "@docusaurus/types" "3.10.2" tslib "^2.6.0" -"@docusaurus/utils-validation@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.8.1.tgz#0499c0d151a4098a0963237057993282cfbd538e" - integrity sha512-gs5bXIccxzEbyVecvxg6upTwaUbfa0KMmTj7HhHzc016AGyxH2o73k1/aOD0IFrdCsfJNt37MqNI47s2MgRZMA== +"@docusaurus/utils-validation@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.10.2.tgz#2624b0ca6675675da2f063828115b43c9a22de47" + integrity sha512-sn8unbDfUL585NtR3cwHefPicOyaHvPaX7VD0aOg/siIxUBoKyKKaGEqzJZDS64mM43TnxurkYDtmB1wsJlZsw== dependencies: - "@docusaurus/logger" "3.8.1" - "@docusaurus/utils" "3.8.1" - "@docusaurus/utils-common" "3.8.1" + "@docusaurus/logger" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" fs-extra "^11.2.0" joi "^17.9.2" js-yaml "^4.1.0" lodash "^4.17.21" tslib "^2.6.0" -"@docusaurus/utils@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.8.1.tgz#2ac1e734106e2f73dbd0f6a8824d525f9064e9f0" - integrity sha512-P1ml0nvOmEFdmu0smSXOqTS1sxU5tqvnc0dA4MTKV39kye+bhQnjkIKEE18fNOvxjyB86k8esoCIFM3x4RykOQ== +"@docusaurus/utils@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.10.2.tgz#d99c1ffc5c7961e912344269a8728ce2aad8b3dc" + integrity sha512-xx0W3eav2uW1NRIpuHJWNwLTC15xPNjU4Uxi9NSnd3swYC96BE3vFiT93SD8s24kmAAWNwgZwfZ2fghGZ01Lcw== dependencies: - "@docusaurus/logger" "3.8.1" - "@docusaurus/types" "3.8.1" - "@docusaurus/utils-common" "3.8.1" + "@11ty/gray-matter" "^1.0.0" + "@docusaurus/logger" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-common" "3.10.2" escape-string-regexp "^4.0.0" - execa "5.1.1" + execa "^5.1.1" file-loader "^6.2.0" fs-extra "^11.1.1" github-slugger "^1.5.0" globby "^11.1.0" - gray-matter "^4.0.3" jiti "^1.20.0" js-yaml "^4.1.0" lodash "^4.17.21" @@ -1911,6 +2060,28 @@ utility-types "^3.10.0" webpack "^5.88.1" +"@emnapi/core@^1.5.0": + version "1.11.2" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.2.tgz#fab0a0f3c492d11f5a9ac9065d0d73955ee1c1c9" + integrity sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA== + dependencies: + "@emnapi/wasi-threads" "1.2.2" + tslib "^2.4.0" + +"@emnapi/runtime@^1.5.0": + version "1.11.2" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.2.tgz#eb22f04d76febfdf4f87fdaff54c8a53f6bf0dbd" + integrity sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz#4c93becf5bfa3b13d1bbdcc06aee38321ad8139a" + integrity sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA== + dependencies: + tslib "^2.4.0" + "@emotion/babel-plugin@^11.13.5": version "11.13.5" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz#eab8d65dbded74e0ecfd28dc218e75607c4e7bc0" @@ -2042,6 +2213,15 @@ resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57" integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== +"@iconify/utils@^3.0.2": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-3.1.4.tgz#04dad014e8ed80b1bbe341f5d090059ea0c60578" + integrity sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw== + dependencies: + "@antfu/install-pkg" "^1.1.0" + "@iconify/types" "^2.0.0" + import-meta-resolve "^4.2.0" + "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" @@ -2103,6 +2283,166 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jsonjoy.com/base64@17.67.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-17.67.0.tgz#7eeda3cb41138d77a90408fd2e42b2aba10576d7" + integrity sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw== + +"@jsonjoy.com/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" + integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== + +"@jsonjoy.com/buffers@17.67.0", "@jsonjoy.com/buffers@^17.65.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz#5c58dbcdeea8824ce296bd1cfce006c2eb167b3d" + integrity sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw== + +"@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" + integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA== + +"@jsonjoy.com/codegen@17.67.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz#3635fd8769d77e19b75dc5574bc9756019b2e591" + integrity sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q== + +"@jsonjoy.com/codegen@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" + integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== + +"@jsonjoy.com/fs-core@4.58.0": + version "4.58.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.58.0.tgz#10572cecb73d823e51d85063e53e42b5bea7e211" + integrity sha512-K82t5e9w3NYQeIcw129f0SCH/Rn8m8GKPJBYge4W/sA4hhE5h7I8YQhs2HRpUQyUpi+qk7I9tbp1/b87eCM/PA== + dependencies: + "@jsonjoy.com/fs-node-builtins" "4.58.0" + "@jsonjoy.com/fs-node-utils" "4.58.0" + thingies "^2.5.0" + +"@jsonjoy.com/fs-fsa@4.58.0": + version "4.58.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.58.0.tgz#fd7272e5e72893a9c8a97e2ac0fe0e049dd02cc1" + integrity sha512-1/FdsxQao9pBo2OJLEfKrujHdVyGxXvDTT7EtNh9fvp3MK42nB+xHh1EJr2L1c0a05eCMyFCYZPID3KjX9EAng== + dependencies: + "@jsonjoy.com/fs-core" "4.58.0" + "@jsonjoy.com/fs-node-builtins" "4.58.0" + "@jsonjoy.com/fs-node-utils" "4.58.0" + thingies "^2.5.0" + +"@jsonjoy.com/fs-node-builtins@4.58.0": + version "4.58.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.58.0.tgz#25c1fda79c51a6f9dc4cbe59efd9a2037f67e059" + integrity sha512-M1sAhjR1de4CL7ivQAFYqJRDVE3krwVOmfcAgG5YQJiDWxYfcGDMLUNcx0p/+Rcs31/Inh1m9aUDk/0jfR1T5w== + +"@jsonjoy.com/fs-node-to-fsa@4.58.0": + version "4.58.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.58.0.tgz#be011d218acb977bf8d949b4108b75f6f692c7f0" + integrity sha512-erivc39YHoqWY0U8q5IlEcn238AUkIBByMvM0w7OO/FU9hEH3P7oNkPpYWIMpEMncbePk672GiC8ZSwYc2m7fg== + dependencies: + "@jsonjoy.com/fs-fsa" "4.58.0" + "@jsonjoy.com/fs-node-builtins" "4.58.0" + "@jsonjoy.com/fs-node-utils" "4.58.0" + +"@jsonjoy.com/fs-node-utils@4.58.0": + version "4.58.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.58.0.tgz#10d5d50878f371d04563b66781e5fd7de71aead5" + integrity sha512-IrsAFMFBFQXjpS/u3jOY4DMIbRDg94KxzadddDlJv9xodxZ6/Y3ji91uMwrRqklyu+KoquO/Vxihf3/QrQiuOA== + dependencies: + "@jsonjoy.com/fs-node-builtins" "4.58.0" + +"@jsonjoy.com/fs-node@4.58.0": + version "4.58.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.58.0.tgz#7c404c014102844dabb03ed2f31528d55c8a53aa" + integrity sha512-bOqoLND5b5xyM+1zro63kClBnB05HTIX0RzOSHy4kAjfnec+CTdV742H/nsDmbkDaaDLHMmYqxAw09NQ8yVIrQ== + dependencies: + "@jsonjoy.com/fs-core" "4.58.0" + "@jsonjoy.com/fs-node-builtins" "4.58.0" + "@jsonjoy.com/fs-node-utils" "4.58.0" + "@jsonjoy.com/fs-print" "4.58.0" + "@jsonjoy.com/fs-snapshot" "4.58.0" + glob-to-regex.js "^1.0.0" + thingies "^2.5.0" + +"@jsonjoy.com/fs-print@4.58.0": + version "4.58.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.58.0.tgz#5800d9523f997d96593d5b373d8d63b555707edd" + integrity sha512-jbAYbeuzPXIzvWOuuFMoQgrWaQU5hBqevloebLaiAimoBYLjrjiLPdOaaLHepWcZzOq/7Us8x2F22YlsTPbwmw== + dependencies: + "@jsonjoy.com/fs-node-utils" "4.58.0" + tree-dump "^1.1.0" + +"@jsonjoy.com/fs-snapshot@4.58.0": + version "4.58.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.58.0.tgz#829709f7d4a8d275fc3a071b711207a7a6bdf617" + integrity sha512-DkozLuMgzfpWZO8o8tSlFJIpUQauG7/sgjH0JrqsbLkmjdoInn/o1W7P9FZQSZlR9lOjDgSXs2MfE/sAUi2JRQ== + dependencies: + "@jsonjoy.com/buffers" "^17.65.0" + "@jsonjoy.com/fs-node-utils" "4.58.0" + "@jsonjoy.com/json-pack" "^17.65.0" + "@jsonjoy.com/util" "^17.65.0" + +"@jsonjoy.com/json-pack@^1.11.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" + integrity sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg== + dependencies: + "@jsonjoy.com/base64" "^1.1.2" + "@jsonjoy.com/buffers" "^1.2.0" + "@jsonjoy.com/codegen" "^1.0.0" + "@jsonjoy.com/json-pointer" "^1.0.2" + "@jsonjoy.com/util" "^1.9.0" + hyperdyperid "^1.2.0" + thingies "^2.5.0" + tree-dump "^1.1.0" + +"@jsonjoy.com/json-pack@^17.65.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz#8dd8ff65dd999c5d4d26df46c63915c7bdec093a" + integrity sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w== + dependencies: + "@jsonjoy.com/base64" "17.67.0" + "@jsonjoy.com/buffers" "17.67.0" + "@jsonjoy.com/codegen" "17.67.0" + "@jsonjoy.com/json-pointer" "17.67.0" + "@jsonjoy.com/util" "17.67.0" + hyperdyperid "^1.2.0" + thingies "^2.5.0" + tree-dump "^1.1.0" + +"@jsonjoy.com/json-pointer@17.67.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz#74439573dc046e0c9a3a552fb94b391bc75313b8" + integrity sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA== + dependencies: + "@jsonjoy.com/util" "17.67.0" + +"@jsonjoy.com/json-pointer@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" + integrity sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg== + dependencies: + "@jsonjoy.com/codegen" "^1.0.0" + "@jsonjoy.com/util" "^1.9.0" + +"@jsonjoy.com/util@17.67.0", "@jsonjoy.com/util@^17.65.0": + version "17.67.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-17.67.0.tgz#7c4288fc3808233e55c7610101e7bb4590cddd3f" + integrity sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew== + dependencies: + "@jsonjoy.com/buffers" "17.67.0" + "@jsonjoy.com/codegen" "17.67.0" + +"@jsonjoy.com/util@^1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" + integrity sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ== + dependencies: + "@jsonjoy.com/buffers" "^1.0.0" + "@jsonjoy.com/codegen" "^1.0.0" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.5" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" @@ -2146,89 +2486,153 @@ dependencies: "@types/mdx" "^2.0.0" -"@mui/core-downloads-tracker@^7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.2.tgz#896a7890864d619093dc79541ec1ecfa3b507ad2" - integrity sha512-AOyfHjyDKVPGJJFtxOlept3EYEdLoar/RvssBTWVAvDJGIE676dLi2oT/Kx+FoVXFoA/JdV7DEMq/BVWV3KHRw== +"@mermaid-js/parser@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@mermaid-js/parser/-/parser-1.2.0.tgz#266d728c54d2d4034d270f8b31d790e26296a5fa" + integrity sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA== + dependencies: + "@chevrotain/types" "~11.1.2" + +"@module-federation/error-codes@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/error-codes/-/error-codes-0.22.0.tgz#31ccc990dc240d73912ba7bd001f7e35ac751992" + integrity sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug== + +"@module-federation/runtime-core@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz#7321ec792bb7d1d22bee6162ec43564b769d2a3c" + integrity sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA== + dependencies: + "@module-federation/error-codes" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@module-federation/runtime-tools@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz#36f2a7cb267af208a9d1a237fe9a71b4bf31431e" + integrity sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA== + dependencies: + "@module-federation/runtime" "0.22.0" + "@module-federation/webpack-bundler-runtime" "0.22.0" + +"@module-federation/runtime@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.22.0.tgz#f789c9ef40d846d110711c8221ecc0ad938d43d8" + integrity sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA== + dependencies: + "@module-federation/error-codes" "0.22.0" + "@module-federation/runtime-core" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@module-federation/sdk@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.22.0.tgz#6ad4c1de85a900c3c80ff26cb87cce253e3a2770" + integrity sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g== + +"@module-federation/webpack-bundler-runtime@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz#dcbe8f972d722fe278e6a7c21988d4bee53d401d" + integrity sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA== + dependencies: + "@module-federation/runtime" "0.22.0" + "@module-federation/sdk" "0.22.0" + +"@mui/core-downloads-tracker@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.11.tgz#93251cf192641b9582641991feea60149159902c" + integrity sha512-a7I/b/nBTdXYz2cOSlEmkQ9WWE1x8FHpqMhFPp+Y1VPFxcOw91G5ELOHARQAGSPy5V+UCgJua6K/1x70bAtQPw== "@mui/icons-material@^7.3.1": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-7.3.2.tgz#050049cd6195b815e85888aaebd436e8e95084b8" - integrity sha512-TZWazBjWXBjR6iGcNkbKklnwodcwj0SrChCNHc9BhD9rBgET22J1eFhHsEmvSvru9+opDy3umqAimQjokhfJlQ== + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-7.3.11.tgz#dfea40829d1ca96c074c85093fdfe0de170af5ad" + integrity sha512-+hz5ilwHZ3djd5es3sCErLioqe/NhZcYTsV/TNXZAMdJdb23F4xzJjqnnZdnurc3S1+ietcssRNqieOhPQLZ7Q== dependencies: - "@babel/runtime" "^7.28.3" + "@babel/runtime" "^7.28.6" "@mui/material@^7.3.1": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-7.3.2.tgz#21ad66bba695e2cd36e4a93e2e4ff5e04d8636a1" - integrity sha512-qXvbnawQhqUVfH1LMgMaiytP+ZpGoYhnGl7yYq2x57GYzcFL/iPzSZ3L30tlbwEjSVKNYcbiKO8tANR1tadjUg== - dependencies: - "@babel/runtime" "^7.28.3" - "@mui/core-downloads-tracker" "^7.3.2" - "@mui/system" "^7.3.2" - "@mui/types" "^7.4.6" - "@mui/utils" "^7.3.2" + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-7.3.11.tgz#aa6e0640bb29bd01e6c353ac3436fa0b20e5a36b" + integrity sha512-yq8bPc3LxOwKRWpcjRgDkYFmpM6aKlARfESTmOQcvLYFeJwtHte2tw6hJDrb8sk8wcvpDprHEHVaoUU0MslIkw== + dependencies: + "@babel/runtime" "^7.28.6" + "@mui/core-downloads-tracker" "^7.3.11" + "@mui/system" "^7.3.11" + "@mui/types" "^7.4.12" + "@mui/utils" "^7.3.11" "@popperjs/core" "^2.11.8" "@types/react-transition-group" "^4.4.12" clsx "^2.1.1" - csstype "^3.1.3" + csstype "^3.2.3" prop-types "^15.8.1" - react-is "^19.1.1" + react-is "^19.2.3" react-transition-group "^4.4.5" -"@mui/private-theming@^7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-7.3.2.tgz#9b883ac9ec9288327de038da6ddf8ffa179be831" - integrity sha512-ha7mFoOyZGJr75xeiO9lugS3joRROjc8tG1u4P50dH0KR7bwhHznVMcYg7MouochUy0OxooJm/OOSpJ7gKcMvg== +"@mui/private-theming@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-7.3.11.tgz#96d4cde586624916816f5a97fef3c808cf562fb0" + integrity sha512-9B+YKms0fRHbNrqp9tOT/DNbNnU5gyvJ1o3qAGXfq8GmZcbJnE3At9x07Zr/o0pkhzg4aDdwXVqe4+AcgtOCPA== dependencies: - "@babel/runtime" "^7.28.3" - "@mui/utils" "^7.3.2" + "@babel/runtime" "^7.28.6" + "@mui/utils" "^7.3.11" prop-types "^15.8.1" -"@mui/styled-engine@^7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-7.3.2.tgz#cac6acb9480d6eaf60d9c99a7d24503e53236b32" - integrity sha512-PkJzW+mTaek4e0nPYZ6qLnW5RGa0KN+eRTf5FA2nc7cFZTeM+qebmGibaTLrgQBy3UpcpemaqfzToBNkzuxqew== +"@mui/styled-engine@^7.3.10": + version "7.3.10" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-7.3.10.tgz#53e98c1fdeda972b5932c76f6a2a29faf33f0d11" + integrity sha512-WxE9SiF8xskAQqGjsp0poXCkCqsoXFEsSr0HBXfApmGHR+DBnXRp+z46Vsltg4gpPM4Z96DeAQRpeAOnhNg7Ng== dependencies: - "@babel/runtime" "^7.28.3" + "@babel/runtime" "^7.28.6" "@emotion/cache" "^11.14.0" "@emotion/serialize" "^1.3.3" "@emotion/sheet" "^1.4.0" - csstype "^3.1.3" + csstype "^3.2.3" prop-types "^15.8.1" -"@mui/system@^7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-7.3.2.tgz#e838097fc6cb0a2e4c1822478950db89affb116a" - integrity sha512-9d8JEvZW+H6cVkaZ+FK56R53vkJe3HsTpcjMUtH8v1xK6Y1TjzHdZ7Jck02mGXJsE6MQGWVs3ogRHTQmS9Q/rA== +"@mui/system@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-7.3.11.tgz#ffb8ba06f43d697db80257b9a2dfc8042b18554a" + integrity sha512-7izwGWdNawAKpBKcRlx7f2gFnAAjmASBWvMcyX4YYEeLOFsbfGRbUYGInvnAcUeql3rPxI7F9Ft4oY2OLRz44g== dependencies: - "@babel/runtime" "^7.28.3" - "@mui/private-theming" "^7.3.2" - "@mui/styled-engine" "^7.3.2" - "@mui/types" "^7.4.6" - "@mui/utils" "^7.3.2" + "@babel/runtime" "^7.28.6" + "@mui/private-theming" "^7.3.11" + "@mui/styled-engine" "^7.3.10" + "@mui/types" "^7.4.12" + "@mui/utils" "^7.3.11" clsx "^2.1.1" - csstype "^3.1.3" + csstype "^3.2.3" prop-types "^15.8.1" -"@mui/types@^7.4.6": - version "7.4.6" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.4.6.tgz#1432e0814cf155287283f6bbd1e95976a148ef07" - integrity sha512-NVBbIw+4CDMMppNamVxyTccNv0WxtDb7motWDlMeSC8Oy95saj1TIZMGynPpFLePt3yOD8TskzumeqORCgRGWw== +"@mui/types@^7.4.12": + version "7.4.12" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.4.12.tgz#e4eba37a7506419ea5c5e0604322ba82b271bf46" + integrity sha512-iKNAF2u9PzSIj40CjvKJWxFXJo122jXVdrmdh0hMYd+FR+NuJMkr/L88XwWLCRiJ5P1j+uyac25+Kp6YC4hu6w== dependencies: - "@babel/runtime" "^7.28.3" + "@babel/runtime" "^7.28.6" -"@mui/utils@^7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-7.3.2.tgz#361775d72c557a03115150e8aec4329c7ef14563" - integrity sha512-4DMWQGenOdLnM3y/SdFQFwKsCLM+mqxzvoWp9+x2XdEzXapkznauHLiXtSohHs/mc0+5/9UACt1GdugCX2te5g== +"@mui/utils@^7.3.11": + version "7.3.11" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-7.3.11.tgz#493f46f053fe3a692e041b1b6b8295e2f46d9448" + integrity sha512-XTjGnifwteg71/ij+0e7Y7d+hwyntMYP5wPoA/g2drdGH+Flkvjwy0OfrVpKBbaOvofq4zU/LIyUZyKgmWu18g== dependencies: - "@babel/runtime" "^7.28.3" - "@mui/types" "^7.4.6" + "@babel/runtime" "^7.28.6" + "@mui/types" "^7.4.12" "@types/prop-types" "^15.7.15" clsx "^2.1.1" prop-types "^15.8.1" - react-is "^19.1.1" + react-is "^19.2.3" + +"@napi-rs/wasm-runtime@1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz#dcfea99a75f06209a235f3d941e3460a51e9b14c" + integrity sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw== + dependencies: + "@emnapi/core" "^1.5.0" + "@emnapi/runtime" "^1.5.0" + "@tybys/wasm-util" "^0.10.1" + +"@noble/hashes@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -2251,6 +2655,136 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.8.0.tgz#b48a8389319228f929e9acd8cee8da6c858738de" + integrity sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA== + dependencies: + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + "@peculiar/asn1-x509-attr" "^2.8.0" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-csr@^2.6.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.8.0.tgz#c9bb5dec2eaff824a705e82a4a58d45e6d2c35d0" + integrity sha512-akbF8+uvleHs8sejNPQxwmVFuInAg6FMNHOwMILXfP518YfFJwdR3jr6oNUPOaEJfuEhn/vkNOCIT6ASUd4mbg== + dependencies: + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-ecc@^2.6.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.8.0.tgz#d51ab2b07eca98e0cf492d051e98bbd0a071305a" + integrity sha512-ohwlk+u9Rv2NOAY1c6MfHj45ATVF8R1DUN/WCgABiRtLi2ZftlZWZX7KvpAbU8v9xPcmoILfELeEABj/rn18AQ== + dependencies: + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-pfx@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.8.0.tgz#8e189b6455e2bf9e5f921bb150ea86d7e7d1875d" + integrity sha512-5yof1ytoB++RQtaFbqSUJ8pxDJtZT6vbVqZ8XoJ61ph7UjNVvfFwAilnCodqkNsAodpy13gDhoxZXw00pghnyg== + dependencies: + "@peculiar/asn1-cms" "^2.8.0" + "@peculiar/asn1-pkcs8" "^2.8.0" + "@peculiar/asn1-rsa" "^2.8.0" + "@peculiar/asn1-schema" "^2.8.0" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-pkcs8@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.8.0.tgz#a46cf8857b9b063896afa41d2b8b2aa6a07a70a2" + integrity sha512-qAKXtLpBEw9LqhKpjw3ajZSXlBur+ipW+y2ivVBQAG6F6qRx94yO+1ZR4mvw+YaCfKSaOzLeYEzsPaBp4SJELA== + dependencies: + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-pkcs9@^2.6.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.8.0.tgz#6d62697af0bbd4f30fdf0d23b4018f3f09620de3" + integrity sha512-b5nDWCnkV60+cQ141D6sVVwK9nz64R5n3zSVnklGd+ECdkW2Ol3U1a6yYFlalpSOaD557yuJB64A+q42jG7lUQ== + dependencies: + "@peculiar/asn1-cms" "^2.8.0" + "@peculiar/asn1-pfx" "^2.8.0" + "@peculiar/asn1-pkcs8" "^2.8.0" + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + "@peculiar/asn1-x509-attr" "^2.8.0" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.8.0.tgz#9d98d0fc42fec50119d2881b8a9925d36daaea73" + integrity sha512-zHEUlCqB2mk7x2lxDwHHJy7hWZOPdGHVlsmITWKB5/PbQo61atbu9PJ/0r9dQNMwFzbKPXZ8uK8/91eUhRznSg== + dependencies: + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-schema@^2.6.0", "@peculiar/asn1-schema@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.8.0.tgz#69699f84259b2161607cabfc34e512a4023dbef9" + integrity sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q== + dependencies: + "@peculiar/utils" "^2.0.2" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-x509-attr@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.8.0.tgz#bd168e3f5e8bc23e56b1a97891f9f2fb7f730204" + integrity sha512-tHjkfS/qhMnmrlB2J9NhflQlQ7In3khO3CfmVrriOlpTeErY9ZIKOso1hQ5JQiyrJ7ShvqVPk7E5fQmbclkSKA== + dependencies: + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.8.0.tgz#9958a9ef35dec8426aabad78ffe8798e318b06e2" + integrity sha512-N0CMuhWUzsWEVq6F1q9X6+VKUnWzSW+cSVg+aPaGGwDdbFoFWTYgin5MHwXgpWd6y9COMBxnfy/Qc+Xc7F0Zwg== + dependencies: + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/utils" "^2.0.2" + asn1js "^3.0.10" + tslib "^2.8.1" + +"@peculiar/utils@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@peculiar/utils/-/utils-2.0.3.tgz#a27ca4c4b73652e110f19a7d16d664f458a5528e" + integrity sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ== + dependencies: + tslib "^2.8.1" + +"@peculiar/x509@^1.14.2": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@peculiar/x509/-/x509-1.14.3.tgz#2c44c2b89474346afec38a0c2803ec4fb8ce959e" + integrity sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA== + dependencies: + "@peculiar/asn1-cms" "^2.6.0" + "@peculiar/asn1-csr" "^2.6.0" + "@peculiar/asn1-ecc" "^2.6.0" + "@peculiar/asn1-pkcs9" "^2.6.0" + "@peculiar/asn1-rsa" "^2.6.0" + "@peculiar/asn1-schema" "^2.6.0" + "@peculiar/asn1-x509" "^2.6.0" + pvtsutils "^1.3.6" + reflect-metadata "^0.2.2" + tslib "^2.8.1" + tsyringe "^4.10.0" + "@pnpm/config.env-replace@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" @@ -2263,10 +2797,10 @@ dependencies: graceful-fs "4.2.10" -"@pnpm/npm-conf@^2.1.0": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz#bb375a571a0bd63ab0a23bece33033c683e9b6b0" - integrity sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw== +"@pnpm/npm-conf@^3.0.2": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-3.0.3.tgz#17b59982126c86294a8d248aa1d7b185f2df6484" + integrity sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA== dependencies: "@pnpm/config.env-replace" "^1.1.0" "@pnpm/network.ca-file" "^1.0.1" @@ -2282,6 +2816,88 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== +"@rspack/binding-darwin-arm64@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.12.tgz#e6e10e7ff15c2254d6cbe9125a747ada880a34f3" + integrity sha512-rbFprJaJiqrmfy8SHth8EsoRS0wg4bXcucwj9NiMzpGFq14Opw8c04iQ6H9BECYzgmN0PKZ9rh41LdVvhdZe4A== + +"@rspack/binding-darwin-x64@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.12.tgz#fe90b64228eb49612e4932049325f52a4ddcfd28" + integrity sha512-jnOp+/UXOJa9xqUb8KXH03sysoO2e4Ij6tw6MqDdmdj8n/A8PQENRPUbW9AwXpPtVDJPus9r4fi7b3+6e4B8Hg== + +"@rspack/binding-linux-arm64-gnu@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.12.tgz#61d63a0fcb9b4eb25b9d68e1f897c8e2619a8a5a" + integrity sha512-C8owWG+yvo7X0oVLIXetkoJhIFBP1LYNcAQqtgLmJnQLQDklGuP83dKC+zISGQWpjawHfZ1ER96vLgoTrxKZdw== + +"@rspack/binding-linux-arm64-musl@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.12.tgz#fd5157890b1250937bb98332dcbb35ff2d7aafd3" + integrity sha512-i51WWI64aRpsfSki6rN0aepPqXkVfS+vZM7+4bWDcmnhUmdMvhIPcYg0QRk3DtyJnu33jqNLM0WHY78k00NyfA== + +"@rspack/binding-linux-x64-gnu@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.12.tgz#a8c963c47a043069b154c704d87bf6a658772ac7" + integrity sha512-MSos0FuPEefqo9V92ULd5hggKG29EkSNg1zDcypy0OkpsKh5pfjVxTLYFXgTcVyFoUQQbdG8zFBzYbwmJ8V4ew== + +"@rspack/binding-linux-x64-musl@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.12.tgz#1e95af2b152a0833272c26c3473cfa60832ef8b0" + integrity sha512-JcAMVKXOnjfpC3coWjCFPWD3Yl8RBw6a+IXQQ8mfRlHaHMIiOv8IfZqx15XRxMUn49CtP7Z0Na8iiAg2aKrcfw== + +"@rspack/binding-wasm32-wasi@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.12.tgz#37a10f322e82cbd51114e8a3182f46c6af101a20" + integrity sha512-n+ZqP6ZMc0nhOgvadg5VhEs9ojtbES80AcWeFnmGkbzIszvGSO63GKNiRkXtjJ9KFuRzytbbmsCqkUVH+Tywxg== + dependencies: + "@napi-rs/wasm-runtime" "1.0.7" + +"@rspack/binding-win32-arm64-msvc@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.12.tgz#77f648ee1cb717c50fdd02126a528b4960654116" + integrity sha512-8+h5fYDXYdmugbdfZ+D1y8IQ3rv2EhSfyGP7vBe+bjNyaMa4jWrpucmZbtxojUL1AzaeuHbvMdj9UO/gelk/+g== + +"@rspack/binding-win32-ia32-msvc@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.12.tgz#9f7cbb26a9c8d9a1cc15d2059de21172b1623c41" + integrity sha512-cDMGwTRSa2p9fNBVe1wTRkF2AEXZ9ARWW36QeC5CkLaI0Ezz8lvhF2+CSOPnhaQ1O1qtn0L0SF+lFnrY+I7xGQ== + +"@rspack/binding-win32-x64-msvc@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.12.tgz#b4c6dceaa63def4aa205d25246c1a5b05d7f36b0" + integrity sha512-wIqFvlgFqrgUyj/6S/FJcvShnkZOmIeXTfqvheLY67MGq8qd8jb1YimQVKAIrmWB3yuJKUFACI3Ag1UBtEedEA== + +"@rspack/binding@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.7.12.tgz#8c0b19795f980b0e513855245e689719352c08a4" + integrity sha512-f4HHuLbvuld8Ba4iB/4ibse5XrKxFrgmM3S4P2AOKnPlekAFlBjmltCuaTL/W2ggYvILaVY+YcFXrEH1rrKeQA== + optionalDependencies: + "@rspack/binding-darwin-arm64" "1.7.12" + "@rspack/binding-darwin-x64" "1.7.12" + "@rspack/binding-linux-arm64-gnu" "1.7.12" + "@rspack/binding-linux-arm64-musl" "1.7.12" + "@rspack/binding-linux-x64-gnu" "1.7.12" + "@rspack/binding-linux-x64-musl" "1.7.12" + "@rspack/binding-wasm32-wasi" "1.7.12" + "@rspack/binding-win32-arm64-msvc" "1.7.12" + "@rspack/binding-win32-ia32-msvc" "1.7.12" + "@rspack/binding-win32-x64-msvc" "1.7.12" + +"@rspack/core@^1.7.10": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.7.12.tgz#e2a36bd16a10e10aee5905827064ac4b8a63b321" + integrity sha512-6CwFIHlhRmXfZoMj3v9MZ1SMTPBn+cHVXeMIeaGp5sufqinKsISbsqHu6ZMJu2wDSmZLdmQJX6zLxkhcAUlhkQ== + dependencies: + "@module-federation/runtime-tools" "0.22.0" + "@rspack/binding" "1.7.12" + "@rspack/lite-tapable" "1.1.0" + +"@rspack/lite-tapable@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz#3cfdafeed01078e116bd4f191b684c8b484de425" + integrity sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw== + "@sideway/address@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" @@ -2300,9 +2916,9 @@ integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== "@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + version "0.27.10" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.10.tgz#beefe675f1853f73676aecc915b2bd2ac98c4fc6" + integrity sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA== "@sindresorhus/is@^4.6.0": version "4.6.0" @@ -2429,6 +3045,179 @@ "@svgr/plugin-jsx" "8.1.0" "@svgr/plugin-svgo" "8.1.0" +"@swc/core-darwin-arm64@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.16.0.tgz#8c5a2af031c62ebcb6354aa6975bfb7eac895223" + integrity sha512-SJQPl+xG/zB8bNjC/gTg3WOmOvz7EzlQD+VShfCKFYPNr2qvb+vATUY11vYEjnMWCn6wV8H8eAtjQrVflYyX5A== + +"@swc/core-darwin-x64@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.16.0.tgz#0d2496c0429d7e8bc45b50348adf9d105bb56793" + integrity sha512-ql2JVch8V5t1i+HxiiuD4oVDI1dOku4/e3QiCkplONrm3SLitqNAP+nztHN51fSG2IgGuOwpAi3hgA+ukT5yQg== + +"@swc/core-linux-arm-gnueabihf@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.16.0.tgz#5f02a85842a04cd21f2ab9e8e67dc4b16f7024a4" + integrity sha512-PcdDBaRbe39y37h1rXVkhNy7mEU7f8b34KD761C68R23EsfMsj5oDPVddRzGdSRAvwwSfH0WSNEHgYmc/AJipg== + +"@swc/core-linux-arm64-gnu@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.16.0.tgz#6264498c88c51649511c6b4af532d330d3cf0631" + integrity sha512-t21IUztHQ/COucy7Kk9eIlehmq08H/hYq7aRA6fZox3S5ddi6TxWPK6e5S/+aTCf6+Od9qQ+LIpjHMiTy737vA== + +"@swc/core-linux-arm64-musl@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.16.0.tgz#7a451eba69aa9a80799b9b8b9af46bf6f49803bd" + integrity sha512-d9+iajbMB87b0umgbP+Gy3yBDSDgty4Q6H5pZ8fgTb/dOoKIwwynP4L4kvWCOFg2i49kxmAAUs1uJZh9s0E+RQ== + +"@swc/core-linux-ppc64-gnu@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.16.0.tgz#99a7ba46a56190a52c646506e940dffe554c5d10" + integrity sha512-QRpeKGOg+B0qmo3BFU+6rL/gpoKYYJ7OFSMf5DNMafohYZ/iq2qvAH9Gcrf8NxROj3iooKOVewJ+YgahH1nSLw== + +"@swc/core-linux-s390x-gnu@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.16.0.tgz#61473e056d1dd0d4690352a875c14f41bdd9f60a" + integrity sha512-q+Vr/hmHCcRXT/WFzOJC+T6GGEEtq2iaTtmyLfxO7yzu4ckgcqSNkg9m181wfNhuMwfNBoBhOfwQCnLsGZ5F4g== + +"@swc/core-linux-x64-gnu@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.16.0.tgz#008fc149a9135bca92b1e1f63037e2612c4d0fb5" + integrity sha512-DWVBc3QnpsSgKoq8N4rmZeZa5r/XrHdLkITsExN/tvTdqPtAPDPt+Ysy33OfgBlyN8lNe4xwsXWe6DXlRkJeRQ== + +"@swc/core-linux-x64-musl@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.16.0.tgz#4300ea0c63864dc3989ca0e956b4a5e4c666196c" + integrity sha512-6XCgDSc1HPf/5dpjvABhKHICiBcsuZyW3hQMkn8sxel0TqprkJGp+H4iaBYIUTPixhrBub2hBPtfjcZLE6yL3w== + +"@swc/core-win32-arm64-msvc@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.16.0.tgz#1d4146b7c1aada2992692cdc72bb0b43a885136e" + integrity sha512-T/+9VVCZJ3AKEth9IP3U9AJ2YscQq+7LUqRTvfR4a2q36+Ri22oOwUizpAKOqQ42vb2Y/kOa4TOcJOfHoDIT/w== + +"@swc/core-win32-ia32-msvc@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.16.0.tgz#c5c2a60905ffa9e4647214bef75778f0c73ba0d4" + integrity sha512-Pr1lsR/PMs8ndL0UWMrW8nLZ7H7sspIxBRDdjL8f+YJ/FJNASgzfunbVVXAqj0csgIJYHPZy+OW9smjFmk1Rcg== + +"@swc/core-win32-x64-msvc@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.16.0.tgz#67dd85a90437e6fa9951cce7842f6cac3ec3f60d" + integrity sha512-ktdeYLgOQdaonvsj5tJijqgpb0wk7gfF80wCFVA0kucI1hhSUIyfcGbjo5+9sdqv38OhMnTdLoA6xbqgOgPQjw== + +"@swc/core@^1.15.40": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.16.0.tgz#79cd13789725d3e3ad0df605dc88d9e255d7ebfd" + integrity sha512-zSdvEHxBg00WhUNtW/u58hhcdR33gjtMQvOBo8F7POWJDyjRCt/miKfhidT3hCc/118RUwNnlEAmxiihFMbK4Q== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.28" + optionalDependencies: + "@swc/core-darwin-arm64" "1.16.0" + "@swc/core-darwin-x64" "1.16.0" + "@swc/core-linux-arm-gnueabihf" "1.16.0" + "@swc/core-linux-arm64-gnu" "1.16.0" + "@swc/core-linux-arm64-musl" "1.16.0" + "@swc/core-linux-ppc64-gnu" "1.16.0" + "@swc/core-linux-s390x-gnu" "1.16.0" + "@swc/core-linux-x64-gnu" "1.16.0" + "@swc/core-linux-x64-musl" "1.16.0" + "@swc/core-win32-arm64-msvc" "1.16.0" + "@swc/core-win32-ia32-msvc" "1.16.0" + "@swc/core-win32-x64-msvc" "1.16.0" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/html-darwin-arm64@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-darwin-arm64/-/html-darwin-arm64-1.16.0.tgz#4ff019e7ce2c28bd4ebada939346fc5896124902" + integrity sha512-vp8i42hiGM/Jy4lY48sOu+y02SnWKpqxsUErCHnWIU/G8WxHdZrX+xn8VOph/eQXFk4kU+/kGdaRDrRKGMITnQ== + +"@swc/html-darwin-x64@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-darwin-x64/-/html-darwin-x64-1.16.0.tgz#de93a5d661737531d2a37c50ece24f406f4e3006" + integrity sha512-CsRsBMO2evmQbz1JEzwbebzZro4F1TjT0IGrEk/IxzRMmQjJ8zfNOe140ToouuZs3HnLSuJQgMadI2WE76fxbw== + +"@swc/html-linux-arm-gnueabihf@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.16.0.tgz#e33a47d0d80155fce0949fd79a007589aba2de93" + integrity sha512-Dbw/+0FQLzhcYOIUktBUu34qpBFsnW+qp6kid8Dfs/M8FUOOsST96zh7lZ3NSV/Z7XgOuvWDXz5HVmevuiRm+w== + +"@swc/html-linux-arm64-gnu@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.16.0.tgz#040b699a45457e0f366f2901f0c08a972e18c5ff" + integrity sha512-e3EyiP0e8Y9UMY/Kmdg4rcq934WHRcvjElHaGQkDecypGxDC9eoihNlrSTxNZQXnCrgUoqrGfxQiappYUwA86A== + +"@swc/html-linux-arm64-musl@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.16.0.tgz#2ed7555b7f52445d8a7cb6382a7bd1b97a3f7904" + integrity sha512-f9lCGwEJIwOOjpunMq8ALWHhSzd/8D4bgmEPsUrkHbTxSopKU1hPxTSPwGZvwNxWNsTJjACZsnAyyGcND+O5aQ== + +"@swc/html-linux-ppc64-gnu@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-linux-ppc64-gnu/-/html-linux-ppc64-gnu-1.16.0.tgz#b6472fb092b04bf94240a03ab1c9995fd5b5fcfa" + integrity sha512-Yc4Q4agRXBDLI1gs3HEwf6Rp2U0z+6ivmie77bfPjH5b1EOC3g/XrviNtAFfG7sEYzEjHZGHTr5ohs9Hd3ibYw== + +"@swc/html-linux-s390x-gnu@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-linux-s390x-gnu/-/html-linux-s390x-gnu-1.16.0.tgz#ad9188db0e37dd866a7c26424860d58fbae88619" + integrity sha512-0LqXAV+uBZJeqYCsLDE2QtZqHK2sAzOo51BJP45GQLqjIWYY5ujnSIMppZeaDclS/ZIpRIegluypTA2BoQW9qg== + +"@swc/html-linux-x64-gnu@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.16.0.tgz#4d2cb77943007da23a07d6b8dba90eaa457180cd" + integrity sha512-AglfxbBTnc1q+cDLufeqvgsNytiuSJbjPLxOJ9QM8fz49iZJQicD//Y4OgsD+2FVfbMsL4/g60+jE3aTEpGqbQ== + +"@swc/html-linux-x64-musl@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.16.0.tgz#3b009dd3852dd303a273e588e781bbae6ed20acc" + integrity sha512-Xa0sEUCowK9fN2Na0bguTGdx++BjLeONFG3omWVPMEd2VTJYOfNVhqka4pKbmQUocCVhQbxewuuZOxrO/6Fk6Q== + +"@swc/html-win32-arm64-msvc@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.16.0.tgz#a5d36e976b9a7c0fa72f926740d0e55779b4c319" + integrity sha512-8CR2aS/kWzr/cFlRschBUj94SiZ87f36U3ChUQX/fEoHTR1Z29PQTdmqtna4wueSNItk2Q1gyi6Y1OD0U/iDuQ== + +"@swc/html-win32-ia32-msvc@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.16.0.tgz#6ceeb3248f650577540510f12d0786b251d35add" + integrity sha512-UlNq29HY9HtDnVUEB37IRrzqMh/mdksc2djKikouNRJ0bJvp4wIcXfkRKNMS+9wDgXdtMWV8JNyAKOGTwvt4UQ== + +"@swc/html-win32-x64-msvc@1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.16.0.tgz#dd61c46a5ffca51607c3c3ef9b0365e43577c155" + integrity sha512-3a+67eFx2XLWzDtYs5dg/t20J8uFXemF68tt7vIKyItdNzew+ivBu19JzQN/6wGSVHrXqf17vEQwmOO+gEYi1A== + +"@swc/html@^1.15.40": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@swc/html/-/html-1.16.0.tgz#52250b60f3a15413af6a1802be85e07ce98ad159" + integrity sha512-mVJxXQo4Ga0OX5/aF6gKeclfps/aVsJpfaiEMifoplOhVBXGeKeMkr81Icspg/6WErbINVb1P47VFbj6cv+UrA== + dependencies: + "@swc/counter" "^0.1.3" + optionalDependencies: + "@swc/html-darwin-arm64" "1.16.0" + "@swc/html-darwin-x64" "1.16.0" + "@swc/html-linux-arm-gnueabihf" "1.16.0" + "@swc/html-linux-arm64-gnu" "1.16.0" + "@swc/html-linux-arm64-musl" "1.16.0" + "@swc/html-linux-ppc64-gnu" "1.16.0" + "@swc/html-linux-s390x-gnu" "1.16.0" + "@swc/html-linux-x64-gnu" "1.16.0" + "@swc/html-linux-x64-musl" "1.16.0" + "@swc/html-win32-arm64-msvc" "1.16.0" + "@swc/html-win32-ia32-msvc" "1.16.0" + "@swc/html-win32-x64-msvc" "1.16.0" + +"@swc/types@^0.1.28": + version "0.1.28" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.28.tgz#e3cd892383fba3b8904c40518bbe1265a50753f2" + integrity sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw== + dependencies: + "@swc/counter" "^0.1.3" + "@szmarczak/http-timer@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" @@ -2436,10 +3225,12 @@ dependencies: defer-to-connect "^2.0.1" -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@tybys/wasm-util@^0.10.1": + version "0.10.3" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.3.tgz#015cba9e9dd47ce14d03d2a8c5d547bfb169665d" + integrity sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg== + dependencies: + tslib "^2.4.0" "@types/body-parser@*": version "1.19.6" @@ -2449,14 +3240,14 @@ "@types/connect" "*" "@types/node" "*" -"@types/bonjour@^3.5.9": +"@types/bonjour@^3.5.13": version "3.5.13" resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== dependencies: "@types/node" "*" -"@types/connect-history-api-fallback@^1.3.5": +"@types/connect-history-api-fallback@^1.5.4": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== @@ -2471,28 +3262,222 @@ dependencies: "@types/node" "*" -"@types/debug@^4.0.0": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== +"@types/d3-array@*": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.2.tgz#e02151464d02d4a1b44646d0fcdb93faf88fde8c" + integrity sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw== + +"@types/d3-axis@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-3.0.6.tgz#e760e5765b8188b1defa32bc8bb6062f81e4c795" + integrity sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw== dependencies: - "@types/ms" "*" + "@types/d3-selection" "*" -"@types/eslint-scope@^3.7.7": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== +"@types/d3-brush@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-3.0.6.tgz#c2f4362b045d472e1b186cdbec329ba52bdaee6c" + integrity sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A== dependencies: - "@types/eslint" "*" - "@types/estree" "*" + "@types/d3-selection" "*" + +"@types/d3-chord@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-3.0.6.tgz#1706ca40cf7ea59a0add8f4456efff8f8775793d" + integrity sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg== + +"@types/d3-color@*": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" + integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== -"@types/eslint@*": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" - integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== +"@types/d3-contour@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-3.0.6.tgz#9ada3fa9c4d00e3a5093fed0356c7ab929604231" + integrity sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg== dependencies: - "@types/estree" "*" - "@types/json-schema" "*" + "@types/d3-array" "*" + "@types/geojson" "*" + +"@types/d3-delaunay@*": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz#185c1a80cc807fdda2a3fe960f7c11c4a27952e1" + integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== + +"@types/d3-dispatch@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz#ef004d8a128046cfce434d17182f834e44ef95b2" + integrity sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA== + +"@types/d3-drag@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-3.0.7.tgz#b13aba8b2442b4068c9a9e6d1d82f8bcea77fc02" + integrity sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-dsv@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-3.0.7.tgz#0a351f996dc99b37f4fa58b492c2d1c04e3dac17" + integrity sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g== + +"@types/d3-ease@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-3.0.2.tgz#e28db1bfbfa617076f7770dd1d9a48eaa3b6c51b" + integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== + +"@types/d3-fetch@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-3.0.7.tgz#c04a2b4f23181aa376f30af0283dbc7b3b569980" + integrity sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA== + dependencies: + "@types/d3-dsv" "*" + +"@types/d3-force@*": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-3.0.10.tgz#6dc8fc6e1f35704f3b057090beeeb7ac674bff1a" + integrity sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw== + +"@types/d3-format@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.4.tgz#b1e4465644ddb3fdf3a263febb240a6cd616de90" + integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== + +"@types/d3-geo@*": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-3.1.0.tgz#b9e56a079449174f0a2c8684a9a4df3f60522440" + integrity sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ== + dependencies: + "@types/geojson" "*" + +"@types/d3-hierarchy@*": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz#6023fb3b2d463229f2d680f9ac4b47466f71f17b" + integrity sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg== + +"@types/d3-interpolate@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" + integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.1.1.tgz#f632b380c3aca1dba8e34aa049bcd6a4af23df8a" + integrity sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg== + +"@types/d3-polygon@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-3.0.2.tgz#dfae54a6d35d19e76ac9565bcb32a8e54693189c" + integrity sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA== + +"@types/d3-quadtree@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz#d4740b0fe35b1c58b66e1488f4e7ed02952f570f" + integrity sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg== + +"@types/d3-random@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-3.0.4.tgz#6bd3683b8332fc0f01e7059b7636bc5c7ede7337" + integrity sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA== + +"@types/d3-scale-chromatic@*": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#dc6d4f9a98376f18ea50bad6c39537f1b5463c39" + integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== + +"@types/d3-scale@*": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.9.tgz#57a2f707242e6fe1de81ad7bfcccaaf606179afb" + integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== + dependencies: + "@types/d3-time" "*" + +"@types/d3-selection@*": + version "3.0.11" + resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-3.0.11.tgz#bd7a45fc0a8c3167a631675e61bc2ca2b058d4a3" + integrity sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w== + +"@types/d3-shape@*": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.8.tgz#d1516cc508753be06852cd06758e3bb54a22b0e3" + integrity sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w== + dependencies: + "@types/d3-path" "*" + +"@types/d3-time-format@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-4.0.3.tgz#d6bc1e6b6a7db69cccfbbdd4c34b70632d9e9db2" + integrity sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg== + +"@types/d3-time@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.4.tgz#8472feecd639691450dd8000eb33edd444e1323f" + integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== + +"@types/d3-timer@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" + integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== + +"@types/d3-transition@*": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-3.0.9.tgz#1136bc57e9ddb3c390dccc9b5ff3b7d2b8d94706" + integrity sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-zoom@*": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-3.0.8.tgz#dccb32d1c56b1e1c6e0f1180d994896f038bc40b" + integrity sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw== + dependencies: + "@types/d3-interpolate" "*" + "@types/d3-selection" "*" + +"@types/d3@^7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/d3/-/d3-7.4.3.tgz#d4550a85d08f4978faf0a4c36b848c61eaac07e2" + integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww== + dependencies: + "@types/d3-array" "*" + "@types/d3-axis" "*" + "@types/d3-brush" "*" + "@types/d3-chord" "*" + "@types/d3-color" "*" + "@types/d3-contour" "*" + "@types/d3-delaunay" "*" + "@types/d3-dispatch" "*" + "@types/d3-drag" "*" + "@types/d3-dsv" "*" + "@types/d3-ease" "*" + "@types/d3-fetch" "*" + "@types/d3-force" "*" + "@types/d3-format" "*" + "@types/d3-geo" "*" + "@types/d3-hierarchy" "*" + "@types/d3-interpolate" "*" + "@types/d3-path" "*" + "@types/d3-polygon" "*" + "@types/d3-quadtree" "*" + "@types/d3-random" "*" + "@types/d3-scale" "*" + "@types/d3-scale-chromatic" "*" + "@types/d3-selection" "*" + "@types/d3-shape" "*" + "@types/d3-time" "*" + "@types/d3-time-format" "*" + "@types/d3-timer" "*" + "@types/d3-transition" "*" + "@types/d3-zoom" "*" + +"@types/debug@^4.0.0": + version "4.1.13" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.13.tgz#22d1cc9d542d3593caea764f974306ab36286ee7" + integrity sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw== + dependencies: + "@types/ms" "*" "@types/estree-jsx@^1.0.0": version "1.0.5" @@ -2502,24 +3487,24 @@ "@types/estree" "*" "@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.9.tgz#cf3f0e876d7bee15a93ab925b82bf570a3904a24" + integrity sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz#2fa94879c9d46b11a5df4c74ac75befd6b283de6" - integrity sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ== + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz#1a77faffee9572d39124933259be2523837d7eaa" + integrity sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/send" "*" -"@types/express-serve-static-core@^4.17.33": - version "4.19.6" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267" - integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== +"@types/express-serve-static-core@^4.17.21", "@types/express-serve-static-core@^4.17.33": + version "4.19.8" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz#99b960322a4d576b239a640ab52ef191989b036f" + integrity sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2527,28 +3512,28 @@ "@types/send" "*" "@types/express@*": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.3.tgz#6c4bc6acddc2e2a587142e1d8be0bce20757e956" - integrity sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw== + version "5.0.6" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.6.tgz#2d724b2c990dcb8c8444063f3580a903f6d500cc" + integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^5.0.0" - "@types/serve-static" "*" + "@types/serve-static" "^2" -"@types/express@^4.17.13": - version "4.17.23" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.23.tgz#35af3193c640bfd4d7fe77191cd0ed411a433bef" - integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ== +"@types/express@^4.17.25": + version "4.17.25" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.25.tgz#070c8c73a6fee6936d65c195dbbfb7da5026649b" + integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" - "@types/serve-static" "*" + "@types/serve-static" "^1" -"@types/gtag.js@^0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@types/gtag.js/-/gtag.js-0.0.12.tgz#095122edca896689bdfcdd73b057e23064d23572" - integrity sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg== +"@types/geojson@*": + version "7946.0.16" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.16.tgz#8ebe53d69efada7044454e3305c19017d97ced2a" + integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg== "@types/hast@^3.0.0": version "3.0.4" @@ -2568,9 +3553,9 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-cache-semantics@^4.0.2": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" - integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#f6a7788f438cbfde15f29acad46512b4c01913b3" + integrity sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q== "@types/http-errors@*": version "2.0.5" @@ -2578,9 +3563,9 @@ integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== "@types/http-proxy@^1.17.8": - version "1.17.16" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.16.tgz#dee360707b35b3cc85afcde89ffeebff7d7f9240" - integrity sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w== + version "1.17.17" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.17.tgz#d9e2c4571fe3507343cb210cd41790375e59a533" + integrity sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw== dependencies: "@types/node" "*" @@ -2603,7 +3588,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2616,9 +3601,9 @@ "@types/unist" "*" "@types/mdx@^2.0.0": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.13.tgz#68f6877043d377092890ff5b298152b0a21671bd" - integrity sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw== + version "2.0.14" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.14.tgz#c1e54113265b152021ab0afe0434e3cadd90bfe3" + integrity sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg== "@types/mime@^1": version "1.3.5" @@ -2630,19 +3615,12 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== -"@types/node-forge@^1.3.0": - version "1.3.14" - resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.14.tgz#006c2616ccd65550560c2757d8472eb6d3ecea0b" - integrity sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw== - dependencies: - "@types/node" "*" - "@types/node@*": - version "24.5.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.5.0.tgz#70a482e6b1d50e603729d74e62a9a43705ddc9d7" - integrity sha512-y1dMvuvJspJiPSDZUQ+WMBvF7dpnEqN4x9DDC9ie5Fs/HUZJA3wFp7EhHoVaKX/iI0cRoECV8X2jL8zi0xrHCg== + version "26.1.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.1.0.tgz#aa85f0727fc5611347091c478341c63650903439" + integrity sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw== dependencies: - undici-types "~7.12.0" + undici-types "~8.3.0" "@types/node@^17.0.5": version "17.0.45" @@ -2655,9 +3633,9 @@ integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== "@types/prismjs@^1.26.0": - version "1.26.5" - resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.5.tgz#72499abbb4c4ec9982446509d2f14fb8483869d6" - integrity sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ== + version "1.26.6" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.6.tgz#6ea27c126d645319ae4f7055eda63a9e835c0187" + integrity sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw== "@types/prop-types@^15.7.15": version "15.7.15" @@ -2665,9 +3643,9 @@ integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw== "@types/qs@*": - version "6.14.0" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" - integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== + version "6.15.1" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.15.1.tgz#8606884272c63f0db96986bd3548650d8a9388bf" + integrity sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw== "@types/range-parser@*": version "1.2.7" @@ -2706,16 +3684,16 @@ integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== "@types/react@*": - version "19.1.13" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.13.tgz#fc650ffa680d739a25a530f5d7ebe00cdd771883" - integrity sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ== + version "19.2.17" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.17.tgz#dccac365baa0f1734ec270ff4b51c89465e8dc7f" + integrity sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw== dependencies: - csstype "^3.0.2" + csstype "^3.2.2" -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== "@types/sax@^1.2.1": version "1.2.7" @@ -2725,36 +3703,56 @@ "@types/node" "*" "@types/send@*": - version "0.17.5" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.5.tgz#d991d4f2b16f2b1ef497131f00a9114290791e74" - integrity sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w== + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74" + integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== + dependencies: + "@types/node" "*" + +"@types/send@<1": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== dependencies: "@types/mime" "^1" "@types/node" "*" -"@types/serve-index@^1.9.1": +"@types/serve-index@^1.9.4": version "1.9.4" resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== dependencies: "@types/express" "*" -"@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.8" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.8.tgz#8180c3fbe4a70e8f00b9f70b9ba7f08f35987877" - integrity sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg== +"@types/serve-static@^1", "@types/serve-static@^1.15.5": + version "1.15.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "<1" + +"@types/serve-static@^2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-2.2.0.tgz#d4a447503ead0d1671132d1ab6bd58b805d8de6a" + integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== dependencies: "@types/http-errors" "*" "@types/node" "*" - "@types/send" "*" -"@types/sockjs@^0.3.33": +"@types/sockjs@^0.3.36": version "0.3.36" resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== dependencies: "@types/node" "*" +"@types/trusted-types@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + "@types/unist@*", "@types/unist@^3.0.0": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" @@ -2765,7 +3763,7 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== -"@types/ws@^8.5.5": +"@types/ws@^8.5.10": version "8.18.1" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== @@ -2778,16 +3776,24 @@ integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": - version "17.0.33" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" - integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + version "17.0.35" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" + integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== dependencies: "@types/yargs-parser" "*" -"@ungap/structured-clone@^1.0.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" - integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== +"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.2.tgz#a03ad82cd5676414d068ba86f880c5681194aadf" + integrity sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA== + +"@upsetjs/venn.js@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@upsetjs/venn.js/-/venn.js-2.0.0.tgz#3be192038cdda927aa4f8b22ab51af82abf47f34" + integrity sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw== + optionalDependencies: + d3-selection "^3.0.0" + d3-transition "^3.0.1" "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" @@ -2920,7 +3926,7 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -accepts@~1.3.4, accepts@~1.3.8: +accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -2939,21 +3945,21 @@ acorn-jsx@^5.0.0: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.0.0: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + version "8.3.5" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.5.tgz#8a6b8ca8fc5b34685af15dabb44118663c296496" + integrity sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw== dependencies: acorn "^8.11.0" -acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.15.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== +acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.15.0, acorn@^8.16.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.17.0.tgz#1785adb84faf8d8add10369b93826fc2bd08f1fe" + integrity sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg== -address@^1.0.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== +address@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/address/-/address-2.0.3.tgz#e910900615db3d8a20c040d4c710631062fc4ba8" + integrity sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA== aggregate-error@^3.0.0: version "3.1.0" @@ -2983,9 +3989,9 @@ ajv-keywords@^5.1.0: fast-deep-equal "^3.1.3" ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + version "6.15.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.15.0.tgz#07e982c74626167aa7a2495c53817892d7139492" + integrity sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -2993,41 +3999,41 @@ ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.9.0: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" - integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + version "8.20.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.20.0.tgz#304b3636add88ba7d936760dd50ece006dea95f9" + integrity sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA== dependencies: fast-deep-equal "^3.1.3" fast-uri "^3.0.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" -algoliasearch-helper@^3.22.6: - version "3.26.0" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.26.0.tgz#d6e283396a9fc5bf944f365dc3b712570314363f" - integrity sha512-Rv2x3GXleQ3ygwhkhJubhhYGsICmShLAiqtUuJTUkr9uOCOXyF2E71LVT4XDnVffbknv8XgScP4U0Oxtgm+hIw== +algoliasearch-helper@^3.26.0: + version "3.29.1" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.29.1.tgz#4e764351493d461aa825d2a1209403a98e9b2477" + integrity sha512-6ck2YFudF2Pje7szQoPBiRFTGfd+1I+0I/WfLPGn0bj1kvrFoOQmNyedNiDxTk3/r4IfSLDYk+RA4G7u8H6+yA== dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^5.14.2, algoliasearch@^5.17.1: - version "5.37.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.37.0.tgz#73dc4a09654e6e02b529300018d639706b95b47b" - integrity sha512-y7gau/ZOQDqoInTQp0IwTOjkrHc4Aq4R8JgpmCleFwiLl+PbN2DMWoDUWZnrK8AhNJwT++dn28Bt4NZYNLAmuA== - dependencies: - "@algolia/abtesting" "1.3.0" - "@algolia/client-abtesting" "5.37.0" - "@algolia/client-analytics" "5.37.0" - "@algolia/client-common" "5.37.0" - "@algolia/client-insights" "5.37.0" - "@algolia/client-personalization" "5.37.0" - "@algolia/client-query-suggestions" "5.37.0" - "@algolia/client-search" "5.37.0" - "@algolia/ingestion" "1.37.0" - "@algolia/monitoring" "1.37.0" - "@algolia/recommend" "5.37.0" - "@algolia/requester-browser-xhr" "5.37.0" - "@algolia/requester-fetch" "5.37.0" - "@algolia/requester-node-http" "5.37.0" +algoliasearch@^5.37.0: + version "5.55.1" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.55.1.tgz#d9c8a4636c79946881802a0d7426fc33333873e1" + integrity sha512-FyaFnnsbVPtevQwqSj/SdxE3jAsSsY0BEH8IVLf9rXxEBdAhAmT6VKCVSMWoaPIHVN1Eufh/1w8q6k8URpIkWw== + dependencies: + "@algolia/abtesting" "1.21.1" + "@algolia/client-abtesting" "5.55.1" + "@algolia/client-analytics" "5.55.1" + "@algolia/client-common" "5.55.1" + "@algolia/client-insights" "5.55.1" + "@algolia/client-personalization" "5.55.1" + "@algolia/client-query-suggestions" "5.55.1" + "@algolia/client-search" "5.55.1" + "@algolia/ingestion" "1.55.1" + "@algolia/monitoring" "1.55.1" + "@algolia/recommend" "5.55.1" + "@algolia/requester-browser-xhr" "5.55.1" + "@algolia/requester-fetch" "5.55.1" + "@algolia/requester-node-http" "5.55.1" ansi-align@^3.0.1: version "3.0.1" @@ -3036,13 +4042,6 @@ ansi-align@^3.0.1: dependencies: string-width "^4.1.0" -ansi-escapes@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - ansi-html-community@^0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" @@ -3053,12 +4052,12 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^6.0.1: +ansi-regex@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -3070,6 +4069,11 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== +ansis@^3.2.0: + version "3.17.0" + resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.17.0.tgz#fa8d9c2a93fe7d1177e0c17f9eeb562a58a832d7" + integrity sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg== + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -3083,13 +4087,6 @@ arg@^5.0.0: resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -3105,23 +4102,36 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +asn1js@^3.0.10, asn1js@^3.0.6: + version "3.0.10" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.10.tgz#df26c874c8a8b41ca605efea47b2ad07551013dd" + integrity sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg== + dependencies: + pvtsutils "^1.3.6" + pvutils "^1.1.5" + tslib "^2.8.1" + astring@^1.8.0: version "1.9.0" resolved "https://registry.yarnpkg.com/astring/-/astring-1.9.0.tgz#cc73e6062a7eb03e7d19c22d8b0b3451fd9bfeef" integrity sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== -autoprefixer@^10.4.19, autoprefixer@^10.4.21: - version "10.4.21" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d" - integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== +autoprefixer@^10.4.19, autoprefixer@^10.4.23: + version "10.5.2" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.5.2.tgz#5d7dcaab1c294038fe51e0fa3738d28e559caac0" + integrity sha512-rD5t5DwOjJdmSORcTq64j8MawTC+tbQ+HHqjR4NDumamy/ambn1UJrlKL+KdwujWxMkFjPM3pPHOEA9tl4767Q== dependencies: - browserslist "^4.24.4" - caniuse-lite "^1.0.30001702" - fraction.js "^4.3.7" - normalize-range "^0.1.2" + browserslist "^4.28.4" + caniuse-lite "^1.0.30001799" + fraction.js "^5.3.4" picocolors "^1.1.1" postcss-value-parser "^4.2.0" +b4a@^1.6.4, b4a@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.8.1.tgz#7f16334ca80127aeb26064a28841acbf174840a4" + integrity sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw== + babel-loader@^9.2.1: version "9.2.1" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b" @@ -3146,13 +4156,13 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f" - integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg== +babel-plugin-polyfill-corejs2@^0.4.14, babel-plugin-polyfill-corejs2@^0.4.15: + version "0.4.17" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz#198f970f1c99a856b466d1187e88ce30bd199d91" + integrity sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w== dependencies: - "@babel/compat-data" "^7.27.7" - "@babel/helper-define-polyfill-provider" "^0.6.5" + "@babel/compat-data" "^7.28.6" + "@babel/helper-define-polyfill-provider" "^0.6.8" semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.13.0: @@ -3163,12 +4173,20 @@ babel-plugin-polyfill-corejs3@^0.13.0: "@babel/helper-define-polyfill-provider" "^0.6.5" core-js-compat "^3.43.0" -babel-plugin-polyfill-regenerator@^0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5" - integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg== +babel-plugin-polyfill-corejs3@^0.14.0: + version "0.14.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz#6ac08d2f312affb70c4c69c0fbba4cb417ee5587" + integrity sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" + "@babel/helper-define-polyfill-provider" "^0.6.8" + core-js-compat "^3.48.0" + +babel-plugin-polyfill-regenerator@^0.6.5, babel-plugin-polyfill-regenerator@^0.6.6: + version "0.6.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz#8a6bfd5dd54239362b3d06ce47ac52b2d95d7721" + integrity sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.8" bail@^2.0.0: version "2.0.2" @@ -3180,10 +4198,64 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -baseline-browser-mapping@^2.8.2: - version "2.8.4" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.4.tgz#e553e12272c4965682743705efd8b4b4cf0d709b" - integrity sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw== +balanced-match@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" + integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== + +bare-events@^2.5.4, bare-events@^2.7.0: + version "2.9.1" + resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.9.1.tgz#5c86616966343bcb03a1b3155feab253eadbf349" + integrity sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg== + +bare-fs@^4.0.1, bare-fs@^4.5.5: + version "4.7.3" + resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-4.7.3.tgz#0f3c7daaff2830214abca580fb20bdb5191072b1" + integrity sha512-xRgplks8SvcKkdlv2M6Z2LZmRsmqd+x0nXXGXeMEjwdibj1HSDrlnqBRLeYdMvsgCox7Bq0e+DHwfczOfsn6IA== + dependencies: + bare-events "^2.5.4" + bare-path "^3.0.0" + bare-stream "^2.6.4" + bare-url "^2.2.2" + fast-fifo "^1.3.2" + +bare-os@^3.0.1: + version "3.9.3" + resolved "https://registry.yarnpkg.com/bare-os/-/bare-os-3.9.3.tgz#eaf8a978a5fdda3dafc702b0f001449249eabe49" + integrity sha512-fF4Q7QsyKVF5Rj0qvI8BgUNjqzC2JvQlpTaPLjVJVxYVUX5Zr9un+y3w1HmA4nNKdFmRBT8z/WmrjvXzXVerKQ== + +bare-path@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/bare-path/-/bare-path-3.0.1.tgz#c12c81b527936b650e87c5d00264d59ef458082c" + integrity sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ== + dependencies: + bare-os "^3.0.1" + +bare-stream@^2.6.4: + version "2.13.3" + resolved "https://registry.yarnpkg.com/bare-stream/-/bare-stream-2.13.3.tgz#f6186c7cbb4bbf53a4560f35e48b16373ba51ce6" + integrity sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ== + dependencies: + b4a "^1.8.1" + streamx "^2.25.0" + teex "^1.0.1" + +bare-url@^2.2.2: + version "2.4.5" + resolved "https://registry.yarnpkg.com/bare-url/-/bare-url-2.4.5.tgz#50d205f8f2724eec60fd091ba9cebd675fca63aa" + integrity sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ== + dependencies: + bare-path "^3.0.0" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +baseline-browser-mapping@^2.10.42: + version "2.10.42" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz#195dcc76baa269a497f0b07decace169fee9ac58" + integrity sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q== batch@0.6.1: version "0.6.1" @@ -3200,28 +4272,37 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -body-parser@1.20.3: - version "1.20.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" - integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: - bytes "3.1.2" + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +body-parser@~1.20.5: + version "1.20.5" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.5.tgz#303c8c34423d1d6fa799bc764e93c1e4dc6ebf64" + integrity sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA== + dependencies: + bytes "~3.1.2" content-type "~1.0.5" debug "2.6.9" depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.13.0" - raw-body "2.5.2" + destroy "~1.2.0" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + on-finished "~2.4.1" + qs "~6.15.1" + raw-body "~2.5.3" type-is "~1.6.18" - unpipe "1.0.0" + unpipe "~1.0.0" -bonjour-service@^1.0.11: - version "1.3.0" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" - integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== +bonjour-service@^1.2.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.4.2.tgz#33ce18eddf13047e5eeb08939018b20bae1a1473" + integrity sha512-lMskhnsW70yWHr4PhPeh2rvaIkLSaDpp+nmtbXBZaNKTXwxL73QOkW6HhbzqTImXjevn9TreGT4GACGBCGP9nQ== dependencies: fast-deep-equal "^3.1.3" multicast-dns "^7.2.5" @@ -3260,13 +4341,20 @@ boxen@^7.0.0: wrap-ansi "^8.1.0" brace-expansion@^1.1.7: - version "1.1.12" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" - integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + version "1.1.15" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.15.tgz#a6d90d54067236e5f42570a3b7378d594d9b7738" + integrity sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^5.0.5: + version "5.0.7" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.7.tgz#1b0e46965b479dad65af737b4a02790a05498337" + integrity sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA== + dependencies: + balanced-match "^4.0.2" + braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" @@ -3274,32 +4362,52 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.25.1, browserslist@^4.25.3: - version "4.26.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.26.0.tgz#035ca84b4ff312a3c6a7014a77beb83456a882dd" - integrity sha512-P9go2WrP9FiPwLv3zqRD/Uoxo0RSHjzFCiQz7d4vbmwNqQFo9T9WCeP/Qn5EbcKQY6DBbkxEXNcpJOmncNrb7A== +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.2, browserslist@^4.28.1, browserslist@^4.28.4: + version "4.28.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.5.tgz#438b7d38c0d4b47740bbb36778d5bdca01b37838" + integrity sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ== dependencies: - baseline-browser-mapping "^2.8.2" - caniuse-lite "^1.0.30001741" - electron-to-chromium "^1.5.218" - node-releases "^2.0.21" - update-browserslist-db "^1.1.3" + baseline-browser-mapping "^2.10.42" + caniuse-lite "^1.0.30001800" + electron-to-chromium "^1.5.387" + node-releases "^2.0.50" + update-browserslist-db "^1.2.3" buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -bytes@3.1.2: +bytes@3.1.2, bytes@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +bytestreamjs@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bytestreamjs/-/bytestreamjs-2.0.1.tgz#a32947c7ce389a6fa11a09a9a563d0a45889535e" + integrity sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ== + cacheable-lookup@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" @@ -3318,7 +4426,7 @@ cacheable-request@^10.2.8: normalize-url "^8.0.0" responselike "^3.0.0" -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== @@ -3327,13 +4435,13 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply- function-bind "^1.1.2" call-bind@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" - integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + version "1.0.9" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.9.tgz#39a644700c80bc7d0ca9102fc6d1d43b2fd7eee7" + integrity sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ== dependencies: - call-bind-apply-helpers "^1.0.0" - es-define-property "^1.0.0" - get-intrinsic "^1.2.4" + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + get-intrinsic "^1.3.0" set-function-length "^1.2.2" call-bound@^1.0.2, call-bound@^1.0.3: @@ -3377,10 +4485,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001741: - version "1.0.30001741" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz#67fb92953edc536442f3c9da74320774aa523143" - integrity sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001799, caniuse-lite@^1.0.30001800: + version "1.0.30001802" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001802.tgz#2671fb13d468930586c56ffa80feb1c51e18ec69" + integrity sha512-vmv8ub2xwTNmljSKf82mtCk5JH7hC+YgzLj3P5zotvA0tPQ9016tdNNOG8WRca1IxOnhSsivB+J0z5FeE5LOUw== ccount@^2.0.0: version "2.0.1" @@ -3450,7 +4558,7 @@ cheerio@1.0.0-rc.12: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" -chokidar@^3.5.3: +chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -3465,6 +4573,11 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + chrome-trace-event@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" @@ -3536,11 +4649,27 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + colord@^2.9.3: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" @@ -3561,6 +4690,11 @@ comma-separated-tokens@^2.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== +commander@7, commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commander@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" @@ -3576,11 +4710,6 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - commander@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" @@ -3598,7 +4727,7 @@ compressible@~2.0.18: dependencies: mime-db ">= 1.43.0 < 2" -compression@^1.7.4: +compression@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== @@ -3650,7 +4779,7 @@ content-disposition@0.5.2: resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== -content-disposition@0.5.4: +content-disposition@~0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== @@ -3672,20 +4801,20 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== +cookie-signature@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" + integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== -cookie@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" - integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== +cookie@~0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== copy-text-to-clipboard@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.1.tgz#01c3656d6c81a6aa713aa0a8d361214a1eeac6ae" - integrity sha512-3am6cw+WOicd0+HyzhC4kYS02wHJUiVQXmAADxfUARKsHBkWl1Vl3QQEiILlSs8YcPS/C0+y/urCNEYQk+byWA== + version "3.2.2" + resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.2.tgz#99bc79db3f2d355ec33a08d573aff6804491ddb9" + integrity sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A== copy-webpack-plugin@^11.0.0: version "11.0.0" @@ -3699,28 +4828,37 @@ copy-webpack-plugin@^11.0.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.43.0: - version "3.45.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.45.1.tgz#424f3f4af30bf676fd1b67a579465104f64e9c7a" - integrity sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA== +core-js-compat@^3.43.0, core-js-compat@^3.48.0: + version "3.49.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6" + integrity sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA== dependencies: - browserslist "^4.25.3" - -core-js-pure@^3.43.0: - version "3.45.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.45.1.tgz#b129d86a5f7f8380378577c7eaee83608570a05a" - integrity sha512-OHnWFKgTUshEU8MK+lOs1H8kC8GkTi9Z1tvNkxrCcw9wl3MJIO7q2ld77wjWn4/xuGrVu2X+nME1iIIPBSdyEQ== + browserslist "^4.28.1" core-js@^3.31.1: - version "3.45.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.45.1.tgz#5810e04a1b4e9bc5ddaa4dd12e702ff67300634d" - integrity sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg== + version "3.49.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.49.0.tgz#8b4d520ac034311fa21aa616f017ada0e0dbbddd" + integrity sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg== core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cose-base@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-1.0.3.tgz#650334b41b869578a543358b80cda7e0abe0a60a" + integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg== + dependencies: + layout-base "^1.0.0" + +cose-base@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-2.2.0.tgz#1c395c35b6e10bb83f9769ca8b817d614add5c01" + integrity sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g== + dependencies: + layout-base "^2.0.0" + cosmiconfig@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -3766,9 +4904,9 @@ css-blank-pseudo@^7.0.1: postcss-selector-parser "^7.0.0" css-declaration-sorter@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024" - integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== + version "7.4.0" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz#9c215fbda2dcf4083bae69f125688158ae847deb" + integrity sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw== css-has-pseudo@^7.0.3: version "7.0.3" @@ -3853,10 +4991,10 @@ css-what@^6.0.1, css-what@^6.1.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea" integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== -cssdb@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.4.0.tgz#232a1aa7751983ed2b40331634902d4c93f0456c" - integrity sha512-lyATYGyvXwQ8h55WeQeEHXhI+47rl52pXSYkFK/ZrCbAJSgVIaPFjYc3RM8TpRHKk7W3wsAZImmLps+P5VyN9g== +cssdb@^8.6.0: + version "8.9.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.9.0.tgz#e24d44824895957a4a5c75ba72c910f94e7aed77" + integrity sha512-J8jOU/hLjaXcO1LldOLraJSQpfLXRKof0I7mtbRyOy2AAXgqst0x9rlgi2qXeD6d0ou3ZLqcPAMqYVbpCbrxEw== cssesc@^3.0.0: version "3.0.0" @@ -3932,10 +5070,313 @@ csso@^5.0.5: dependencies: css-tree "~2.2.0" -csstype@^3.0.2, csstype@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +csstype@^3.0.2, csstype@^3.2.2, csstype@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a" + integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== + +cytoscape-cose-bilkent@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz#762fa121df9930ffeb51a495d87917c570ac209b" + integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ== + dependencies: + cose-base "^1.0.0" + +cytoscape-fcose@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz#e4d6f6490df4fab58ae9cea9e5c3ab8d7472f471" + integrity sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ== + dependencies: + cose-base "^2.2.0" + +cytoscape@^3.33.3: + version "3.34.0" + resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.34.0.tgz#5fbe2eb1cf76b070a8ecd5647c35f65aa097c9c6" + integrity sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg== + +"d3-array@1 - 2": + version "2.12.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" + integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== + dependencies: + internmap "^1.0.0" + +"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + dependencies: + internmap "1 - 2" + +d3-axis@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" + integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== + +d3-brush@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" + integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "3" + d3-transition "3" + +d3-chord@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" + integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== + dependencies: + d3-path "1 - 3" + +"d3-color@1 - 3", d3-color@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== + +d3-contour@4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc" + integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA== + dependencies: + d3-array "^3.2.0" + +d3-delaunay@6: + version "6.0.4" + resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b" + integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== + dependencies: + delaunator "5" + +"d3-dispatch@1 - 3", d3-dispatch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" + integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== + +"d3-drag@2 - 3", d3-drag@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" + integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== + dependencies: + d3-dispatch "1 - 3" + d3-selection "3" + +"d3-dsv@1 - 3", d3-dsv@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" + integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== + dependencies: + commander "7" + iconv-lite "0.6" + rw "1" + +"d3-ease@1 - 3", d3-ease@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" + integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== + +d3-fetch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" + integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== + dependencies: + d3-dsv "1 - 3" + +d3-force@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" + integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== + dependencies: + d3-dispatch "1 - 3" + d3-quadtree "1 - 3" + d3-timer "1 - 3" + +"d3-format@1 - 3", d3-format@3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.2.tgz#01fdb46b58beb1f55b10b42ad70b6e344d5eb2ae" + integrity sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg== + +d3-geo@3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.1.tgz#6027cf51246f9b2ebd64f99e01dc7c3364033a4d" + integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== + dependencies: + d3-array "2.5.0 - 3" + +d3-hierarchy@3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" + integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" + integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== + +d3-polygon@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" + integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== + +"d3-quadtree@1 - 3", d3-quadtree@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" + integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== + +d3-random@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" + integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== + +d3-sankey@^0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/d3-sankey/-/d3-sankey-0.12.3.tgz#b3c268627bd72e5d80336e8de6acbfec9d15d01d" + integrity sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ== + dependencies: + d3-array "1 - 2" + d3-shape "^1.2.0" + +d3-scale-chromatic@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314" + integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" + +d3-scale@4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" + integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== + dependencies: + d3-array "2.10.0 - 3" + d3-format "1 - 3" + d3-interpolate "1.2.0 - 3" + d3-time "2.1.1 - 3" + d3-time-format "2 - 4" + +"d3-selection@2 - 3", d3-selection@3, d3-selection@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" + integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== + +d3-shape@3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" + integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== + dependencies: + d3-path "^3.1.0" + +d3-shape@^1.2.0: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +"d3-time-format@2 - 4", d3-time-format@4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" + integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== + dependencies: + d3-time "1 - 3" + +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" + integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== + dependencies: + d3-array "2 - 3" + +"d3-timer@1 - 3", d3-timer@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" + integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== + +"d3-transition@2 - 3", d3-transition@3, d3-transition@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" + integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== + dependencies: + d3-color "1 - 3" + d3-dispatch "1 - 3" + d3-ease "1 - 3" + d3-interpolate "1 - 3" + d3-timer "1 - 3" + +d3-zoom@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" + integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "2 - 3" + d3-transition "2 - 3" + +d3@^7.9.0: + version "7.9.0" + resolved "https://registry.yarnpkg.com/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d" + integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA== + dependencies: + d3-array "3" + d3-axis "3" + d3-brush "3" + d3-chord "3" + d3-color "3" + d3-contour "4" + d3-delaunay "6" + d3-dispatch "3" + d3-drag "3" + d3-dsv "3" + d3-ease "3" + d3-fetch "3" + d3-force "3" + d3-format "3" + d3-geo "3" + d3-hierarchy "3" + d3-interpolate "3" + d3-path "3" + d3-polygon "3" + d3-quadtree "3" + d3-random "3" + d3-scale "4" + d3-scale-chromatic "3" + d3-selection "3" + d3-shape "3" + d3-time "3" + d3-time-format "4" + d3-timer "3" + d3-transition "3" + d3-zoom "3" + +dagre-d3-es@7.0.14: + version "7.0.14" + resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz#1272276e26457cf3b97dac569f8f0531ec33c377" + integrity sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg== + dependencies: + d3 "^7.9.0" + lodash-es "^4.17.21" + +dayjs@^1.11.20: + version "1.11.21" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.21.tgz#57f87562e62de76f3c704bd2b8d522fc33068eb2" + integrity sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA== debounce@^1.2.1: version "1.2.1" @@ -3949,7 +5390,7 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.4.1: +debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -3957,9 +5398,9 @@ debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.4.1: ms "^2.1.3" decode-named-character-reference@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed" - integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q== + version "1.3.0" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz#3e40603760874c2e5867691b599d73a7da25b53f" + integrity sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q== dependencies: character-entities "^2.0.0" @@ -3980,12 +5421,18 @@ deepmerge@^4.3.1: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== +default-browser-id@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.1.tgz#f7a7ccb8f5104bf8e0f71ba3b1ccfa5eafdb21e8" + integrity sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q== + +default-browser@^5.2.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.5.0.tgz#2792e886f2422894545947cc80e1a444496c5976" + integrity sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw== dependencies: - execa "^5.0.0" + bundle-name "^4.1.0" + default-browser-id "^5.0.0" defer-to-connect@^2.0.1: version "2.0.1" @@ -4006,6 +5453,11 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" @@ -4015,12 +5467,19 @@ define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +delaunator@5: + version "5.1.0" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.1.0.tgz#d13271fbf3aff6753f9ea6e235557f20901046ea" + integrity sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ== + dependencies: + robust-predicates "^3.0.2" + delegate@^3.1.2: version "3.2.0" resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== -depd@2.0.0: +depd@2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== @@ -4035,23 +5494,27 @@ dequal@^2.0.0: resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== -destroy@1.2.0: +destroy@1.2.0, destroy@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-libc@^2.0.0, detect-libc@^2.0.2, detect-libc@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + detect-node@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -detect-port@^1.5.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.6.1.tgz#45e4073997c5f292b957cb678fb0bb8ed4250a67" - integrity sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q== +detect-port@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-2.1.0.tgz#03d72644891fa451ca5609b83107a8a0ebd03f91" + integrity sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q== dependencies: - address "^1.0.1" - debug "4" + address "^2.0.1" devlop@^1.0.0, devlop@^1.1.0: version "1.1.0" @@ -4126,6 +5589,13 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" +dompurify@^3.3.3: + version "3.4.11" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.11.tgz#29c8ba496475f279ef4015784068452fb14a0680" + integrity sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw== + optionalDependencies: + "@types/trusted-types" "^2.0.7" + domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -4183,10 +5653,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.5.218: - version "1.5.218" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.218.tgz#921042a011a98a4620853c9d391ab62bcc124400" - integrity sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg== +electron-to-chromium@^1.5.387: + version "1.5.388" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.388.tgz#002666dfda32e087c44fd01b7ce1719b6ec89c57" + integrity sha512-Pl/aJaqOOxYxda3vcx1IKSJimwYXHDkEnGn0F+kG2EE68dDtx2uCinaS+Vih8Z91B9t8CSAbiF/HKyWcnXjhzw== emoji-regex@^8.0.0: version "8.0.0" @@ -4213,23 +5683,25 @@ emoticon@^4.0.1: resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-4.1.0.tgz#d5a156868ee173095627a33de3f1e914c3dde79e" integrity sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ== -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - encodeurl@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== -enhanced-resolve@^5.17.3: - version "5.18.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44" - integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww== +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.22.2: + version "5.24.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.2.tgz#f25d703a24431cb1e02f944adb74aefa4fcb8d7e" + integrity sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw== dependencies: graceful-fs "^4.2.4" - tapable "^2.2.0" + tapable "^2.3.3" entities@^2.0.0: version "2.2.0" @@ -4263,18 +5735,23 @@ es-errors@^1.3.0: resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-module-lexer@^1.2.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" - integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== +es-module-lexer@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.3.0.tgz#fda770234c345064c122eb905e1c4200ffa4ce7e" + integrity sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.2.tgz#a2d0b373205724dfa525d23b0c3e1b1ca582c99b" + integrity sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw== dependencies: es-errors "^1.3.0" +es-toolkit@^1.45.1: + version "1.49.0" + resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.49.0.tgz#93c5b031865792fc03cbf5bd20c132a4f976a52a" + integrity sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g== + esast-util-from-estree@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz#8d1cfb51ad534d2f159dc250e604f3478a79f1ad" @@ -4310,11 +5787,6 @@ escape-html@^1.0.3, escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -4333,11 +5805,6 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -4395,9 +5862,9 @@ estree-util-to-js@^2.0.0: source-map "^0.7.0" estree-util-value-to-estree@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.4.0.tgz#827122e40c3a756d3c4cf5d5d296fa06026a1a4f" - integrity sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ== + version "3.5.0" + resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.5.0.tgz#cd70cf37e7f78eae3e110d66a3436ce0d18a8f80" + integrity sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ== dependencies: "@types/estree" "^1.0.0" @@ -4444,12 +5911,19 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +events-universal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/events-universal/-/events-universal-1.0.1.tgz#b56a84fd611b6610e0a2d0f09f80fdf931e2dfe6" + integrity sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw== + dependencies: + bare-events "^2.7.0" + events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@5.1.1, execa@^5.0.0: +execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -4464,39 +5938,44 @@ execa@5.1.1, execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -express@^4.17.3: - version "4.21.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" - integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +express@^4.22.1: + version "4.22.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.22.2.tgz#c17ae0981e5efc24b22272f0e041c4662503b700" + integrity sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.3" - content-disposition "0.5.4" + body-parser "~1.20.5" + content-disposition "~0.5.4" content-type "~1.0.4" - cookie "0.7.1" - cookie-signature "1.0.6" + cookie "~0.7.1" + cookie-signature "~1.0.6" debug "2.6.9" depd "2.0.0" encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.3.1" - fresh "0.5.2" - http-errors "2.0.0" + finalhandler "~1.3.1" + fresh "~0.5.2" + http-errors "~2.0.0" merge-descriptors "1.0.3" methods "~1.1.2" - on-finished "2.4.1" + on-finished "~2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.12" + path-to-regexp "~0.1.12" proxy-addr "~2.0.7" - qs "6.13.0" + qs "~6.15.1" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.19.0" - serve-static "1.16.2" + send "~0.19.0" + serve-static "~1.16.2" setprototypeof "1.2.0" - statuses "2.0.1" + statuses "~2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -4518,6 +5997,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-fifo@^1.2.0, fast-fifo@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" @@ -4535,14 +6019,14 @@ fast-json-stable-stringify@^2.0.0: integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-uri@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" - integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.3.tgz#f695a40f006aba505631573a0021ddb21194ad11" + integrity sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg== fastq@^1.6.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + version "1.20.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" + integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== dependencies: reusify "^1.0.4" @@ -4567,13 +6051,6 @@ feed@^4.2.2: dependencies: xml-js "^1.6.11" -figures@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - file-loader@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" @@ -4589,17 +6066,17 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" - integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== +finalhandler@~1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88" + integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg== dependencies: debug "2.6.9" encodeurl "~2.0.0" escape-html "~1.0.3" - on-finished "2.4.1" + on-finished "~2.4.1" parseurl "~1.3.3" - statuses "2.0.1" + statuses "~2.0.2" unpipe "~1.0.0" find-cache-dir@^4.0.0: @@ -4629,9 +6106,9 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== follow-redirects@^1.0.0: - version "1.15.11" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" - integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + version "1.16.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc" + integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw== form-data-encoder@^2.1.2: version "2.1.4" @@ -4648,35 +6125,30 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== +fraction.js@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-5.3.4.tgz#8c0fcc6a9908262df4ed197427bdeef563e0699a" + integrity sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ== -fresh@0.5.2: +fresh@~0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^11.1.1, fs-extra@^11.2.0: - version "11.3.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.2.tgz#c838aeddc6f4a8c74dd15f85e11fe5511bfe02a4" - integrity sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A== + version "11.3.6" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.6.tgz#f7cb80e9df550cd1db6f537fa5cdd568d3e70d10" + integrity sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" universalify "^2.0.0" -fs-monkey@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.1.0.tgz#632aa15a20e71828ed56b24303363fb1414e5997" - integrity sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -4726,6 +6198,11 @@ get-stream@^6.0.0, get-stream@^6.0.1: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + github-slugger@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" @@ -4745,22 +6222,19 @@ glob-parent@^6.0.1: dependencies: is-glob "^4.0.3" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob-to-regex.js@^1.0.0, glob-to-regex.js@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" + integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== +glob@^13.0.0, glob@^13.0.3: + version "13.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.6.tgz#078666566a425147ccacfbd2e332deb66a2be71d" + integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" + minimatch "^10.2.2" + minipass "^7.1.3" + path-scurry "^2.0.2" global-dirs@^3.0.0: version "3.0.1" @@ -4831,16 +6305,6 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -gray-matter@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" - integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== - dependencies: - js-yaml "^3.13.1" - kind-of "^6.0.2" - section-matter "^1.0.0" - strip-bom-string "^1.0.0" - gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -4848,6 +6312,11 @@ gzip-size@^6.0.0: dependencies: duplexer "^0.1.2" +hachure-fill@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/hachure-fill/-/hachure-fill-0.5.2.tgz#d19bc4cc8750a5962b47fb1300557a85fcf934cc" + integrity sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg== + handle-thing@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" @@ -4875,10 +6344,10 @@ has-yarn@^3.0.0: resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== +hasown@^2.0.2, hasown@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.4.tgz#8c62d8cb90beb2aad5d0a5b67581ad9854c3f003" + integrity sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A== dependencies: function-bind "^1.1.2" @@ -4966,14 +6435,14 @@ hast-util-to-jsx-runtime@^2.0.0: vfile-message "^4.0.0" hast-util-to-parse5@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz#477cd42d278d4f036bc2ea58586130f6f39ee6ed" - integrity sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw== + version "8.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz#95aa391cc0514b4951418d01c883d1038af42f5d" + integrity sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA== dependencies: "@types/hast" "^3.0.0" comma-separated-tokens "^2.0.0" devlop "^1.0.0" - property-information "^6.0.0" + property-information "^7.0.0" space-separated-tokens "^2.0.0" web-namespaces "^2.0.0" zwitch "^2.0.0" @@ -5030,11 +6499,6 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -html-entities@^2.3.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8" - integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== - html-escaper@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -5077,9 +6541,9 @@ html-void-elements@^3.0.0: integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== html-webpack-plugin@^5.6.0: - version "5.6.4" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.4.tgz#d8cb0f7edff7745ae7d6cccb0bff592e9f7f7959" - integrity sha512-V/PZeWsqhfpE27nKeX9EO2sbR+D17A+tLf6qU+ht66jdUsN0QLKJN27Z+1+gHrVMKgndBahes0PU6rRihDgHTw== + version "5.6.7" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz#429bab4e12abf3c07e1c608886608e2df2c06b11" + integrity sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw== dependencies: "@types/html-minifier-terser" "^6.0.0" html-minifier-terser "^6.0.2" @@ -5117,36 +6581,37 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== +http-errors@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== dependencies: - depd "2.0.0" + depd "~1.1.2" inherits "2.0.4" setprototypeof "1.2.0" - statuses "2.0.1" + statuses ">= 1.5.0 < 2" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== +http-errors@~2.0.0, http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" http-parser-js@>=0.5.1: version "0.5.10" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== -http-proxy-middleware@^2.0.3: - version "2.0.9" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" - integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== +http-proxy-middleware@^2.0.9: + version "2.0.10" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.10.tgz#b2df7b705203d7a8c269ac8450cf96b00c532f94" + integrity sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -5176,7 +6641,19 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24: +hyperdyperid@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" + integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== + +iconv-lite@0.6: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iconv-lite@~0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5188,6 +6665,11 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^5.2.0, ignore@^5.2.4: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" @@ -5211,6 +6693,11 @@ import-lazy@^4.0.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== +import-meta-resolve@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz#08cb85b5bd37ecc8eb1e0f670dc2767002d43734" + integrity sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg== + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -5226,24 +6713,11 @@ infima@0.2.0-alpha.45: resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.45.tgz#542aab5a249274d81679631b492973dd2c1e7466" integrity sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw== -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - ini@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" @@ -5254,10 +6728,20 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inline-style-parser@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.4.tgz#f4af5fe72e612839fcd453d989a586566d695f22" - integrity sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q== +inline-style-parser@0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.7.tgz#b1fc68bfc0313b8685745e4464e37f9376b9c909" + integrity sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA== + +"internmap@1 - 2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== + +internmap@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" + integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== invariant@^2.2.4: version "2.2.4" @@ -5271,10 +6755,10 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== +ipaddr.js@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.4.0.tgz#038e9ceaf8219efc5bb76347b7eb787875d5095b" + integrity sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ== is-alphabetical@^2.0.0: version "2.0.1" @@ -5294,6 +6778,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-arrayish@^0.3.1: + version "0.3.4" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.4.tgz#1ee5553818511915685d33bb13d31bf854e5059d" + integrity sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -5308,12 +6797,12 @@ is-ci@^3.0.1: dependencies: ci-info "^3.2.0" -is-core-module@^2.16.0: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== +is-core-module@^2.16.1: + version "2.16.2" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.2.tgz#3e07450a8080ebce3fbf0cac494f4d2ab324e082" + integrity sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA== dependencies: - hasown "^2.0.2" + hasown "^2.0.3" is-decimal@^2.0.0: version "2.0.1" @@ -5325,6 +6814,11 @@ is-docker@^2.0.0, is-docker@^2.1.1: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extendable@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -5352,6 +6846,13 @@ is-hexadecimal@^2.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + is-installed-globally@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" @@ -5360,6 +6861,11 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" +is-network-error@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.3.2.tgz#9460bc30f8419a4bca77114f4de88a3ee5e0c519" + integrity sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA== + is-npm@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.1.0.tgz#f70e0b6c132dfc817ac97d3badc0134945b098d3" @@ -5424,6 +6930,13 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +is-wsl@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.1.tgz#327897b26832a3eb117da6c27492d04ca132594f" + integrity sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw== + dependencies: + is-inside-container "^1.0.0" + is-yarn-global@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" @@ -5486,9 +6999,9 @@ jiti@^1.20.0: integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== joi@^17.9.2: - version "17.13.3" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" - integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== + version "17.13.4" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.4.tgz#ad6153d97ce558eb3a3b593e0d43eab51df1c474" + integrity sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ== dependencies: "@hapi/hoek" "^9.3.0" "@hapi/topo" "^5.1.0" @@ -5501,37 +7014,24 @@ joi@^17.9.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.0.tgz#d1900572a7f7cf0b5f540c83673e60bad3436592" + integrity sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q== dependencies: argparse "^2.0.1" -jsesc@^3.0.2: +jsesc@^3.0.2, jsesc@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== -jsesc@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -5552,14 +7052,21 @@ json5@^2.1.2, json5@^2.2.3: integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" - integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== + version "6.2.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.1.tgz#b6e31717f22cc37330b081ce0051ed5de53af2f6" + integrity sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q== dependencies: universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" +katex@^0.16.45: + version "0.16.47" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.47.tgz#0a13a42c2deb4f74e61f162d440b9165a548030f" + integrity sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg== + dependencies: + commander "^8.3.0" + keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -5567,7 +7074,12 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -kind-of@^6.0.0, kind-of@^6.0.2: +khroma@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1" + integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -5584,19 +7096,103 @@ latest-version@^7.0.0: dependencies: package-json "^8.1.0" -launch-editor@^2.6.0: - version "2.11.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.11.1.tgz#61a0b7314a42fd84a6cbb564573d9e9ffcf3d72b" - integrity sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg== +launch-editor@^2.14.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.14.1.tgz#f7e0da3f58aaea03fea01074d840b5f739ed7ddc" + integrity sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA== dependencies: picocolors "^1.1.1" - shell-quote "^1.8.3" + shell-quote "^1.8.4" + +layout-base@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2" + integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg== + +layout-base@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-2.0.1.tgz#d0337913586c90f9c2c075292069f5c2da5dd285" + integrity sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg== leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +lightningcss-android-arm64@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz#f033885116dfefd9c6f54787523e3514b61e1968" + integrity sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg== + +lightningcss-darwin-arm64@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz#50b71871b01c8199584b649e292547faea7af9b5" + integrity sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ== + +lightningcss-darwin-x64@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz#35f3e97332d130b9ca181e11b568ded6aebc6d5e" + integrity sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w== + +lightningcss-freebsd-x64@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz#9777a76472b64ed6ff94342ad64c7bafd794a575" + integrity sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig== + +lightningcss-linux-arm-gnueabihf@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz#13ae652e1ab73b9135d7b7da172f666c410ad53d" + integrity sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw== + +lightningcss-linux-arm64-gnu@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz#417858795a94592f680123a1b1f9da8a0e1ef335" + integrity sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ== + +lightningcss-linux-arm64-musl@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz#6be36692e810b718040802fd809623cffe732133" + integrity sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg== + +lightningcss-linux-x64-gnu@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz#0b7803af4eb21cfd38dd39fe2abbb53c7dd091f6" + integrity sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA== + +lightningcss-linux-x64-musl@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz#88dc8ba865ddddb1ac5ef04b0f161804418c163b" + integrity sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg== + +lightningcss-win32-arm64-msvc@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz#4f30ba3fa5e925f5b79f945e8cc0d176c3b1ab38" + integrity sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw== + +lightningcss-win32-x64-msvc@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz#141aa5605645064928902bb4af045fa7d9f4220a" + integrity sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q== + +lightningcss@^1.27.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.32.0.tgz#b85aae96486dcb1bf49a7c8571221273f4f1e4a9" + integrity sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ== + dependencies: + detect-libc "^2.0.3" + optionalDependencies: + lightningcss-android-arm64 "1.32.0" + lightningcss-darwin-arm64 "1.32.0" + lightningcss-darwin-x64 "1.32.0" + lightningcss-freebsd-x64 "1.32.0" + lightningcss-linux-arm-gnueabihf "1.32.0" + lightningcss-linux-arm64-gnu "1.32.0" + lightningcss-linux-arm64-musl "1.32.0" + lightningcss-linux-x64-gnu "1.32.0" + lightningcss-linux-x64-musl "1.32.0" + lightningcss-win32-arm64-msvc "1.32.0" + lightningcss-win32-x64-msvc "1.32.0" + lilconfig@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" @@ -5607,10 +7203,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== +loader-runner@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.2.tgz#9913d3a15971f8f635915e601fb5c9d495d918e9" + integrity sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w== loader-utils@^2.0.0: version "2.0.4" @@ -5628,6 +7224,11 @@ locate-path@^7.1.0: dependencies: p-locate "^6.0.0" +lodash-es@^4.17.21: + version "4.18.1" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.18.1.tgz#b962eeb80d9d983a900bf342961fb7418ca10b1d" + integrity sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A== + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -5644,9 +7245,9 @@ lodash.uniq@^4.5.0: integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + version "4.18.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" + integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== longest-streak@^3.0.0: version "3.1.0" @@ -5672,6 +7273,11 @@ lowercase-keys@^3.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== +lru-cache@^11.0.0: + version "11.5.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.5.1.tgz#f3daa3540847b9737ebc02499ddb36765e54db4a" + integrity sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -5684,18 +7290,16 @@ markdown-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4" integrity sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== -markdown-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" - integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== - dependencies: - repeat-string "^1.0.0" - markdown-table@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== +marked@^16.3.0: + version "16.4.2" + resolved "https://registry.yarnpkg.com/marked/-/marked-16.4.2.tgz#4959a64be6c486f0db7467ead7ce288de54290a3" + integrity sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA== + math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" @@ -5727,9 +7331,9 @@ mdast-util-find-and-replace@^3.0.0, mdast-util-find-and-replace@^3.0.1: unist-util-visit-parents "^6.0.0" mdast-util-from-markdown@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a" - integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA== + version "2.0.3" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz#c95822b91aab75f18a4cbe8b2f51b873ed2cf0c7" + integrity sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q== dependencies: "@types/mdast" "^4.0.0" "@types/unist" "^3.0.0" @@ -5883,9 +7487,9 @@ mdast-util-phrasing@^4.0.0: unist-util-is "^6.0.0" mdast-util-to-hast@^13.0.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" - integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== + version "13.2.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz#d7ff84ca499a57e2c060ae67548ad950e689a053" + integrity sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA== dependencies: "@types/hast" "^3.0.0" "@types/mdast" "^4.0.0" @@ -5934,12 +7538,25 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== - dependencies: - fs-monkey "^1.0.4" +memfs@^4.17.0, memfs@^4.43.1: + version "4.58.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.58.0.tgz#b995e7183c09d71f28f803fbfd326704c9216390" + integrity sha512-0n6CDBqIT/eGrbWdDVNkLjasjupnEpOFjFOtXrS5p6EYYXGXBn5ZIMLetBlVdQYpP0hGK2MEOgYAC0/+NOr91w== + dependencies: + "@jsonjoy.com/fs-core" "4.58.0" + "@jsonjoy.com/fs-fsa" "4.58.0" + "@jsonjoy.com/fs-node" "4.58.0" + "@jsonjoy.com/fs-node-builtins" "4.58.0" + "@jsonjoy.com/fs-node-to-fsa" "4.58.0" + "@jsonjoy.com/fs-node-utils" "4.58.0" + "@jsonjoy.com/fs-print" "4.58.0" + "@jsonjoy.com/fs-snapshot" "4.58.0" + "@jsonjoy.com/json-pack" "^1.11.0" + "@jsonjoy.com/util" "^1.9.0" + glob-to-regex.js "^1.0.1" + thingies "^2.5.0" + tree-dump "^1.0.3" + tslib "^2.0.0" merge-descriptors@1.0.3: version "1.0.3" @@ -5956,6 +7573,33 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +mermaid@>=11.6.0: + version "11.16.0" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.16.0.tgz#dc946bc84bde9d093ba14940d49df1d9f7d8c32f" + integrity sha512-Zvm3kbstgdpvIJPPItlL7fppIZ3kibvc1oZIGxdvk9t6UFz6flv+Jw7FtRGKwfcI8OckmH04LqG6LlS6X4B1pA== + dependencies: + "@braintree/sanitize-url" "^7.1.2" + "@iconify/utils" "^3.0.2" + "@mermaid-js/parser" "^1.2.0" + "@types/d3" "^7.4.3" + "@upsetjs/venn.js" "^2.0.0" + cytoscape "^3.33.3" + cytoscape-cose-bilkent "^4.1.0" + cytoscape-fcose "^2.2.0" + d3 "^7.9.0" + d3-sankey "^0.12.3" + dagre-d3-es "7.0.14" + dayjs "^1.11.20" + dompurify "^3.3.3" + es-toolkit "^1.45.1" + katex "^0.16.45" + khroma "^2.1.0" + marked "^16.3.0" + roughjs "^4.6.6" + stylis "^4.3.6" + ts-dedent "^2.2.0" + uuid "^11.1.0 || ^12 || ^13 || ^14.0.0" + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -6390,7 +8034,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -"mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@^1.54.0: version "1.54.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== @@ -6407,13 +8051,20 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34, mime-types@~2.1.35: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" +mime-types@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.2.tgz#39002d4182575d5af036ffa118100f2524b2e2ab" + integrity sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A== + dependencies: + mime-db "^1.54.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -6435,9 +8086,9 @@ mimic-response@^4.0.0: integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== mini-css-extract-plugin@^2.9.2: - version "2.9.4" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz#cafa1a42f8c71357f49cd1566810d74ff1cb0200" - integrity sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ== + version "2.10.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz#5c85ec9450c05d26e32531b465a15a08c3a57253" + integrity sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg== dependencies: schema-utils "^4.0.0" tapable "^2.2.1" @@ -6447,18 +8098,45 @@ minimalistic-assert@^1.0.0: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@3.1.2, minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== +minimatch@3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" + integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0: +minimatch@^10.2.2: + version "10.2.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1" + integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg== + dependencies: + brace-expansion "^5.0.5" + +minimist@^1.2.0, minimist@^1.2.3: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +minimizer-webpack-plugin@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz#289922a4c96c4ed1ddb76b8a00bd8074e89a2f7f" + integrity sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + terser "^5.31.1" + +minipass@^7.1.2, minipass@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" + integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mrmime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc" @@ -6482,10 +8160,15 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== +nanoid@^3.3.12: + version "3.3.15" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.15.tgz#36c490fad8c6e86c824c940dfdde999b69ed4316" + integrity sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA== + +napi-build-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-2.0.0.tgz#13c22c0187fcfccce1461844136372a47ddc027e" + integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA== negotiator@0.6.3: version "0.6.3" @@ -6510,6 +8193,18 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-abi@^3.3.0: + version "3.94.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.94.0.tgz#007181ed0d1b56ae9670ea6c084d2bf83538405f" + integrity sha512-W5ZNO5KRPB5TkYmGVD9F6YqhsglXJzE6etpbmT+f6EQElhiX/UTG551cnsRGvLG3fyZEg9HwaDmNmj5nwJ4z9g== + dependencies: + semver "^7.3.5" + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + node-emoji@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.2.0.tgz#1d000e3c76e462577895be1b436f4aa2d6760eb0" @@ -6520,30 +8215,20 @@ node-emoji@^2.1.0: emojilib "^2.4.0" skin-tone "^2.0.0" -node-forge@^1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-releases@^2.0.21: - version "2.0.21" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.21.tgz#f59b018bc0048044be2d4c4c04e4c8b18160894c" - integrity sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw== +node-releases@^2.0.50: + version "2.0.50" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.50.tgz#597197a852071ce42fc2550e58e223242bcba969" + integrity sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - normalize-url@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.1.0.tgz#d33504f67970decf612946fd4880bc8c0983486d" - integrity sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w== + version "8.1.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.1.1.tgz#751a20c8520e5725404c06015fea21d7567f25ef" + integrity sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ== npm-run-path@^4.0.1: version "4.0.1" @@ -6577,7 +8262,7 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.13.3: +object-inspect@^1.13.3, object-inspect@^1.13.4: version "1.13.4" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== @@ -6604,7 +8289,7 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@2.4.1: +on-finished@^2.4.1, on-finished@~2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -6616,7 +8301,7 @@ on-headers@~1.1.0: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.1.0.tgz#59da4f91c45f5f989c6e4bcedc5a3b0aed70ff65" integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== -once@^1.3.0: +once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -6630,7 +8315,17 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^8.0.9, open@^8.4.0: +open@^10.0.3: + version "10.2.0" + resolved "https://registry.yarnpkg.com/open/-/open-10.2.0.tgz#b9d855be007620e80b6fb05fac98141fe62db73c" + integrity sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA== + dependencies: + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + wsl-utils "^0.1.0" + +open@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== @@ -6683,12 +8378,13 @@ p-queue@^6.6.2: eventemitter3 "^4.0.4" p-timeout "^3.2.0" -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== +p-retry@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.1.tgz#81828f8dc61c6ef5a800585491572cc9892703af" + integrity sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ== dependencies: - "@types/retry" "0.12.0" + "@types/retry" "0.12.2" + is-network-error "^1.0.0" retry "^0.13.1" p-timeout@^3.2.0: @@ -6698,6 +8394,11 @@ p-timeout@^3.2.0: dependencies: p-finally "^1.0.0" +package-json-from-dist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + package-json@^8.1.0: version "8.1.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" @@ -6708,6 +8409,11 @@ package-json@^8.1.0: registry-url "^6.0.0" semver "^7.3.7" +package-manager-detector@^1.3.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-1.7.0.tgz#0a6d6d3856627b8ac9331f95fc891ea81247aafd" + integrity sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ== + param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -6766,7 +8472,7 @@ parse5@^7.0.0: dependencies: entities "^6.0.0" -parseurl@~1.3.2, parseurl@~1.3.3: +parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -6779,16 +8485,16 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" +path-data-parser@0.1.0, path-data-parser@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/path-data-parser/-/path-data-parser-0.1.0.tgz#8f5ba5cc70fc7becb3dcefaea08e2659aba60b8c" + integrity sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w== + path-exists@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - path-is-inside@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" @@ -6804,10 +8510,13 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" - integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== +path-scurry@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85" + integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" path-to-regexp@3.3.0: version "3.3.0" @@ -6821,6 +8530,11 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" +path-to-regexp@~0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.13.tgz#9b22ec16bc3ab88d05a0c7e369869421401ab17d" + integrity sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -6832,9 +8546,9 @@ picocolors@^1.0.0, picocolors@^1.1.1: integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + version "2.3.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601" + integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA== pkg-dir@^7.0.0: version "7.0.0" @@ -6843,6 +8557,31 @@ pkg-dir@^7.0.0: dependencies: find-up "^6.3.0" +pkijs@^3.3.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pkijs/-/pkijs-3.4.0.tgz#d9164def30ff6d97be2d88966d5e36192499ca9c" + integrity sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw== + dependencies: + "@noble/hashes" "1.4.0" + asn1js "^3.0.6" + bytestreamjs "^2.0.1" + pvtsutils "^1.3.6" + pvutils "^1.1.3" + tslib "^2.8.1" + +points-on-curve@0.2.0, points-on-curve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/points-on-curve/-/points-on-curve-0.2.0.tgz#7dbb98c43791859434284761330fa893cb81b4d1" + integrity sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A== + +points-on-path@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/points-on-path/-/points-on-path-0.2.1.tgz#553202b5424c53bed37135b318858eacff85dd52" + integrity sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g== + dependencies: + path-data-parser "0.1.0" + points-on-curve "0.2.0" + postcss-attribute-case-insensitive@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz#0c4500e3bcb2141848e89382c05b5a31c23033a3" @@ -6865,15 +8604,15 @@ postcss-clamp@^4.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-color-functional-notation@^7.0.11: - version "7.0.11" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.11.tgz#ad6b3d2e71fedd94a932f96260b596c33c53c6a5" - integrity sha512-zfqoUSaHMko/k2PA9xnaydVTHqYv5vphq5Q2AHcG/dCdv/OkHYWcVWfVTBKZ526uzT8L7NghuvSw3C9PxlKnLg== +postcss-color-functional-notation@^7.0.12: + version "7.0.12" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz#9a3df2296889e629fde18b873bb1f50a4ecf4b83" + integrity sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" postcss-color-hex-alpha@^10.0.0: @@ -6975,12 +8714,12 @@ postcss-discard-unused@^6.0.5: dependencies: postcss-selector-parser "^6.0.16" -postcss-double-position-gradients@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.3.tgz#d8c4b126af89855a3aa6687e5b1a0d5460d4a5b7" - integrity sha512-Dl0Z9sdbMwrPslgOaGBZRGo3TASmmgTcqcUODr82MTYyJk6devXZM6MlQjpQKMJqlLJ6oL1w78U7IXFdPA5+ug== +postcss-double-position-gradients@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz#b482d08b5ced092b393eb297d07976ab482d4cad" + integrity sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g== dependencies: - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" postcss-value-parser "^4.2.0" @@ -7016,15 +8755,15 @@ postcss-image-set-function@^7.0.0: "@csstools/utilities" "^2.0.0" postcss-value-parser "^4.2.0" -postcss-lab-function@^7.0.11: - version "7.0.11" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-7.0.11.tgz#455934181eea130f8e649c1f54692e1768046f6a" - integrity sha512-BEA4jId8uQe1gyjZZ6Bunb6ZsH2izks+v25AxQJDBtigXCjTLmCPWECwQpLTtcxH589MVxhs/9TAmRC6lUEmXQ== +postcss-lab-function@^7.0.12: + version "7.0.12" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz#eb555ac542607730eb0a87555074e4a5c6eef6e4" + integrity sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w== dependencies: "@csstools/css-color-parser" "^3.1.0" "@csstools/css-parser-algorithms" "^3.0.5" "@csstools/css-tokenizer" "^3.0.4" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" postcss-loader@^7.3.4: @@ -7233,26 +8972,27 @@ postcss-place@^10.0.0: postcss-value-parser "^4.2.0" postcss-preset-env@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-10.3.1.tgz#f3799f0f7a7ea384b3c16e073055c231d11bb3bf" - integrity sha512-8ZOOWVwQ0iMpfEYkYo+U6W7fE2dJ/tP6dtEFwPJ66eB5JjnFupfYh+y6zo+vWDO72nGhKOVdxwhTjfzcSNRg4Q== + version "10.6.1" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-10.6.1.tgz#df30cfc54e90af2dcff5f94104e6f272359c9f65" + integrity sha512-yrk74d9EvY+W7+lO9Aj1QmjWY9q5NsKjK2V9drkOPZB/X6KZ0B3igKsHUYakb7oYVhnioWypQX3xGuePf89f3g== dependencies: - "@csstools/postcss-alpha-function" "^1.0.0" + "@csstools/postcss-alpha-function" "^1.0.1" "@csstools/postcss-cascade-layers" "^5.0.2" - "@csstools/postcss-color-function" "^4.0.11" - "@csstools/postcss-color-function-display-p3-linear" "^1.0.0" - "@csstools/postcss-color-mix-function" "^3.0.11" - "@csstools/postcss-color-mix-variadic-function-arguments" "^1.0.1" - "@csstools/postcss-content-alt-text" "^2.0.7" + "@csstools/postcss-color-function" "^4.0.12" + "@csstools/postcss-color-function-display-p3-linear" "^1.0.1" + "@csstools/postcss-color-mix-function" "^3.0.12" + "@csstools/postcss-color-mix-variadic-function-arguments" "^1.0.2" + "@csstools/postcss-content-alt-text" "^2.0.8" + "@csstools/postcss-contrast-color-function" "^2.0.12" "@csstools/postcss-exponential-functions" "^2.0.9" "@csstools/postcss-font-format-keywords" "^4.0.0" "@csstools/postcss-gamut-mapping" "^2.0.11" - "@csstools/postcss-gradients-interpolation-method" "^5.0.11" - "@csstools/postcss-hwb-function" "^4.0.11" - "@csstools/postcss-ic-unit" "^4.0.3" + "@csstools/postcss-gradients-interpolation-method" "^5.0.12" + "@csstools/postcss-hwb-function" "^4.0.12" + "@csstools/postcss-ic-unit" "^4.0.4" "@csstools/postcss-initial" "^2.0.1" "@csstools/postcss-is-pseudo-class" "^5.0.3" - "@csstools/postcss-light-dark-function" "^2.0.10" + "@csstools/postcss-light-dark-function" "^2.0.11" "@csstools/postcss-logical-float-and-clear" "^3.0.0" "@csstools/postcss-logical-overflow" "^2.0.0" "@csstools/postcss-logical-overscroll-behavior" "^2.0.0" @@ -7261,39 +9001,43 @@ postcss-preset-env@^10.2.1: "@csstools/postcss-media-minmax" "^2.0.9" "@csstools/postcss-media-queries-aspect-ratio-number-values" "^3.0.5" "@csstools/postcss-nested-calc" "^4.0.0" - "@csstools/postcss-normalize-display-values" "^4.0.0" - "@csstools/postcss-oklab-function" "^4.0.11" - "@csstools/postcss-progressive-custom-properties" "^4.2.0" + "@csstools/postcss-normalize-display-values" "^4.0.1" + "@csstools/postcss-oklab-function" "^4.0.12" + "@csstools/postcss-position-area-property" "^1.0.0" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/postcss-property-rule-prelude-list" "^1.0.0" "@csstools/postcss-random-function" "^2.0.1" - "@csstools/postcss-relative-color-syntax" "^3.0.11" + "@csstools/postcss-relative-color-syntax" "^3.0.12" "@csstools/postcss-scope-pseudo-class" "^4.0.1" "@csstools/postcss-sign-functions" "^1.1.4" "@csstools/postcss-stepped-value-functions" "^4.0.9" + "@csstools/postcss-syntax-descriptor-syntax-production" "^1.0.1" + "@csstools/postcss-system-ui-font-family" "^1.0.0" "@csstools/postcss-text-decoration-shorthand" "^4.0.3" "@csstools/postcss-trigonometric-functions" "^4.0.9" "@csstools/postcss-unset-value" "^4.0.0" - autoprefixer "^10.4.21" - browserslist "^4.25.1" + autoprefixer "^10.4.23" + browserslist "^4.28.1" css-blank-pseudo "^7.0.1" css-has-pseudo "^7.0.3" css-prefers-color-scheme "^10.0.0" - cssdb "^8.4.0" + cssdb "^8.6.0" postcss-attribute-case-insensitive "^7.0.1" postcss-clamp "^4.1.0" - postcss-color-functional-notation "^7.0.11" + postcss-color-functional-notation "^7.0.12" postcss-color-hex-alpha "^10.0.0" postcss-color-rebeccapurple "^10.0.0" postcss-custom-media "^11.0.6" postcss-custom-properties "^14.0.6" postcss-custom-selectors "^8.0.5" postcss-dir-pseudo-class "^9.0.1" - postcss-double-position-gradients "^6.0.3" + postcss-double-position-gradients "^6.0.4" postcss-focus-visible "^10.0.1" postcss-focus-within "^9.0.1" postcss-font-variant "^5.0.0" postcss-gap-properties "^6.0.0" postcss-image-set-function "^7.0.0" - postcss-lab-function "^7.0.11" + postcss-lab-function "^7.0.12" postcss-logical "^8.1.0" postcss-nesting "^13.0.2" postcss-opacity-percentage "^3.0.0" @@ -7346,17 +9090,17 @@ postcss-selector-not@^8.0.1: postcss-selector-parser "^7.0.0" postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: - version "6.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" - integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + version "6.1.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz#fdec4ca80f5781bd216ca9bf89a2a0fccfffa5f0" + integrity sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" postcss-selector-parser@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" - integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== + version "7.1.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz#69dc7a526517572ff6b150e352b36a016017b485" + integrity sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -7394,14 +9138,32 @@ postcss-zindex@^6.0.2: integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.5.4: - version "8.5.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" - integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + version "8.5.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.16.tgz#1230ce0b5df354c24c0ea45f99ce5f6a88279d28" + integrity sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg== dependencies: - nanoid "^3.3.11" + nanoid "^3.3.12" picocolors "^1.1.1" source-map-js "^1.2.1" +prebuild-install@^7.1.1: + version "7.1.3" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.3.tgz#d630abad2b147443f20a212917beae68b8092eec" + integrity sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^2.0.0" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + pretty-error@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" @@ -7450,15 +9212,10 @@ prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" -property-information@^6.0.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" - integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== - property-information@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" - integrity sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== + version "7.2.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.2.0.tgz#0809b34264e995c0bfcd3227028a1e35210af80a" + integrity sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg== proto-list@~1.2.1: version "1.2.4" @@ -7473,24 +9230,45 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +pump@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c" + integrity sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== pupa@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.2.1.tgz#e28278e4b6e4f5ece1c04404a507ce0d5ecfb4d6" - integrity sha512-6koJt2wLdmDICU5Yht9X4mYjQUFcah7cAu9PEgGP+JGbLQpUQFfaCauHLeutygSkt50oMEX7oAQNmUHxGh5GHQ== + version "3.3.0" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.3.0.tgz#bc4036f9e8920c08ad472bc18fb600067cb83810" + integrity sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA== dependencies: escape-goat "^4.0.0" -qs@6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" - integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== +pvtsutils@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.6.tgz#ec46e34db7422b9e4fdc5490578c1883657d6001" + integrity sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg== + dependencies: + tslib "^2.8.1" + +pvutils@^1.1.3, pvutils@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.5.tgz#84b0dea4a5d670249aa9800511804ee0b7c2809c" + integrity sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA== + +qs@~6.15.1: + version "6.15.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.3.tgz#76852132a58ed5c7c0ef67e4441b9bb5d6061b3b" + integrity sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A== dependencies: - side-channel "^1.0.6" + es-define-property "^1.0.1" + side-channel "^1.1.1" queue-microtask@^1.2.2: version "1.2.3" @@ -7514,22 +9292,27 @@ range-parser@1.2.0: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.3.0.tgz#d7f19be812bb62721472b45d3be219ef09572b47" + integrity sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw== + +range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== +raw-body@~2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" + integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + unpipe "~1.0.0" -rc@1.2.8: +rc@1.2.8, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -7540,11 +9323,11 @@ rc@1.2.8: strip-json-comments "~2.0.1" react-dom@^19.0.0: - version "19.1.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.1.1.tgz#2daa9ff7f3ae384aeb30e76d5ee38c046dc89893" - integrity sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw== + version "19.2.7" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.7.tgz#0450dc9ae9ddbff76ef196401cd8b8c7fb466ccc" + integrity sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ== dependencies: - scheduler "^0.26.0" + scheduler "^0.27.0" react-fast-compare@^3.2.0: version "3.2.2" @@ -7567,20 +9350,20 @@ react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^19.1.1: - version "19.1.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.1.1.tgz#038ebe313cf18e1fd1235d51c87360eb87f7c36a" - integrity sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA== +react-is@^19.2.3: + version "19.2.7" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.7.tgz#57668ee86a78574a542b0a539455212b2c086df2" + integrity sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A== react-json-view-lite@^2.3.0: version "2.5.0" resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz#c7ff011c7cc80e9900abc7aa4916c6a5c6d6c1c6" integrity sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g== -react-loadable-ssr-addon-v5-slorber@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" - integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== +react-loadable-ssr-addon-v5-slorber@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.3.tgz#bb3791bf481222c63a5bc6b96ee23f68cb5614b9" + integrity sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ== dependencies: "@babel/runtime" "^7.10.3" @@ -7637,9 +9420,9 @@ react-transition-group@^4.4.5: prop-types "^15.6.2" react@^19.0.0: - version "19.1.1" - resolved "https://registry.yarnpkg.com/react/-/react-19.1.1.tgz#06d9149ec5e083a67f9a1e39ce97b06a03b644af" - integrity sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ== + version "19.2.7" + resolved "https://registry.yarnpkg.com/react/-/react-19.2.7.tgz#1f47a1bfc06f8ec885752c6f4af14369a9f8260b" + integrity sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ== readable-stream@^2.0.1: version "2.3.8" @@ -7654,7 +9437,7 @@ readable-stream@^2.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6: +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -7710,6 +9493,11 @@ recma-stringify@^1.0.0: unified "^11.0.0" vfile "^6.0.0" +reflect-metadata@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b" + integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q== + regenerate-unicode-properties@^10.2.2: version "10.2.2" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz#aa113812ba899b630658c7623466be71e1f86f66" @@ -7722,24 +9510,24 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regexpu-core@^6.2.0: - version "6.3.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.3.1.tgz#fb8b707d0efe18e9464d3ae76ae1e3c96c8467ae" - integrity sha512-DzcswPr252wEr7Qz8AyAVbfyBDKLoYp6eRA1We2Fa9qirRFSdtkP5sHr3yglDKy2BbA0fd2T+j/CUSKes3FeVQ== +regexpu-core@^6.3.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.4.0.tgz#3580ce0c4faedef599eccb146612436b62a176e5" + integrity sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA== dependencies: regenerate "^1.4.2" regenerate-unicode-properties "^10.2.2" regjsgen "^0.8.0" - regjsparser "^0.12.0" + regjsparser "^0.13.0" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.2.1" registry-auth-token@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.1.0.tgz#3c659047ecd4caebd25bc1570a3aa979ae490eca" - integrity sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw== + version "5.1.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.1.1.tgz#f1ff69c8e492e7edee07110b4752dd0a8aa82853" + integrity sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q== dependencies: - "@pnpm/npm-conf" "^2.1.0" + "@pnpm/npm-conf" "^3.0.2" registry-url@^6.0.0: version "6.0.1" @@ -7753,12 +9541,12 @@ regjsgen@^0.8.0: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== -regjsparser@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" - integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== +regjsparser@^0.13.0: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.2.tgz#f654734b5c588b22ba3e21693b30523417180808" + integrity sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ== dependencies: - jsesc "~3.0.2" + jsesc "~3.1.0" rehype-raw@^7.0.0: version "7.0.0" @@ -7875,11 +9663,6 @@ renderkid@^3.0.0: lodash "^4.17.21" strip-ansi "^6.0.1" -repeat-string@^1.0.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" @@ -7910,12 +9693,13 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve@^1.19.0, resolve@^1.22.10: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== +resolve@^1.19.0, resolve@^1.22.11: + version "1.22.12" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f" + integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA== dependencies: - is-core-module "^2.16.0" + es-errors "^1.3.0" + is-core-module "^2.16.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -7936,12 +9720,28 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== +rimraf@^6.0.1: + version "6.1.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.1.3.tgz#afbee236b3bd2be331d4e7ce4493bac1718981af" + integrity sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA== dependencies: - glob "^7.1.3" + glob "^13.0.3" + package-json-from-dist "^1.0.1" + +robust-predicates@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.3.tgz#1099061b3349e2c5abec6c2ab0acd440d24d4062" + integrity sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA== + +roughjs@^4.6.6: + version "4.6.6" + resolved "https://registry.yarnpkg.com/roughjs/-/roughjs-4.6.6.tgz#1059f49a5e0c80dee541a005b20cc322b222158b" + integrity sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ== + dependencies: + hachure-fill "^0.5.2" + path-data-parser "^0.1.0" + points-on-curve "^0.2.0" + points-on-path "^0.2.1" rtlcss@^4.1.0: version "4.3.0" @@ -7953,6 +9753,11 @@ rtlcss@^4.1.0: postcss "^8.4.21" strip-json-comments "^3.1.1" +run-applescript@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.1.0.tgz#2e9e54c4664ec3106c5b5630e249d3d6595c4911" + integrity sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -7960,7 +9765,12 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +rw@1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -7970,20 +9780,20 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" - integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== +sax@^1.2.4, sax@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.6.0.tgz#da59637629307b97e7c4cb28e080a7bc38560d5b" + integrity sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA== -scheduler@^0.26.0: - version "0.26.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.26.0.tgz#4ce8a8c2a2095f13ea11bf9a445be50c555d6337" - integrity sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA== +scheduler@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.27.0.tgz#0c4ef82d67d1e5c1e359e8fc76d3a87f045fe5bd" + integrity sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q== schema-dts@^1.1.2: version "1.1.5" @@ -7999,10 +9809,10 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.3.0, schema-utils@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.2.tgz#0c10878bf4a73fd2b1dfd14b9462b26788c806ae" - integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ== +schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46" + integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== dependencies: "@types/json-schema" "^7.0.9" ajv "^8.9.0" @@ -8027,13 +9837,13 @@ select@^1.1.2: resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== -selfsigned@^2.1.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== +selfsigned@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-5.5.0.tgz#4c9ab7c7c9f35f18fb6a9882c253eb0e6bd6557b" + integrity sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew== dependencies: - "@types/node-forge" "^1.3.0" - node-forge "^1" + "@peculiar/x509" "^1.14.2" + pkijs "^3.3.3" semver-diff@^4.0.0: version "4.0.0" @@ -8048,71 +9858,71 @@ semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + version "7.8.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.5.tgz#39b646037dd50c14fb451e7e4cac58ed8b863f69" + integrity sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA== -send@0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" - integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== +send@~0.19.0, send@~0.19.1: + version "0.19.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29" + integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg== dependencies: debug "2.6.9" depd "2.0.0" destroy "1.2.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" + fresh "~0.5.2" + http-errors "~2.0.1" mime "1.6.0" ms "2.1.3" - on-finished "2.4.1" + on-finished "~2.4.1" range-parser "~1.2.1" - statuses "2.0.1" + statuses "~2.0.2" -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== dependencies: randombytes "^2.1.0" -serve-handler@^6.1.6: - version "6.1.6" - resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.6.tgz#50803c1d3e947cd4a341d617f8209b22bd76cfa1" - integrity sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ== +serve-handler@^6.1.7: + version "6.1.7" + resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.7.tgz#e9bb864e87ee71e8dab874cde44d146b77e3fb78" + integrity sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg== dependencies: bytes "3.0.0" content-disposition "0.5.2" mime-types "2.1.18" - minimatch "3.1.2" + minimatch "3.1.5" path-is-inside "1.0.2" path-to-regexp "3.3.0" range-parser "1.2.0" serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + version "1.9.2" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.2.tgz#2988e3612106d78a5e4849ddff552ce7bd3d9bcb" + integrity sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ== dependencies: - accepts "~1.3.4" + accepts "~1.3.8" batch "0.6.1" debug "2.6.9" escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" + http-errors "~1.8.0" + mime-types "~2.1.35" + parseurl "~1.3.3" -serve-static@1.16.2: - version "1.16.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" - integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== +serve-static@~1.16.2: + version "1.16.3" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9" + integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA== dependencies: encodeurl "~2.0.0" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.19.0" + send "~0.19.1" set-function-length@^1.2.2: version "1.2.2" @@ -8126,12 +9936,7 @@ set-function-length@^1.2.2: gopd "^1.0.1" has-property-descriptors "^1.0.2" -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: +setprototypeof@1.2.0, setprototypeof@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== @@ -8148,6 +9953,20 @@ shallowequal@^1.1.0: resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== +sharp@^0.32.3: + version "0.32.6" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.6.tgz#6ad30c0b7cd910df65d5f355f774aa4fce45732a" + integrity sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w== + dependencies: + color "^4.2.3" + detect-libc "^2.0.2" + node-addon-api "^6.1.0" + prebuild-install "^7.1.1" + semver "^7.5.4" + simple-get "^4.0.1" + tar-fs "^3.0.4" + tunnel-agent "^0.6.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -8160,18 +9979,18 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" - integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== +shell-quote@^1.8.4: + version "1.9.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.9.0.tgz#e108b1a136586d5964edb3300016d4bedba0fe57" + integrity sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA== -side-channel-list@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" - integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== +side-channel-list@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.1.tgz#c2e0b5a14a540aebee3bbc6c3f8666cc9b509127" + integrity sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w== dependencies: es-errors "^1.3.0" - object-inspect "^1.13.3" + object-inspect "^1.13.4" side-channel-map@^1.0.1: version "1.0.1" @@ -8194,14 +10013,14 @@ side-channel-weakmap@^1.0.2: object-inspect "^1.13.3" side-channel-map "^1.0.1" -side-channel@^1.0.6: - version "1.1.0" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== +side-channel@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.1.tgz#ea02c62e05dc4bea67d4442f0fb71ee192f8e0ab" + integrity sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ== dependencies: es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" + object-inspect "^1.13.4" + side-channel-list "^1.0.1" side-channel-map "^1.0.1" side-channel-weakmap "^1.0.2" @@ -8210,6 +10029,27 @@ signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0, simple-get@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.4.tgz#a8d11a45a11600d6a1ecdff6363329e3648c3667" + integrity sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw== + dependencies: + is-arrayish "^0.3.1" + sirv@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" @@ -8225,9 +10065,9 @@ sisteransi@^1.0.5: integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== sitemap@^7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.2.tgz#6ce1deb43f6f177c68bc59cf93632f54e3ae6b72" - integrity sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw== + version "7.1.3" + resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.3.tgz#2b756f79f0b77527c0eaba280c722e4c66c08886" + integrity sha512-tAjEd+wt/YwnEbfNB2ht51ybBJxbEWwe5ki/Z//Wh0rpBFTCUSj46GnxUKEWzhfuJTsee8x3lybHxFgUMig2hw== dependencies: "@types/node" "^17.0.5" "@types/sax" "^1.2.1" @@ -8329,30 +10169,34 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - srcset@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2": +"statuses@>= 1.5.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@~2.0.1, statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + std-env@^3.7.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" - integrity sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw== + version "3.10.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.10.0.tgz#d810b27e3a073047b2b5e40034881f5ea6f9c83b" + integrity sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg== + +streamx@^2.12.5, streamx@^2.15.0, streamx@^2.25.0: + version "2.28.0" + resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.28.0.tgz#035ab56057b7ed2211b51d532e6973f0f99fbf11" + integrity sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw== + dependencies: + events-universal "^1.0.0" + fast-fifo "^1.3.2" + text-decoder "^1.1.0" string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" @@ -8403,7 +10247,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -8411,11 +10255,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: ansi-regex "^5.0.1" strip-ansi@^7.0.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba" - integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.2.0.tgz#d22a269522836a627af8d04b5c3fd2c7fa3e32e3" + integrity sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w== dependencies: - ansi-regex "^6.0.1" + ansi-regex "^6.2.2" strip-bom-string@^1.0.0: version "1.0.0" @@ -8438,18 +10282,18 @@ strip-json-comments@~2.0.1: integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== style-to-js@^1.0.0: - version "1.1.17" - resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.17.tgz#488b1558a8c1fd05352943f088cc3ce376813d83" - integrity sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA== + version "1.1.21" + resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.21.tgz#2908941187f857e79e28e9cd78008b9a0b3e0e8d" + integrity sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ== dependencies: - style-to-object "1.0.9" + style-to-object "1.0.14" -style-to-object@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.9.tgz#35c65b713f4a6dba22d3d0c61435f965423653f0" - integrity sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw== +style-to-object@1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.14.tgz#1d22f0e7266bb8c6d8cae5caf4ec4f005e08f611" + integrity sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw== dependencies: - inline-style-parser "0.2.4" + inline-style-parser "0.2.7" stylehacks@^6.1.1: version "6.1.1" @@ -8464,6 +10308,11 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== +stylis@^4.3.6: + version "4.4.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.4.0.tgz#c5846c9345f4bfc51bd0cbd7ca35a0744f485a5d" + integrity sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA== + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -8489,44 +10338,111 @@ svg-parser@^2.0.4: integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== svgo@^3.0.2, svgo@^3.2.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8" - integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== + version "3.3.3" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.3.tgz#8246aee0b08791fde3b0ed22b5661b471fadf58e" + integrity sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng== dependencies: - "@trysound/sax" "0.2.0" commander "^7.2.0" css-select "^5.1.0" css-tree "^2.3.1" css-what "^6.1.0" csso "^5.0.5" picocolors "^1.0.0" + sax "^1.5.0" -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.3.tgz#4b67b635b2d97578a06a2713d2f04800c237e99b" - integrity sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg== +swc-loader@^0.2.6: + version "0.2.7" + resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.7.tgz#2d1611ab314c5d8342d74aa5e5901b3fbf490de2" + integrity sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w== + dependencies: + "@swc/counter" "^0.1.3" -terser-webpack-plugin@^5.3.11, terser-webpack-plugin@^5.3.9: - version "5.3.14" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" - integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== +tapable@^2.0.0, tapable@^2.2.1, tapable@^2.3.0, tapable@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160" + integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A== + +tar-fs@^2.0.0: + version "2.1.5" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.5.tgz#33e9c29413dce0c58ada7ff77db4e5a30afffe70" + integrity sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-fs@^3.0.4: + version "3.1.3" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.1.3.tgz#05668cc68a30741c3813f9c16593b8dec7dcbcd1" + integrity sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ== + dependencies: + pump "^3.0.0" + tar-stream "^3.1.5" + optionalDependencies: + bare-fs "^4.0.1" + bare-path "^3.0.0" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar-stream@^3.1.5: + version "3.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.2.0.tgz#0d0064d9b67ea3c9f5abde155e35faab0df37591" + integrity sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg== + dependencies: + b4a "^1.6.4" + bare-fs "^4.5.5" + fast-fifo "^1.2.0" + streamx "^2.15.0" + +teex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/teex/-/teex-1.0.1.tgz#b8fa7245ef8e8effa8078281946c85ab780a0b12" + integrity sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg== + dependencies: + streamx "^2.12.5" + +terser-webpack-plugin@^5.3.9: + version "5.6.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz#47bc41bd8b8fab8383b62ec763b7394829097e7b" + integrity sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ== dependencies: "@jridgewell/trace-mapping" "^0.3.25" jest-worker "^27.4.5" schema-utils "^4.3.0" - serialize-javascript "^6.0.2" terser "^5.31.1" terser@^5.10.0, terser@^5.15.1, terser@^5.31.1: - version "5.44.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.44.0.tgz#ebefb8e5b8579d93111bfdfc39d2cf63879f4a82" - integrity sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w== + version "5.48.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.48.0.tgz#8b391171cfbb7ac4a88f9f04ba1cfabc54f643db" + integrity sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.15.0" commander "^2.20.0" source-map-support "~0.5.20" +text-decoder@^1.1.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.2.7.tgz#5d073a9a74b9c0a9d28dfadcab96b604af57d8ba" + integrity sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ== + dependencies: + b4a "^1.6.4" + +thingies@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/thingies/-/thingies-2.6.0.tgz#e09b98b9e6f6caf8a759eca8481fea1de974d2b1" + integrity sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg== + thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" @@ -8547,6 +10463,11 @@ tiny-warning@^1.0.0: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tinyexec@^1.0.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.2.4.tgz#ae45bb2edebda94c70f4ea897e0f1243e470db71" + integrity sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg== + tinypool@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.1.1.tgz#059f2d042bd37567fbc017d3d426bdd2a2612591" @@ -8559,7 +10480,7 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -toidentifier@1.0.1: +toidentifier@1.0.1, toidentifier@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== @@ -8569,6 +10490,11 @@ totalist@^3.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== +tree-dump@^1.0.3, tree-dump@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" + integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA== + trim-lines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" @@ -8579,15 +10505,34 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== -tslib@^2.0.3, tslib@^2.6.0: +ts-dedent@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.3.0.tgz#8fac36c7902b541c154ac13a27ac467997af11f8" + integrity sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg== + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.0, tslib@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +tsyringe@^4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/tsyringe/-/tsyringe-4.10.0.tgz#d0c95815d584464214060285eaaadd94aa03299c" + integrity sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw== + dependencies: + tslib "^1.9.3" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" type-fest@^1.0.1: version "1.4.0" @@ -8614,10 +10559,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -undici-types@~7.12.0: - version "7.12.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.12.0.tgz#15c5c7475c2a3ba30659529f5cdb4674b622fafb" - integrity sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ== +undici-types@~8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-8.3.0.tgz#44e9fc9f3244648cdea35e4f9bb2d681e9410809" + integrity sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" @@ -8668,9 +10613,9 @@ unique-string@^3.0.0: crypto-random-string "^4.0.0" unist-util-is@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.1.tgz#d0a3f86f2dd0db7acd7d8c2478080b5c67f9c6a9" + integrity sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g== dependencies: "@types/unist" "^3.0.0" @@ -8696,17 +10641,17 @@ unist-util-stringify-position@^4.0.0: "@types/unist" "^3.0.0" unist-util-visit-parents@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== + version "6.0.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz#777df7fb98652ce16b4b7cd999d0a1a40efa3a02" + integrity sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ== dependencies: "@types/unist" "^3.0.0" unist-util-is "^6.0.0" unist-util-visit@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" - integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== + version "5.1.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz#9a2a28b0aa76a15e0da70a08a5863a2f060e2468" + integrity sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg== dependencies: "@types/unist" "^3.0.0" unist-util-is "^6.0.0" @@ -8717,15 +10662,15 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" - integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== +update-browserslist-db@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== dependencies: escalade "^3.2.0" picocolors "^1.1.1" @@ -8786,10 +10731,10 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^11.0.0, "uuid@^11.1.0 || ^12 || ^13 || ^14.0.0", uuid@^8.3.2: + version "11.1.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.1.tgz#f6d81d2e1c65d00762e5e29b16c5d2d995e208ad" + integrity sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ== value-equal@^1.0.1: version "1.0.1" @@ -8825,12 +10770,11 @@ vfile@^6.0.0, vfile@^6.0.1: "@types/unist" "^3.0.0" vfile-message "^4.0.0" -watchpack@^2.4.1: - version "2.4.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947" - integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== +watchpack@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.2.tgz#e12e82d84674266fc1c6dbfe38891b92ff0522ec" + integrity sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg== dependencies: - glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" wbuf@^1.1.0, wbuf@^1.7.3: @@ -8863,52 +10807,51 @@ webpack-bundle-analyzer@^4.10.2: sirv "^2.0.3" ws "^7.3.1" -webpack-dev-middleware@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" - integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== +webpack-dev-middleware@^7.4.2: + version "7.4.5" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz#d4e8720aa29cb03bc158084a94edb4594e3b7ac0" + integrity sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA== dependencies: colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" + memfs "^4.43.1" + mime-types "^3.0.1" + on-finished "^2.4.1" range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.15.2: - version "4.15.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" - integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" +webpack-dev-server@^5.2.2: + version "5.2.6" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.6.tgz#3a5d41233cbb7504f814d19e59a59173fb8ae23d" + integrity sha512-HNLRmamRvVavZQ+avceZifmv8hmdUjg43t6MI4SqJDwFdW7RPQwH5vzGhDRZSX59SgfbeHhLnq3g+uooWo7pVw== + dependencies: + "@types/bonjour" "^3.5.13" + "@types/connect-history-api-fallback" "^1.5.4" + "@types/express" "^4.17.25" + "@types/express-serve-static-core" "^4.17.21" + "@types/serve-index" "^1.9.4" + "@types/serve-static" "^1.15.5" + "@types/sockjs" "^0.3.36" + "@types/ws" "^8.5.10" ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" + bonjour-service "^1.2.1" + chokidar "^3.6.0" colorette "^2.0.10" - compression "^1.7.4" + compression "^1.8.1" connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" + express "^4.22.1" graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" + http-proxy-middleware "^2.0.9" + ipaddr.js "^2.1.0" + launch-editor "^2.14.1" + open "^10.0.3" + p-retry "^6.2.0" + schema-utils "^4.2.0" + selfsigned "^5.5.0" serve-index "^1.9.1" sockjs "^0.3.24" spdy "^4.0.2" - webpack-dev-middleware "^5.3.4" - ws "^8.13.0" + webpack-dev-middleware "^7.4.2" + ws "^8.18.0" webpack-merge@^5.9.0: version "5.10.0" @@ -8928,60 +10871,53 @@ webpack-merge@^6.0.1: flat "^5.0.2" wildcard "^2.0.1" -webpack-sources@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723" - integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== +webpack-sources@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.5.1.tgz#76c2418486dcc02b2aa0694c104176c2858fe84a" + integrity sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw== webpack@^5.88.1, webpack@^5.95.0: - version "5.101.3" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.101.3.tgz#3633b2375bb29ea4b06ffb1902734d977bc44346" - integrity sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A== + version "5.108.4" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.108.4.tgz#141818a411662773a0bb32dc5536acc5409943b7" + integrity sha512-yur8LyJoeiWh47dErD+Ok7vlbmDsJ3UbbRPAoxbGJ54WpE2y5yVo5G/inUzujnYgw3tPmBRdn+G7PoxXaYC33w== dependencies: - "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.8" "@types/json-schema" "^7.0.15" "@webassemblyjs/ast" "^1.14.1" "@webassemblyjs/wasm-edit" "^1.14.1" "@webassemblyjs/wasm-parser" "^1.14.1" - acorn "^8.15.0" + acorn "^8.16.0" acorn-import-phases "^1.0.3" - browserslist "^4.24.0" + browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.3" - es-module-lexer "^1.2.1" + enhanced-resolve "^5.22.2" + es-module-lexer "^2.1.0" eslint-scope "5.1.1" events "^3.2.0" - glob-to-regexp "^0.4.1" graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" + loader-runner "^4.3.2" + mime-db "^1.54.0" + minimizer-webpack-plugin "^5.6.1" neo-async "^2.6.2" - schema-utils "^4.3.2" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.11" - watchpack "^2.4.1" - webpack-sources "^3.3.3" + schema-utils "^4.3.3" + tapable "^2.3.0" + watchpack "^2.5.2" + webpack-sources "^3.5.0" -webpackbar@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-6.0.1.tgz#5ef57d3bf7ced8b19025477bc7496ea9d502076b" - integrity sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q== +webpackbar@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-7.0.0.tgz#7228d32881af2392381b6514499ddea73cdf218a" + integrity sha512-aS9soqSO2iCHgqHoCrj4LbfGQUboDCYJPSFOAchEK+9psIjNrfSWW4Y0YEz67MKURNvMmfo0ycOg9d/+OOf9/Q== dependencies: - ansi-escapes "^4.3.2" - chalk "^4.1.2" + ansis "^3.2.0" consola "^3.2.3" - figures "^3.2.0" - markdown-table "^2.0.0" pretty-time "^1.1.0" std-env "^3.7.0" - wrap-ansi "^7.0.0" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + version "0.7.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.5.tgz#569d22764ab21f2de20af0e74b411e8ae5a0fa46" + integrity sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA== dependencies: http-parser-js ">=0.5.1" safe-buffer ">=5.1.0" @@ -9011,15 +10947,6 @@ wildcard@^2.0.0, wildcard@^2.0.1: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -9045,14 +10972,21 @@ write-file-atomic@^3.0.3: typedarray-to-buffer "^3.1.5" ws@^7.3.1: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + version "7.5.11" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.11.tgz#9460daf1812bb81a423c5b9eac746941a86310fa" + integrity sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA== -ws@^8.13.0: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== +ws@^8.18.0: + version "8.21.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.0.tgz#012e413fc07429945121b0c153158c4343086951" + integrity sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g== + +wsl-utils@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/wsl-utils/-/wsl-utils-0.1.0.tgz#8783d4df671d4d50365be2ee4c71917a0557baab" + integrity sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw== + dependencies: + is-wsl "^3.1.0" xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: version "5.1.0" @@ -9072,14 +11006,14 @@ yallist@^3.0.2: integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + version "1.10.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.3.tgz#76e407ed95c42684fb8e14641e5de62fe65bbcb3" + integrity sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA== yocto-queue@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.1.tgz#36d7c4739f775b3cbc28e6136e21aa057adec418" - integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg== + version "1.2.2" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.2.tgz#3e09c95d3f1aa89a58c114c99223edf639152c00" + integrity sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ== zwitch@^2.0.0: version "2.0.4" From 4d5d5bcf584a0a47d20cfc332ecf73674aa2f9ed Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Fri, 28 Aug 2026 11:56:28 +1000 Subject: [PATCH 2/3] netlify updates --- .../src/components/HomepageFeatures/index.js | 64 ------- .../HomepageFeatures/styles.module.css | 11 -- website/static/img/docusaurus-social-card.jpg | Bin 55746 -> 0 bytes website/static/img/docusaurus.png | Bin 5142 -> 0 bytes website/static/img/logo.svg | 1 - ...ackql-netlify-provider-featured-image.png} | Bin .../static/img/undraw_docusaurus_mountain.svg | 171 ------------------ .../static/img/undraw_docusaurus_react.svg | 170 ----------------- website/static/img/undraw_docusaurus_tree.svg | 40 ---- 9 files changed, 457 deletions(-) delete mode 100644 website/src/components/HomepageFeatures/index.js delete mode 100644 website/src/components/HomepageFeatures/styles.module.css delete mode 100644 website/static/img/docusaurus-social-card.jpg delete mode 100644 website/static/img/docusaurus.png delete mode 100644 website/static/img/logo.svg rename website/static/img/{stackql-cover.png => stackql-netlify-provider-featured-image.png} (100%) delete mode 100644 website/static/img/undraw_docusaurus_mountain.svg delete mode 100644 website/static/img/undraw_docusaurus_react.svg delete mode 100644 website/static/img/undraw_docusaurus_tree.svg diff --git a/website/src/components/HomepageFeatures/index.js b/website/src/components/HomepageFeatures/index.js deleted file mode 100644 index acc7621..0000000 --- a/website/src/components/HomepageFeatures/index.js +++ /dev/null @@ -1,64 +0,0 @@ -import clsx from 'clsx'; -import Heading from '@theme/Heading'; -import styles from './styles.module.css'; - -const FeatureList = [ - { - title: 'Easy to Use', - Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, - description: ( - <> - Docusaurus was designed from the ground up to be easily installed and - used to get your website up and running quickly. - - ), - }, - { - title: 'Focus on What Matters', - Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default, - description: ( - <> - Docusaurus lets you focus on your docs, and we'll do the chores. Go - ahead and move your docs into the docs directory. - - ), - }, - { - title: 'Powered by React', - Svg: require('@site/static/img/undraw_docusaurus_react.svg').default, - description: ( - <> - Extend or customize your website layout by reusing React. Docusaurus can - be extended while reusing the same header and footer. - - ), - }, -]; - -function Feature({Svg, title, description}) { - return ( -
-
- -
-
- {title} -

{description}

-
-
- ); -} - -export default function HomepageFeatures() { - return ( -
-
-
- {FeatureList.map((props, idx) => ( - - ))} -
-
-
- ); -} diff --git a/website/src/components/HomepageFeatures/styles.module.css b/website/src/components/HomepageFeatures/styles.module.css deleted file mode 100644 index b248eb2..0000000 --- a/website/src/components/HomepageFeatures/styles.module.css +++ /dev/null @@ -1,11 +0,0 @@ -.features { - display: flex; - align-items: center; - padding: 2rem 0; - width: 100%; -} - -.featureSvg { - height: 200px; - width: 200px; -} diff --git a/website/static/img/docusaurus-social-card.jpg b/website/static/img/docusaurus-social-card.jpg deleted file mode 100644 index ffcb448210e1a456cb3588ae8b396a597501f187..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55746 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
sH`pxVp$E*LSx0bY$^ho1gZ(Ce+BX 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 fgzs%Vr*-jYG(YMS<ttdtee# diff --git a/website/static/img/docusaurus.png b/website/static/img/docusaurus.png deleted file mode 100644 index f458149e3c8f53335f28fbc162ae67f55575c881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5142 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 F{0H{b<4^zq diff --git a/website/static/img/logo.svg b/website/static/img/logo.svg deleted file mode 100644 index 9db6d0d..0000000 --- a/website/static/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/website/static/img/stackql-cover.png b/website/static/img/stackql-netlify-provider-featured-image.png similarity index 100% rename from website/static/img/stackql-cover.png rename to website/static/img/stackql-netlify-provider-featured-image.png diff --git a/website/static/img/undraw_docusaurus_mountain.svg b/website/static/img/undraw_docusaurus_mountain.svg deleted file mode 100644 index af961c4..0000000 --- a/website/static/img/undraw_docusaurus_mountain.svg +++ /dev/null @@ -1,171 +0,0 @@ - - Easy to Use - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/static/img/undraw_docusaurus_react.svg b/website/static/img/undraw_docusaurus_react.svg deleted file mode 100644 index 94b5cf0..0000000 --- a/website/static/img/undraw_docusaurus_react.svg +++ /dev/null @@ -1,170 +0,0 @@ - - Powered by React - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/static/img/undraw_docusaurus_tree.svg b/website/static/img/undraw_docusaurus_tree.svg deleted file mode 100644 index d9161d3..0000000 --- a/website/static/img/undraw_docusaurus_tree.svg +++ /dev/null @@ -1,40 +0,0 @@ - - Focus on What Matters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 0b495c6fa3fd2a7d68ec66ecee00abdafea80046 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Fri, 28 Aug 2026 13:29:38 +1000 Subject: [PATCH 3/3] netlify updates --- .github/workflows/star-check.yml | 42 -------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 .github/workflows/star-check.yml diff --git a/.github/workflows/star-check.yml b/.github/workflows/star-check.yml deleted file mode 100644 index 24d6c17..0000000 --- a/.github/workflows/star-check.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Check if PR author has starred required repositories -on: - pull_request: - types: [opened, synchronize, reopened] -jobs: - check-starred: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - name: Get PR author username and repo info - id: get-info - run: | - echo "username=${{ github.event.pull_request.user.login }}" >> $GITHUB_ENV - echo "current_repo=${{ github.event.repository.name }}" >> $GITHUB_ENV - echo "current_owner=${{ github.repository_owner }}" >> $GITHUB_ENV - - name: Pull github provider - uses: stackql/stackql-exec@v2.2.1 - with: - is_command: 'true' - query: "REGISTRY PULL github;" - - name: Run stackql query - id: check-star - uses: stackql/stackql-assert@v2.2.1 - with: - test_query: | - SELECT repo, count(*) as has_starred - FROM github.activity.repo_stargazers - WHERE owner = '${{ env.current_owner }}' and repo IN ('stackql','${{ env.current_repo }}') - AND login = '${{ env.username }}' - GROUP BY repo; - expected_results_str: '[{"has_starred":"1","repo":"stackql"},{"has_starred":"1","repo":"${{ env.current_repo }}"}]' - continue-on-error: true - - name: Check if starred - if: always() # Ensures this runs regardless of check-star outcome - run: | - if [ "${{ steps.check-star.outcome }}" = "success" ]; then - echo "::notice::Thanks for your support!" - else - echo "::error::It seems you haven't starred the required repositories. Please star the following repos before proceeding: https://github.com/${{ env.current_owner }}/${{ env.current_repo }} (this repo) and https://github.com/stackql/stackql (our core repo)" - exit 1 - fi \ No newline at end of file